Use the mangler consistently instead of using getGlobalPrefix directly.
authorRafael Espindola <rafael.espindola@gmail.com>
Thu, 28 Nov 2013 08:59:52 +0000 (08:59 +0000)
committerRafael Espindola <rafael.espindola@gmail.com>
Thu, 28 Nov 2013 08:59:52 +0000 (08:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195911 91177308-0d34-0410-b5e6-96231b3b80d8

lib/ExecutionEngine/MCJIT/MCJIT.cpp
lib/Target/MSP430/MSP430AsmPrinter.cpp
lib/Target/PowerPC/PPCAsmPrinter.cpp
lib/Target/PowerPC/PPCMCInstLower.cpp
lib/Target/X86/X86MCInstLower.cpp

index 195c45850c6a683bf7f620155bd584499817fd2c..5841d918de4add99f6f3a3385757dcda74e72586 100644 (file)
@@ -25,6 +25,7 @@
 #include "llvm/Support/ErrorHandling.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/MutexGuard.h"
+#include "llvm/Target/Mangler.h"
 
 using namespace llvm;
 
@@ -231,11 +232,10 @@ void *MCJIT::getPointerToBasicBlock(BasicBlock *BB) {
 }
 
 uint64_t MCJIT::getExistingSymbolAddress(const std::string &Name) {
-  // Check with the RuntimeDyld to see if we already have this symbol.
-  if (Name[0] == '\1')
-    return Dyld.getSymbolLoadAddress(Name.substr(1));
-  return Dyld.getSymbolLoadAddress((TM->getMCAsmInfo()->getGlobalPrefix()
-                                       + Name));
+  Mangler Mang(TM);
+  SmallString<128> FullName;
+  Mang.getNameWithPrefix(FullName, Name);
+  return Dyld.getSymbolLoadAddress(FullName);
 }
 
 Module *MCJIT::findModuleForSymbol(const std::string &Name,
@@ -320,15 +320,13 @@ void *MCJIT::getPointerToFunction(Function *F) {
     return NULL;
 
   // FIXME: Should the Dyld be retaining module information? Probably not.
-  // FIXME: Should we be using the mangler for this? Probably.
   //
   // This is the accessor for the target address, so make sure to check the
   // load address of the symbol, not the local address.
-  StringRef BaseName = F->getName();
-  if (BaseName[0] == '\1')
-    return (void*)Dyld.getSymbolLoadAddress(BaseName.substr(1));
-  return (void*)Dyld.getSymbolLoadAddress((TM->getMCAsmInfo()->getGlobalPrefix()
-                                       + BaseName).str());
+  Mangler Mang(TM);
+  SmallString<128> Name;
+  Mang.getNameWithPrefix(Name, F, false);
+  return (void*)Dyld.getSymbolLoadAddress(Name);
 }
 
 void *MCJIT::recompileAndRelinkFunction(Function *F) {
index 18311c3f552284f3aba07ff28b665bb933c54149..b5f9ffbd7bfe44793d0748962caa5910ed9189f5 100644 (file)
@@ -102,7 +102,9 @@ void MSP430AsmPrinter::printOperand(const MachineInstr *MI, int OpNum,
   case MachineOperand::MO_ExternalSymbol: {
     bool isMemOp  = Modifier && !strcmp(Modifier, "mem");
     O << (isMemOp ? '&' : '#');
-    O << MAI->getGlobalPrefix() << MO.getSymbolName();
+    SmallString<128> Name;
+    Mang->getNameWithPrefix(Name, MO.getSymbolName());
+    O << Name;
     return;
   }
   }
index ada34ed9e18af0a744b58fb04b36dbe8c0459281..dd009433cbb432e56190f698e3b997e9d907315b 100644 (file)
@@ -176,9 +176,9 @@ void PPCAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
       return;
     }
 
-    MCSymbol *NLPSym = 
-      OutContext.GetOrCreateSymbol(StringRef(MAI->getGlobalPrefix())+
-                                   MO.getSymbolName()+"$non_lazy_ptr");
+    SmallString<128> Name;
+    Mang->getNameWithPrefix(Name, Twine(MO.getSymbolName()) + "$non_lazy_ptr");
+    MCSymbol *NLPSym = OutContext.GetOrCreateSymbol(Name);
     MachineModuleInfoImpl::StubValueTy &StubSym = 
       MMI->getObjFileInfo<MachineModuleInfoMachO>().getGVStubEntry(NLPSym);
     if (StubSym.getPointer() == 0)
index f61c8bf0216ec1443ad8d65573ca752d579e2a33..0907007aa0042e696399b30161c1b6d56a77aba8 100644 (file)
@@ -37,8 +37,7 @@ static MCSymbol *GetSymbolFromOperand(const MachineOperand &MO, AsmPrinter &AP){
   SmallString<128> Name;
   if (!MO.isGlobal()) {
     assert(MO.isSymbol() && "Isn't a symbol reference");
-    Name += AP.MAI->getGlobalPrefix();
-    Name += MO.getSymbolName();
+    AP.Mang->getNameWithPrefix(Name, MO.getSymbolName());
   } else {    
     const GlobalValue *GV = MO.getGlobal();
     bool isImplicitlyPrivate = false;
index 6649c825b6c9e2dba8e7813b8ae73fd1ac8fa315..ded876f37931b0d908a8d29b079763178076285d 100644 (file)
@@ -85,8 +85,7 @@ GetSymbolFromOperand(const MachineOperand &MO) const {
 
     getMang()->getNameWithPrefix(Name, GV, isImplicitlyPrivate);
   } else if (MO.isSymbol()) {
-    Name += MAI.getGlobalPrefix();
-    Name += MO.getSymbolName();
+    getMang()->getNameWithPrefix(Name, MO.getSymbolName());
   } else if (MO.isMBB()) {
     Name += MO.getMBB()->getSymbol()->getName();
   }