Make this pass simply invoke SymbolTable::strip().
authorReid Spencer <rspencer@reidspencer.com>
Tue, 25 May 2004 08:51:25 +0000 (08:51 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Tue, 25 May 2004 08:51:25 +0000 (08:51 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13749 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/SymbolStripping.cpp

index c43a2cb76e0e44f52f6fd6db9d2de737aed22562..2ae79553231144473c2a2f5352488903c9b5b8fa 100644 (file)
 #include "llvm/Pass.h"
 using namespace llvm;
 
-static bool StripSymbolTable(SymbolTable &SymTab) {
-  bool RemovedSymbol = false;
-
-  for (SymbolTable::iterator I = SymTab.begin(); I != SymTab.end();) {
-    // Removing items from the plane can cause the plane itself to get deleted.
-    // If this happens, make sure we incremented our plane iterator already!
-    std::map<const std::string, Value *> &Plane = (I++)->second;
-    
-    SymbolTable::type_iterator B = Plane.begin(), Bend = Plane.end();
-    while (B != Bend) {   // Found nonempty type plane!
-      Value *V = B->second;
-
-      if (isa<Constant>(V) || isa<Type>(V)) {
-       SymTab.type_remove(B++);
-        RemovedSymbol = true;
-      } else {
-        ++B;
-        if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()){
-          // Set name to "", removing from symbol table!
-          V->setName("", &SymTab);
-          RemovedSymbol = true;
-        }
-      }
-    }
-  }
-  return RemovedSymbol;
-}
-
 namespace {
   struct SymbolStripping : public FunctionPass {
     virtual bool runOnFunction(Function &F) {
-      return StripSymbolTable(F.getSymbolTable());
+      return F.getSymbolTable().strip();
     }
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
       AU.setPreservesAll();
@@ -69,7 +40,7 @@ namespace {
 
   struct FullSymbolStripping : public SymbolStripping {
     virtual bool doInitialization(Module &M) {
-      return StripSymbolTable(M.getSymbolTable());
+      return M.getSymbolTable().strip();
     }
   };
   RegisterOpt<FullSymbolStripping> Y("mstrip",