mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
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). llvm-svn: 81965
This commit is contained in:
parent
f720dd9257
commit
91c3b33e33
@ -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,
|
||||
|
@ -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) {
|
||||
|
Loading…
Reference in New Issue
Block a user