[llvm-commits] CVS: llvm/lib/Bytecode/Reader/ReaderWrappers.cpp

Chris Lattner lattner at cs.uiuc.edu
Sun Feb 13 09:42:26 PST 2005



Changes in directory llvm/lib/Bytecode/Reader:

ReaderWrappers.cpp updated: 1.41 -> 1.42
---
Log message:

Do not put internal symbols into the symbol table.  This shrinks the symbol
table for archives in common cases, and prevents trying to resolve a
external reference with an internal reference.  This shrinks the libpython.a
symbol table from 126302 to 19770 bytes.


---
Diffs of the changes:  (+11 -21)

 ReaderWrappers.cpp |   32 +++++++++++---------------------
 1 files changed, 11 insertions(+), 21 deletions(-)


Index: llvm/lib/Bytecode/Reader/ReaderWrappers.cpp
diff -u llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.41 llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.42
--- llvm/lib/Bytecode/Reader/ReaderWrappers.cpp:1.41	Tue Dec 21 01:51:33 2004
+++ llvm/lib/Bytecode/Reader/ReaderWrappers.cpp	Sun Feb 13 11:42:11 2005
@@ -328,28 +328,18 @@
   }
 }
 
-namespace {
-void getSymbols(Module*M, std::vector<std::string>& symbols) {
+static void getSymbols(Module*M, std::vector<std::string>& symbols) {
   // Loop over global variables
-  for (Module::giterator GI = M->gbegin(), GE=M->gend(); GI != GE; ++GI) {
-    if (GI->hasInitializer()) {
-      std::string name ( GI->getName() );
-      if (!name.empty()) {
-        symbols.push_back(name);
-      }
-    }
-  }
-
-  //Loop over functions
-  for (Module::iterator FI = M->begin(), FE=M->end(); FI != FE; ++FI) {
-    if (!FI->isExternal()) {
-      std::string name ( FI->getName() );
-      if (!name.empty()) {
-        symbols.push_back(name);
-      }
-    }
-  }
-}
+  for (Module::giterator GI = M->gbegin(), GE=M->gend(); GI != GE; ++GI)
+    if (GI->hasInitializer() && !GI->hasInternalLinkage())
+      if (!GI->getName().empty())
+        symbols.push_back(GI->getName());
+
+  // Loop over functions.
+  for (Module::iterator FI = M->begin(), FE = M->end(); FI != FE; ++FI)
+    if (!FI->isExternal() && !FI->hasInternalLinkage())
+      if (!FI->getName().empty())
+        symbols.push_back(FI->getName());
 }
 
 // Get just the externally visible defined symbols from the bytecode






More information about the llvm-commits mailing list