diff options
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp index 4911683d4d..025d843f4d 100644 --- a/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp @@ -54,25 +54,19 @@ void X86AsmPrinter::PrintPICBaseSymbol() const { } MCSymbol *X86AsmPrinter::GetGlobalValueSymbol(const GlobalValue *GV) const { - SmallString<60> NameStr; - Mang->getNameWithPrefix(NameStr, GV, false); - MCSymbol *Symb; - if (GV->hasPrivateLinkage()) - Symb = OutContext.GetOrCreateTemporarySymbol(NameStr.str()); - else - Symb = OutContext.GetOrCreateSymbol(NameStr.str()); - - if (Subtarget->isTargetCygMing()) { - X86COFFMachineModuleInfo &COFFMMI = - MMI->getObjFileInfo<X86COFFMachineModuleInfo>(); - COFFMMI.DecorateCygMingName(Symb, OutContext, GV, *TM.getTargetData()); - - // Save function name for later type emission. - if (const Function *F = dyn_cast<Function>(GV)) - if (F->isDeclaration()) - COFFMMI.addExternalFunction(Symb->getName()); - - } + MCSymbol *Symb = Mang->getSymbol(GV); + + if (!Subtarget->isTargetCygMing() || !isa<Function>(GV)) + return Symb; + + X86COFFMachineModuleInfo &COFFMMI = + MMI->getObjFileInfo<X86COFFMachineModuleInfo>(); + COFFMMI.DecorateCygMingName(Symb, OutContext, GV, *TM.getTargetData()); + + // Save function name for later type emission. + const Function *F = cast<Function>(GV); + if (F->isDeclaration()) + COFFMMI.addExternalFunction(Symb->getName()); return Symb; } |