[llvm-commits] [llvm] r118688 - /llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp

Jim Grosbach grosbach at apple.com
Wed Nov 10 09:59:10 PST 2010


Author: grosbach
Date: Wed Nov 10 11:59:10 2010
New Revision: 118688

URL: http://llvm.org/viewvc/llvm-project?rev=118688&view=rev
Log:
Simplify and clean up MC symbol lookup for ARM constant pool values. This fixes
double quoting of ObjC symbol names in constant pool entries.

rdar://8652107

Modified:
    llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp

Modified: llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp?rev=118688&r1=118687&r2=118688&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp (original)
+++ llvm/trunk/lib/Target/ARM/ARMAsmPrinter.cpp Wed Nov 10 11:59:10 2010
@@ -622,40 +622,40 @@
   int Size = TM.getTargetData()->getTypeAllocSize(MCPV->getType());
 
   ARMConstantPoolValue *ACPV = static_cast<ARMConstantPoolValue*>(MCPV);
-  SmallString<128> Str;
-  raw_svector_ostream OS(Str);
 
+  MCSymbol *MCSym;
   if (ACPV->isLSDA()) {
+    SmallString<128> Str;
+    raw_svector_ostream OS(Str);
     OS << MAI->getPrivateGlobalPrefix() << "_LSDA_" << getFunctionNumber();
+    MCSym = OutContext.GetOrCreateSymbol(OS.str());
   } else if (ACPV->isBlockAddress()) {
-    OS << *GetBlockAddressSymbol(ACPV->getBlockAddress());
+    MCSym = GetBlockAddressSymbol(ACPV->getBlockAddress());
   } else if (ACPV->isGlobalValue()) {
     const GlobalValue *GV = ACPV->getGV();
     bool isIndirect = Subtarget->isTargetDarwin() &&
       Subtarget->GVIsIndirectSymbol(GV, TM.getRelocationModel());
     if (!isIndirect)
-      OS << *Mang->getSymbol(GV);
+      MCSym = Mang->getSymbol(GV);
     else {
       // FIXME: Remove this when Darwin transition to @GOT like syntax.
-      MCSymbol *Sym = GetSymbolWithGlobalValueBase(GV, "$non_lazy_ptr");
-      OS << *Sym;
+      MCSym = GetSymbolWithGlobalValueBase(GV, "$non_lazy_ptr");
 
       MachineModuleInfoMachO &MMIMachO =
         MMI->getObjFileInfo<MachineModuleInfoMachO>();
       MachineModuleInfoImpl::StubValueTy &StubSym =
-        GV->hasHiddenVisibility() ? MMIMachO.getHiddenGVStubEntry(Sym) :
-        MMIMachO.getGVStubEntry(Sym);
+        GV->hasHiddenVisibility() ? MMIMachO.getHiddenGVStubEntry(MCSym) :
+        MMIMachO.getGVStubEntry(MCSym);
       if (StubSym.getPointer() == 0)
         StubSym = MachineModuleInfoImpl::
           StubValueTy(Mang->getSymbol(GV), !GV->hasInternalLinkage());
     }
   } else {
     assert(ACPV->isExtSymbol() && "unrecognized constant pool value");
-    OS << *GetExternalSymbolSymbol(ACPV->getSymbol());
+    MCSym = GetExternalSymbolSymbol(ACPV->getSymbol());
   }
 
   // Create an MCSymbol for the reference.
-  MCSymbol *MCSym = OutContext.GetOrCreateSymbol(OS.str());
   const MCExpr *Expr =
     MCSymbolRefExpr::Create(MCSym, getModifierVariantKind(ACPV->getModifier()),
                             OutContext);





More information about the llvm-commits mailing list