diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-09-16 00:14:19 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-09-16 00:14:19 +0000 |
| commit | 8c7099069742b1fda9b8c3c7d513e67e566c6dbb (patch) | |
| tree | d1965c621bc745366d46a703845b7d6c3dc33b21 | |
| parent | 5632fabd0a6e1f30e9cbbd6c2b6d3dce6dcc656a (diff) | |
| download | external_llvm-8c7099069742b1fda9b8c3c7d513e67e566c6dbb.zip external_llvm-8c7099069742b1fda9b8c3c7d513e67e566c6dbb.tar.gz external_llvm-8c7099069742b1fda9b8c3c7d513e67e566c6dbb.tar.bz2 | |
eliminate the PPC backend's implementation of EmitExternalGlobal
and use PersonalityPrefix/Suffix to achieve the same effect (like
the x86 backend).
This changes the code generated for ppc static mode, but guess what,
we were generating this before:
.byte 0x9B ; Personality (indirect pcrel sdata4)
.long ___gxx_personality_v0-. ; Personality
which is not correct! (it is not an 'indirect' reference).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81965 91177308-0d34-0410-b5e6-96231b3b80d8
| -rw-r--r-- | lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp | 15 | ||||
| -rw-r--r-- | lib/Target/PowerPC/PPCMCAsmInfo.cpp | 3 |
2 files changed, 3 insertions, 15 deletions
diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 9c02aef..09f4af3 100644 --- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -341,8 +341,6 @@ namespace { const char *Modifier); virtual bool runOnMachineFunction(MachineFunction &F) = 0; - - virtual void EmitExternalGlobal(const GlobalVariable *GV); }; /// PPCLinuxAsmPrinter - PowerPC assembly printer, customized for Linux @@ -462,19 +460,6 @@ void PPCAsmPrinter::printOp(const MachineOperand &MO) { } } -/// EmitExternalGlobal - In this case we need to use the indirect symbol. -/// -void PPCAsmPrinter::EmitExternalGlobal(const GlobalVariable *GV) { - std::string Name; - - if (TM.getRelocationModel() != Reloc::Static) { - Name = Mang->getMangledName(GV, "$non_lazy_ptr", true); - } else { - Name = Mang->getMangledName(GV); - } - O << Name; -} - /// PrintAsmOperand - Print out an operand for an inline asm expression. /// bool PPCAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo, diff --git a/lib/Target/PowerPC/PPCMCAsmInfo.cpp b/lib/Target/PowerPC/PPCMCAsmInfo.cpp index c87879b..6aad786 100644 --- a/lib/Target/PowerPC/PPCMCAsmInfo.cpp +++ b/lib/Target/PowerPC/PPCMCAsmInfo.cpp @@ -22,6 +22,9 @@ PPCMCAsmInfoDarwin::PPCMCAsmInfoDarwin(bool is64Bit) { if (!is64Bit) Data64bitsDirective = 0; // We can't emit a 64-bit unit in PPC32 mode. AssemblerDialect = 1; // New-Style mnemonics. + + PersonalityPrefix = "L"; + PersonalitySuffix = "$non_lazy_ptr"; } PPCLinuxMCAsmInfo::PPCLinuxMCAsmInfo(bool is64Bit) { |
