summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-02-07 06:22:45 +0000
committerChris Lattner <sabre@nondot.org>2007-02-07 06:22:45 +0000
commit7f1444bc0aefdd924e9b231e20d4c0529311e141 (patch)
tree0e1008865a141be2a99c669820f50e4074f98144
parenta3832fd46af09872a9c6322b9d23df8b4934c897 (diff)
downloadllvm-7f1444bc0aefdd924e9b231e20d4c0529311e141.tar.gz
llvm-7f1444bc0aefdd924e9b231e20d4c0529311e141.tar.bz2
llvm-7f1444bc0aefdd924e9b231e20d4c0529311e141.tar.xz
shrink vmcore by moving symbol table stripping support out of VMCore into
the one IPO pass that uses it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33990 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/TypeSymbolTable.h4
-rw-r--r--include/llvm/ValueSymbolTable.h6
-rw-r--r--lib/Transforms/IPO/StripSymbols.cpp25
-rw-r--r--lib/VMCore/TypeSymbolTable.cpp11
-rw-r--r--lib/VMCore/ValueSymbolTable.cpp16
5 files changed, 23 insertions, 39 deletions
diff --git a/include/llvm/TypeSymbolTable.h b/include/llvm/TypeSymbolTable.h
index dd26001422..abe312ec24 100644
--- a/include/llvm/TypeSymbolTable.h
+++ b/include/llvm/TypeSymbolTable.h
@@ -98,10 +98,6 @@ public:
/// @{
public:
- /// This method will strip the symbol table of its names
- /// @brief Strip the symbol table.
- bool strip();
-
/// Inserts a type into the symbol table with the specified name. There can be
/// a many-to-one mapping between names and types. This method allows a type
/// with an existing entry in the symbol table to get a new name.
diff --git a/include/llvm/ValueSymbolTable.h b/include/llvm/ValueSymbolTable.h
index d17cd7729c..b05e404a44 100644
--- a/include/llvm/ValueSymbolTable.h
+++ b/include/llvm/ValueSymbolTable.h
@@ -120,12 +120,6 @@ public:
/// @}
/// @name Mutators
/// @{
-public:
-
- /// This method will strip the symbol table of its names.
- /// @brief Strip the symbol table.
- bool strip();
-
private:
/// This method adds the provided value \p N to the symbol table. The Value
/// must have a name which is used to place the value in the symbol table.
diff --git a/lib/Transforms/IPO/StripSymbols.cpp b/lib/Transforms/IPO/StripSymbols.cpp
index 4c0b35a1a4..58b7b71467 100644
--- a/lib/Transforms/IPO/StripSymbols.cpp
+++ b/lib/Transforms/IPO/StripSymbols.cpp
@@ -73,6 +73,27 @@ static void RemoveDeadConstant(Constant *C) {
}
}
+// Strip the symbol table of its names.
+//
+static void StripSymtab(ValueSymbolTable &ST) {
+ for (ValueSymbolTable::iterator VI = ST.begin(), VE = ST.end(); VI != VE; ) {
+ Value *V = VI->second;
+ ++VI;
+ if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()) {
+ // Set name to "", removing from symbol table!
+ V->setName("");
+ }
+ }
+}
+
+// Strip the symbol table of its names.
+static void StripTypeSymtab(TypeSymbolTable &ST) {
+ for (TypeSymbolTable::iterator TI = ST.begin(), E = ST.end(); TI != E; )
+ ST.remove(TI++);
+}
+
+
+
bool StripSymbols::runOnModule(Module &M) {
// If we're not just stripping debug info, strip all symbols from the
// functions and the names from any internal globals.
@@ -85,11 +106,11 @@ bool StripSymbols::runOnModule(Module &M) {
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) {
if (I->hasInternalLinkage())
I->setName(""); // Internal symbols can't participate in linkage
- I->getValueSymbolTable().strip();
+ StripSymtab(I->getValueSymbolTable());
}
// Remove all names from types.
- M.getTypeSymbolTable().strip();
+ StripTypeSymtab(M.getTypeSymbolTable());
}
// Strip debug info in the module if it exists. To do this, we remove
diff --git a/lib/VMCore/TypeSymbolTable.cpp b/lib/VMCore/TypeSymbolTable.cpp
index b145adc238..7eaa63a342 100644
--- a/lib/VMCore/TypeSymbolTable.cpp
+++ b/lib/VMCore/TypeSymbolTable.cpp
@@ -111,17 +111,6 @@ void TypeSymbolTable::insert(const std::string& Name, const Type* T) {
}
}
-// Strip the symbol table of its names.
-bool TypeSymbolTable::strip() {
- bool RemovedSymbol = false;
- for (iterator TI = tmap.begin(); TI != tmap.end(); ) {
- remove(TI++);
- RemovedSymbol = true;
- }
-
- return RemovedSymbol;
-}
-
// This function is called when one of the types in the type plane are refined
void TypeSymbolTable::refineAbstractType(const DerivedType *OldType,
const Type *NewType) {
diff --git a/lib/VMCore/ValueSymbolTable.cpp b/lib/VMCore/ValueSymbolTable.cpp
index 41b6d7b5a3..142b9f9f08 100644
--- a/lib/VMCore/ValueSymbolTable.cpp
+++ b/lib/VMCore/ValueSymbolTable.cpp
@@ -59,22 +59,6 @@ Value *ValueSymbolTable::lookup(const std::string &Name) const {
return 0;
}
-// Strip the symbol table of its names.
-//
-bool ValueSymbolTable::strip() {
- bool RemovedSymbol = false;
- for (iterator VI = vmap.begin(), VE = vmap.end(); VI != VE; ) {
- Value *V = VI->second;
- ++VI;
- if (!isa<GlobalValue>(V) || cast<GlobalValue>(V)->hasInternalLinkage()) {
- // Set name to "", removing from symbol table!
- V->setName("");
- RemovedSymbol = true;
- }
- }
- return RemovedSymbol;
-}
-
// Insert a value into the symbol table with the specified name...
//
void ValueSymbolTable::insert(Value* V) {