[llvm] r212348 - Avoid mangling names twice. No functionality change.

Rafael Espindola rafael.espindola at gmail.com
Fri Jul 4 09:37:03 PDT 2014


Author: rafael
Date: Fri Jul  4 11:37:02 2014
New Revision: 212348

URL: http://llvm.org/viewvc/llvm-project?rev=212348&view=rev
Log:
Avoid mangling names twice. No functionality change.

Modified:
    llvm/trunk/include/llvm/LTO/LTOModule.h
    llvm/trunk/lib/LTO/LTOModule.cpp

Modified: llvm/trunk/include/llvm/LTO/LTOModule.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/LTOModule.h?rev=212348&r1=212347&r2=212348&view=diff
==============================================================================
--- llvm/trunk/include/llvm/LTO/LTOModule.h (original)
+++ llvm/trunk/include/llvm/LTO/LTOModule.h Fri Jul  4 11:37:02 2014
@@ -173,13 +173,16 @@ private:
   void addPotentialUndefinedSymbol(const GlobalValue *dcl, bool isFunc);
 
   /// Add a defined symbol to the list.
-  void addDefinedSymbol(const GlobalValue *def, bool isFunction);
+  void addDefinedSymbol(const char *Name, const GlobalValue *Def,
+                        bool IsFunction);
 
   /// Add a function symbol as defined to the list.
   void addDefinedFunctionSymbol(const Function *f);
+  void addDefinedFunctionSymbol(const char *Name, const Function *F);
 
   /// Add a data symbol as defined to the list.
   void addDefinedDataSymbol(const GlobalValue *v);
+  void addDefinedDataSymbol(const char *Name, const GlobalValue *V);
 
   /// Add global symbols from module-level ASM to the defined or undefined
   /// lists.

Modified: llvm/trunk/lib/LTO/LTOModule.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOModule.cpp?rev=212348&r1=212347&r2=212348&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOModule.cpp (original)
+++ llvm/trunk/lib/LTO/LTOModule.cpp Fri Jul  4 11:37:02 2014
@@ -283,10 +283,15 @@ void LTOModule::addObjCClassRef(const Gl
   entry.setValue(info);
 }
 
-/// addDefinedDataSymbol - Add a data symbol as defined to the list.
-void LTOModule::addDefinedDataSymbol(const GlobalValue *v) {
+void LTOModule::addDefinedDataSymbol(const GlobalValue *V) {
+  SmallString<64> Buffer;
+  _target->getNameWithPrefix(Buffer, V, _mangler);
+  addDefinedDataSymbol(Buffer.c_str(), V);
+}
+
+void LTOModule::addDefinedDataSymbol(const char *Name, const GlobalValue *v) {
   // Add to list of defined symbols.
-  addDefinedSymbol(v, false);
+  addDefinedSymbol(Name, v, false);
 
   if (!v->hasSection() /* || !isTargetDarwin */)
     return;
@@ -334,10 +339,15 @@ void LTOModule::addDefinedDataSymbol(con
   }
 }
 
-/// addDefinedFunctionSymbol - Add a function symbol as defined to the list.
-void LTOModule::addDefinedFunctionSymbol(const Function *f) {
+void LTOModule::addDefinedFunctionSymbol(const Function *F) {
+  SmallString<64> Buffer;
+  _target->getNameWithPrefix(Buffer, F, _mangler);
+  addDefinedFunctionSymbol(Buffer.c_str(), F);
+}
+
+void LTOModule::addDefinedFunctionSymbol(const char *Name, const Function *F) {
   // add to list of defined symbols
-  addDefinedSymbol(f, true);
+  addDefinedSymbol(Name, F, true);
 }
 
 static bool canBeHidden(const GlobalValue *GV) {
@@ -364,16 +374,12 @@ static bool canBeHidden(const GlobalValu
   return !GS.IsCompared;
 }
 
-/// addDefinedSymbol - Add a defined symbol to the list.
-void LTOModule::addDefinedSymbol(const GlobalValue *def, bool isFunction) {
+void LTOModule::addDefinedSymbol(const char *Name, const GlobalValue *def,
+                                 bool isFunction) {
   // ignore all llvm.* symbols
   if (def->getName().startswith("llvm."))
     return;
 
-  // string is owned by _defines
-  SmallString<64> Buffer;
-  _target->getNameWithPrefix(Buffer, def, _mangler);
-
   // set alignment part log2() can have rounding errors
   uint32_t align = def->getAlignment();
   uint32_t attr = align ? countTrailingZeros(align) : 0;
@@ -410,14 +416,14 @@ void LTOModule::addDefinedSymbol(const G
   else
     attr |= LTO_SYMBOL_SCOPE_DEFAULT;
 
-  StringSet::value_type &entry = _defines.GetOrCreateValue(Buffer);
+  StringSet::value_type &entry = _defines.GetOrCreateValue(Name);
   entry.setValue(1);
 
   // fill information structure
   NameAndAttributes info;
-  StringRef Name = entry.getKey();
-  info.name = Name.data();
-  assert(info.name[Name.size()] == '\0');
+  StringRef NameRef = entry.getKey();
+  info.name = NameRef.data();
+  assert(info.name[NameRef.size()] == '\0');
   info.attributes = attr;
   info.isFunction = isFunction;
   info.symbol = def;
@@ -462,9 +468,9 @@ void LTOModule::addAsmGlobalSymbol(const
   }
 
   if (info.isFunction)
-    addDefinedFunctionSymbol(cast<Function>(info.symbol));
+    addDefinedFunctionSymbol(info.name, cast<Function>(info.symbol));
   else
-    addDefinedDataSymbol(info.symbol);
+    addDefinedDataSymbol(info.name, info.symbol);
 
   _symbols.back().attributes &= ~LTO_SYMBOL_SCOPE_MASK;
   _symbols.back().attributes |= scope;





More information about the llvm-commits mailing list