add a AsmPrinter::GetGlobalValueSymbol and GetExternalSymbolSymbol
authorChris Lattner <sabre@nondot.org>
Fri, 15 Jan 2010 23:18:17 +0000 (23:18 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 15 Jan 2010 23:18:17 +0000 (23:18 +0000)
helper method, use it to simplify some code.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@93575 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/AsmPrinter.h
lib/CodeGen/AsmPrinter/AsmPrinter.cpp
lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
lib/Target/Blackfin/AsmPrinter/BlackfinAsmPrinter.cpp
lib/Target/Sparc/AsmPrinter/SparcAsmPrinter.cpp

index 9a07e31ac70b03e6bebc5e304ebab225444cc3ef..bd902389397a40db0f67c63a5018236789a09a1b 100644 (file)
@@ -339,6 +339,14 @@ namespace llvm {
     /// EmitComments - Pretty-print comments for basic blocks
     void EmitComments(const MachineBasicBlock &MBB) const;
 
+    /// GetGlobalValueSymbol - Return the MCSymbol for the specified global
+    /// value.
+    MCSymbol *GetGlobalValueSymbol(const GlobalValue *GV) const;
+
+    /// GetExternalSymbolSymbol - Return the MCSymbol for the specified
+    /// ExternalSymbol.
+    MCSymbol *GetExternalSymbolSymbol(StringRef Sym) const;
+    
     /// GetMBBSymbol - Return the MCSymbol corresponding to the specified basic
     /// block label.
     MCSymbol *GetMBBSymbol(unsigned MBBID) const;
index 876f628336fa55a277cc5e02b37567ff48f1ea36..680afc001c12d650a8e2c88b3ceb6290a940fd96 100644 (file)
@@ -1698,6 +1698,22 @@ MCSymbol *AsmPrinter::GetMBBSymbol(unsigned MBBID) const {
   return OutContext.GetOrCreateSymbol(Name.str());
 }
 
+/// GetGlobalValueSymbol - Return the MCSymbol for the specified global
+/// value.
+MCSymbol *AsmPrinter::GetGlobalValueSymbol(const GlobalValue *GV) const {
+  SmallString<60> NameStr;
+  Mang->getNameWithPrefix(NameStr, GV, false);
+  return OutContext.GetOrCreateSymbol(NameStr.str());
+}
+
+/// GetExternalSymbolSymbol - Return the MCSymbol for the specified
+/// ExternalSymbol.
+MCSymbol *AsmPrinter::GetExternalSymbolSymbol(StringRef Sym) const {
+  SmallString<60> NameStr;
+  Mang->getNameWithPrefix(NameStr, Sym);
+  return OutContext.GetOrCreateSymbol(NameStr.str());
+}  
+
 
 /// EmitBasicBlockStart - This method prints the label for the specified
 /// MachineBasicBlock, an alignment (if present) and a comment describing
index 2d135337b66a8a2d73ee55c72b49c8d9afdacb64..7e6261934b926aff7c28653bc0c4237b2fbdc7ee 100644 (file)
@@ -201,15 +201,13 @@ namespace {
             GV->hasHiddenVisibility() ? MMIMachO.getHiddenGVStubEntry(Sym) :
                                         MMIMachO.getGVStubEntry(Sym);
           if (StubSym == 0) {
-            Mang->getNameWithPrefix(TmpNameStr, GV, false);
-            StubSym = OutContext.GetOrCreateSymbol(TmpNameStr.str());
+            StubSym = GetGlobalValueSymbol(GV);
           }
         }
         O << Name;
       } else {
         assert(ACPV->isExtSymbol() && "unrecognized constant pool value");
-        Mang->getNameWithPrefix(TmpNameStr, ACPV->getSymbol());
-        OutContext.GetOrCreateSymbol(TmpNameStr.str())->print(O, MAI);
+        GetExternalSymbolSymbol(ACPV->getSymbol())->print(O, MAI);
       }
 
       if (ACPV->hasModifier()) O << "(" << ACPV->getModifier() << ")";
index 0bd94d489c856bb439b041e1bdbd75086241ca7c..09f8b0250a9d586d220553835e134bcf3e7851de 100644 (file)
@@ -181,12 +181,9 @@ void BlackfinAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
     O << Mang->getMangledName(MO.getGlobal());
     printOffset(MO.getOffset());
     break;
-  case MachineOperand::MO_ExternalSymbol: {
-    SmallString<60> NameStr;
-    Mang->getNameWithPrefix(NameStr, MO.getSymbolName());
-    OutContext.GetOrCreateSymbol(NameStr.str())->print(O, MAI);
+  case MachineOperand::MO_ExternalSymbol:
+    GetExternalSymbolSymbol(MO.getSymbolName())->print(O, MAI);
     break;
-  }
   case MachineOperand::MO_ConstantPoolIndex:
     O << MAI->getPrivateGlobalPrefix() << "CPI" << getFunctionNumber() << "_"
       << MO.getIndex();
index cd85dd467f4c88b3c539092f22d0553036a24536..52261e744375f8c4d435bf4f8bbc7683a77356f6 100644 (file)
@@ -198,7 +198,7 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum) {
     GetMBBSymbol(MO.getMBB()->getNumber())->print(O, MAI);
     return;
   case MachineOperand::MO_GlobalAddress:
-    O << Mang->getMangledName(MO.getGlobal());
+    GetGlobalValueSymbol(MO.getGlobal())->print(O, MAI);
     break;
   case MachineOperand::MO_ExternalSymbol:
     O << MO.getSymbolName();