mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
[PowerPC] Remove VK_PPC_TLSGD and VK_PPC_TLSLD
The PowerPC-specific modifiers VK_PPC_TLSGD and VK_PPC_TLSLD correspond exactly to the generic modifiers VK_TLSGD and VK_TLSLD. This causes some confusion with the asm parser, since VK_PPC_TLSGD is output as @tlsgd, which is then read back in as VK_TLSGD. To avoid this confusion, this patch removes the PowerPC-specific modifiers and uses the generic modifiers throughout. (The only drawback is that the generic modifiers are printed in upper case while the usual convention on PowerPC is to use lower-case modifiers. But this is just a cosmetic issue.) llvm-svn: 185476
This commit is contained in:
parent
58c56dddd9
commit
042ff673b7
@ -216,12 +216,10 @@ public:
|
||||
VK_PPC_GOT_TLSGD_LO, // symbol@got@tlsgd@l
|
||||
VK_PPC_GOT_TLSGD_HI, // symbol@got@tlsgd@h
|
||||
VK_PPC_GOT_TLSGD_HA, // symbol@got@tlsgd@ha
|
||||
VK_PPC_TLSGD, // symbol@tlsgd
|
||||
VK_PPC_GOT_TLSLD, // symbol@got@tlsld
|
||||
VK_PPC_GOT_TLSLD_LO, // symbol@got@tlsld@l
|
||||
VK_PPC_GOT_TLSLD_HI, // symbol@got@tlsld@h
|
||||
VK_PPC_GOT_TLSLD_HA, // symbol@got@tlsld@ha
|
||||
VK_PPC_TLSLD, // symbol@tlsld
|
||||
|
||||
VK_Mips_GPREL,
|
||||
VK_Mips_GOT_CALL,
|
||||
|
@ -392,12 +392,10 @@ void MCELFStreamer::fixSymbolsInTLSFixups(const MCExpr *expr) {
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TLSGD:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
|
||||
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
|
||||
case MCSymbolRefExpr::VK_PPC_TLSLD:
|
||||
break;
|
||||
}
|
||||
MCSymbolData &SD = getAssembler().getOrCreateSymbolData(symRef.getSymbol());
|
||||
|
@ -241,12 +241,10 @@ StringRef MCSymbolRefExpr::getVariantKindName(VariantKind Kind) {
|
||||
case VK_PPC_GOT_TLSGD_LO: return "got@tlsgd@l";
|
||||
case VK_PPC_GOT_TLSGD_HI: return "got@tlsgd@h";
|
||||
case VK_PPC_GOT_TLSGD_HA: return "got@tlsgd@ha";
|
||||
case VK_PPC_TLSGD: return "tlsgd";
|
||||
case VK_PPC_GOT_TLSLD: return "got@tlsld";
|
||||
case VK_PPC_GOT_TLSLD_LO: return "got@tlsld@l";
|
||||
case VK_PPC_GOT_TLSLD_HI: return "got@tlsld@h";
|
||||
case VK_PPC_GOT_TLSLD_HA: return "got@tlsld@ha";
|
||||
case VK_PPC_TLSLD: return "tlsld";
|
||||
case VK_Mips_GPREL: return "GPREL";
|
||||
case VK_Mips_GOT_CALL: return "GOT_CALL";
|
||||
case VK_Mips_GOT16: return "GOT16";
|
||||
|
@ -295,10 +295,10 @@ unsigned PPCELFObjectWriter::getRelocTypeInner(const MCValue &Target,
|
||||
case PPC::fixup_ppc_nofixup:
|
||||
switch (Modifier) {
|
||||
default: llvm_unreachable("Unsupported Modifier");
|
||||
case MCSymbolRefExpr::VK_PPC_TLSGD:
|
||||
case MCSymbolRefExpr::VK_TLSGD:
|
||||
Type = ELF::R_PPC64_TLSGD;
|
||||
break;
|
||||
case MCSymbolRefExpr::VK_PPC_TLSLD:
|
||||
case MCSymbolRefExpr::VK_TLSLD:
|
||||
Type = ELF::R_PPC64_TLSLD;
|
||||
break;
|
||||
}
|
||||
|
@ -573,8 +573,7 @@ void PPCAsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
const GlobalValue *GValue = MO.getGlobal();
|
||||
MCSymbol *MOSymbol = Mang->getSymbol(GValue);
|
||||
const MCExpr *SymVar =
|
||||
MCSymbolRefExpr::Create(MOSymbol, MCSymbolRefExpr::VK_PPC_TLSGD,
|
||||
OutContext);
|
||||
MCSymbolRefExpr::Create(MOSymbol, MCSymbolRefExpr::VK_TLSGD, OutContext);
|
||||
OutStreamer.EmitInstruction(MCInstBuilder(PPC::BL8_NOP_TLSGD)
|
||||
.addExpr(TlsRef)
|
||||
.addExpr(SymVar));
|
||||
@ -625,8 +624,7 @@ void PPCAsmPrinter::EmitInstruction(const MachineInstr *MI) {
|
||||
const GlobalValue *GValue = MO.getGlobal();
|
||||
MCSymbol *MOSymbol = Mang->getSymbol(GValue);
|
||||
const MCExpr *SymVar =
|
||||
MCSymbolRefExpr::Create(MOSymbol, MCSymbolRefExpr::VK_PPC_TLSLD,
|
||||
OutContext);
|
||||
MCSymbolRefExpr::Create(MOSymbol, MCSymbolRefExpr::VK_TLSLD, OutContext);
|
||||
OutStreamer.EmitInstruction(MCInstBuilder(PPC::BL8_NOP_TLSLD)
|
||||
.addExpr(TlsRef)
|
||||
.addExpr(SymVar));
|
||||
|
@ -18,6 +18,6 @@ entry:
|
||||
|
||||
; CHECK: addis [[REG:[0-9]+]], 2, a@got@tlsgd@ha
|
||||
; CHECK-NEXT: addi 3, [[REG]], a@got@tlsgd@l
|
||||
; CHECK: bl __tls_get_addr(a@tlsgd)
|
||||
; CHECK: bl __tls_get_addr(a@TLSGD)
|
||||
; CHECK-NEXT: nop
|
||||
|
||||
|
@ -18,7 +18,7 @@ entry:
|
||||
|
||||
; CHECK: addis [[REG:[0-9]+]], 2, a@got@tlsld@ha
|
||||
; CHECK-NEXT: addi 3, [[REG]], a@got@tlsld@l
|
||||
; CHECK: bl __tls_get_addr(a@tlsld)
|
||||
; CHECK: bl __tls_get_addr(a@TLSLD)
|
||||
; CHECK-NEXT: nop
|
||||
; CHECK: addis [[REG2:[0-9]+]], 3, a@dtprel@ha
|
||||
; CHECK-NEXT: lwa {{[0-9]+}}, a@dtprel@l([[REG2]])
|
||||
|
@ -18,7 +18,7 @@ entry:
|
||||
|
||||
; CHECK: addis [[REG:[0-9]+]], 2, a@got@tlsld@ha
|
||||
; CHECK-NEXT: addi 3, [[REG]], a@got@tlsld@l
|
||||
; CHECK: bl __tls_get_addr(a@tlsld)
|
||||
; CHECK: bl __tls_get_addr(a@TLSLD)
|
||||
; CHECK-NEXT: nop
|
||||
; CHECK: addis [[REG2:[0-9]+]], 3, a@dtprel@ha
|
||||
; CHECK-NEXT: addi {{[0-9]+}}, [[REG2]], a@dtprel@l
|
||||
|
Loading…
Reference in New Issue
Block a user