From 7c7ddb21c3cc65ea08de8f90bb97cbdead3173f8 Mon Sep 17 00:00:00 2001 From: Jim Grosbach Date: Wed, 10 Nov 2010 17:59:10 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@118688 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMAsmPrinter.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/lib/Target/ARM/ARMAsmPrinter.cpp b/lib/Target/ARM/ARMAsmPrinter.cpp index 174346b084c..73d3e1caf2e 100644 --- a/lib/Target/ARM/ARMAsmPrinter.cpp +++ b/lib/Target/ARM/ARMAsmPrinter.cpp @@ -622,40 +622,40 @@ EmitMachineConstantPoolValue(MachineConstantPoolValue *MCPV) { int Size = TM.getTargetData()->getTypeAllocSize(MCPV->getType()); ARMConstantPoolValue *ACPV = static_cast(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(); 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); -- 2.34.1