summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-09-11 04:36:43 +0000
committerChris Lattner <sabre@nondot.org>2009-09-11 04:36:43 +0000
commita0602b4b146d459c2c1ba3d8c436b76bffaa554f (patch)
tree5d1d28aa51ae04f0c186661bf4351e486c49352a /lib
parentcf1ed75f7ffae47c50f9030d56397ab6ee324253 (diff)
downloadllvm-a0602b4b146d459c2c1ba3d8c436b76bffaa554f.tar.gz
llvm-a0602b4b146d459c2c1ba3d8c436b76bffaa554f.tar.bz2
llvm-a0602b4b146d459c2c1ba3d8c436b76bffaa554f.tar.xz
convert X86ATTAsmPrinter::GetExternalSymbolSymbol to use SmallString
instead of std::string and Mangler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81503 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r--lib/Target/X86/AsmPrinter/X86MCInstLower.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
index 72ac072475..05f4540877 100644
--- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
+++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp
@@ -92,9 +92,9 @@ MCSymbol *X86ATTAsmPrinter::GetGlobalAddressSymbol(const MachineOperand &MO) {
}
MCSymbol *X86ATTAsmPrinter::GetExternalSymbolSymbol(const MachineOperand &MO) {
- std::string Name = Mang->makeNameProper(MO.getSymbolName());
- if (MO.getTargetFlags() == X86II::MO_DARWIN_STUB)
- Name += "$stub";
+ SmallString<256> Name;
+ Name += MAI->getGlobalPrefix();
+ Name += MO.getSymbolName();
switch (MO.getTargetFlags()) {
default: llvm_unreachable("Unknown target flag on GV operand");
@@ -102,12 +102,16 @@ MCSymbol *X86ATTAsmPrinter::GetExternalSymbolSymbol(const MachineOperand &MO) {
case X86II::MO_GOT_ABSOLUTE_ADDRESS: // Doesn't modify symbol name.
case X86II::MO_PIC_BASE_OFFSET: // Doesn't modify symbol name.
break;
- case X86II::MO_DLLIMPORT:
+ case X86II::MO_DLLIMPORT: {
// Handle dllimport linkage.
- Name = "__imp_" + Name;
+ const char *Prefix = "__imp_";
+ Name.insert(Name.begin(), Prefix, Prefix+strlen(Prefix));
break;
+ }
case X86II::MO_DARWIN_STUB:
- FnStubs[Name] = Mang->makeNameProper(MO.getSymbolName());
+ // Insert: FnStub["_foo$stub"] = "_foo";
+ Name += "$stub";
+ FnStubs[Name.str()] = StringRef(Name.data(), Name.size()-5);
break;
// FIXME: These probably should be a modifier on the symbol or something??
case X86II::MO_TLSGD: Name += "@TLSGD"; break;
@@ -121,7 +125,7 @@ MCSymbol *X86ATTAsmPrinter::GetExternalSymbolSymbol(const MachineOperand &MO) {
case X86II::MO_PLT: Name += "@PLT"; break;
}
- return OutContext.GetOrCreateSymbol(Name);
+ return OutContext.GetOrCreateSymbol(Name.str());
}
MCSymbol *X86ATTAsmPrinter::GetJumpTableSymbol(const MachineOperand &MO) {