diff --git a/include/llvm/CodeGen/AsmPrinter.h b/include/llvm/CodeGen/AsmPrinter.h index 3514af7c810..e41d8dca298 100644 --- a/include/llvm/CodeGen/AsmPrinter.h +++ b/include/llvm/CodeGen/AsmPrinter.h @@ -351,8 +351,9 @@ namespace llvm { /// printSuffixedName - This prints a name with preceding /// getPrivateGlobalPrefix and the specified suffix, handling quoted names /// correctly. - void printSuffixedName(const char *Name, const char* Suffix); - void printSuffixedName(std::string &Name, const char* Suffix); + void printSuffixedName(const char *Name, const char *Suffix, + const char *Prefix = 0); + void printSuffixedName(const std::string &Name, const char* Suffix); private: void EmitLLVMUsedList(Constant *List); diff --git a/lib/CodeGen/AsmPrinter.cpp b/lib/CodeGen/AsmPrinter.cpp index 3f89792053b..6548f56f25d 100644 --- a/lib/CodeGen/AsmPrinter.cpp +++ b/lib/CodeGen/AsmPrinter.cpp @@ -1445,14 +1445,23 @@ void AsmPrinter::printDataDirective(const Type *type) { } } -void AsmPrinter::printSuffixedName(const char *Name, const char* Suffix) { +void AsmPrinter::printSuffixedName(const char *Name, const char *Suffix, + const char *Prefix) { if (Name[0]=='\"') - O << '\"' << TAI->getPrivateGlobalPrefix() << - Name[1] << Suffix << '\"'; + O << '\"'; + O << TAI->getPrivateGlobalPrefix(); + if (Prefix) O << Prefix; + if (Name[0]=='\"') + O << '\"'; + if (Name[0]=='\"') + O << Name[1]; else - O << TAI->getPrivateGlobalPrefix() << Name << Suffix; + O << Name; + O << Suffix; + if (Name[0]=='\"') + O << '\"'; } -void AsmPrinter::printSuffixedName(std::string &Name, const char* Suffix) { +void AsmPrinter::printSuffixedName(const std::string &Name, const char* Suffix) { printSuffixedName(Name.c_str(), Suffix); } diff --git a/lib/Target/X86/X86ATTAsmPrinter.cpp b/lib/Target/X86/X86ATTAsmPrinter.cpp index 463016c2dd3..a61bb2261d6 100644 --- a/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -977,8 +977,7 @@ void X86ATTAsmPrinter::printModuleLevelGV(const GlobalVariable* GVar) { /// printGVStub - Print stub for a global value. /// void X86ATTAsmPrinter::printGVStub(const char *GV, const char *Prefix) { - if (Prefix) O << Prefix; - printSuffixedName(GV, "$non_lazy_ptr"); + printSuffixedName(GV, "$non_lazy_ptr", Prefix); O << ":\n\t.indirect_symbol "; if (Prefix) O << Prefix; O << GV << "\n\t.long\t0\n";