Skip to content

Commit 0301580

Browse files
committed
[PowerPC] Remove VK_PPC_TLSGD and VK_PPC_TLSLD
52cf8e4 (2013) introduced the VK_PPC_TLSGD workaround to prevent unconditional reference to _GLOBAL_OFFSET_TABLE_ in ELFObjectWriter. e2b355d (2015) removed the `_GLOBAL_OFFSET_TABLE_` hack for the generic VK_TLSGD, making the VK_PPC_TLSGD workaround unneeded.
1 parent 04b49b1 commit 0301580

File tree

7 files changed

+8
-68
lines changed

7 files changed

+8
-68
lines changed

llvm/include/llvm/MC/MCExpr.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,6 @@ class MCSymbolRefExpr : public MCExpr {
303303
VK_PPC_GOT_TLSGD_LO, // symbol@got@tlsgd@l
304304
VK_PPC_GOT_TLSGD_HI, // symbol@got@tlsgd@h
305305
VK_PPC_GOT_TLSGD_HA, // symbol@got@tlsgd@ha
306-
VK_PPC_TLSGD, // symbol@tlsgd
307306
VK_PPC_AIX_TLSGD, // symbol@gd
308307
VK_PPC_AIX_TLSGDM, // symbol@m
309308
VK_PPC_AIX_TLSIE, // symbol@ie
@@ -319,7 +318,6 @@ class MCSymbolRefExpr : public MCExpr {
319318
VK_PPC_GOT_TLSLD_PCREL, // symbol@got@tlsld@pcrel
320319
VK_PPC_GOT_TPREL_PCREL, // symbol@got@tprel@pcrel
321320
VK_PPC_TLS_PCREL, // symbol@tls@pcrel
322-
VK_PPC_TLSLD, // symbol@tlsld
323321
VK_PPC_LOCAL, // symbol@local
324322
VK_PPC_NOTOC, // symbol@notoc
325323
VK_PPC_PCREL_OPT, // .reloc expr, R_PPC64_PCREL_OPT, expr

llvm/lib/MC/MCAsmInfo.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,8 @@ void MCAsmInfo::initializeVariantKinds(ArrayRef<VariantKindDesc> Descs) {
133133
assert(It.second && "duplicate Kind");
134134
[[maybe_unused]] auto It2 =
135135
NameToVariantKind.try_emplace(Desc.Name.lower(), Desc.Kind);
136-
// Workaround for VK_PPC_L/VK_PPC_LO ("l"), VK_PPC_TLSGD, and VK_PPC_TLSLD.
137-
assert(It2.second ||
138-
(Desc.Name == "l" || Desc.Name == "tlsgd" || Desc.Name == "tlsld"));
136+
// Workaround for VK_PPC_L/VK_PPC_LO ("l").
137+
assert(It2.second || Desc.Name == "l");
139138
}
140139
}
141140

llvm/lib/MC/MCELFStreamer.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -419,12 +419,10 @@ void MCELFStreamer::fixSymbolsInTLSFixups(const MCExpr *expr) {
419419
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI:
420420
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA:
421421
case MCSymbolRefExpr::VK_PPC_GOT_TLSGD_PCREL:
422-
case MCSymbolRefExpr::VK_PPC_TLSGD:
423422
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD:
424423
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_LO:
425424
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HI:
426425
case MCSymbolRefExpr::VK_PPC_GOT_TLSLD_HA:
427-
case MCSymbolRefExpr::VK_PPC_TLSLD:
428426
break;
429427
}
430428
getAssembler().registerSymbol(symRef.getSymbol());

llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ class PPCAsmParser : public MCTargetAsmParser {
111111

112112
const MCExpr *extractModifierFromExpr(const MCExpr *E,
113113
PPCMCExpr::VariantKind &Variant);
114-
const MCExpr *fixupVariantKind(const MCExpr *E);
115114
bool parseExpression(const MCExpr *&EVal);
116115

117116
bool parseOperand(OperandVector &Operands);
@@ -1456,56 +1455,6 @@ PPCAsmParser::extractModifierFromExpr(const MCExpr *E,
14561455
llvm_unreachable("Invalid expression kind!");
14571456
}
14581457

1459-
/// Find all VK_TLSGD/VK_TLSLD symbol references in expression and replace
1460-
/// them by VK_PPC_TLSGD/VK_PPC_TLSLD. This is necessary to avoid having
1461-
/// _GLOBAL_OFFSET_TABLE_ created via ELFObjectWriter::RelocNeedsGOT.
1462-
/// FIXME: This is a hack.
1463-
const MCExpr *PPCAsmParser::fixupVariantKind(const MCExpr *E) {
1464-
MCContext &Context = getParser().getContext();
1465-
1466-
switch (E->getKind()) {
1467-
case MCExpr::Target:
1468-
case MCExpr::Constant:
1469-
return E;
1470-
1471-
case MCExpr::SymbolRef: {
1472-
const MCSymbolRefExpr *SRE = cast<MCSymbolRefExpr>(E);
1473-
MCSymbolRefExpr::VariantKind Variant = MCSymbolRefExpr::VK_None;
1474-
1475-
switch (SRE->getKind()) {
1476-
case MCSymbolRefExpr::VK_TLSGD:
1477-
Variant = MCSymbolRefExpr::VK_PPC_TLSGD;
1478-
break;
1479-
case MCSymbolRefExpr::VK_TLSLD:
1480-
Variant = MCSymbolRefExpr::VK_PPC_TLSLD;
1481-
break;
1482-
default:
1483-
return E;
1484-
}
1485-
return MCSymbolRefExpr::create(&SRE->getSymbol(), Variant, Context);
1486-
}
1487-
1488-
case MCExpr::Unary: {
1489-
const MCUnaryExpr *UE = cast<MCUnaryExpr>(E);
1490-
const MCExpr *Sub = fixupVariantKind(UE->getSubExpr());
1491-
if (Sub == UE->getSubExpr())
1492-
return E;
1493-
return MCUnaryExpr::create(UE->getOpcode(), Sub, Context);
1494-
}
1495-
1496-
case MCExpr::Binary: {
1497-
const MCBinaryExpr *BE = cast<MCBinaryExpr>(E);
1498-
const MCExpr *LHS = fixupVariantKind(BE->getLHS());
1499-
const MCExpr *RHS = fixupVariantKind(BE->getRHS());
1500-
if (LHS == BE->getLHS() && RHS == BE->getRHS())
1501-
return E;
1502-
return MCBinaryExpr::create(BE->getOpcode(), LHS, RHS, Context);
1503-
}
1504-
}
1505-
1506-
llvm_unreachable("Invalid expression kind!");
1507-
}
1508-
15091458
/// This differs from the default "parseExpression" in that it handles
15101459
/// modifiers.
15111460
bool PPCAsmParser::parseExpression(const MCExpr *&EVal) {
@@ -1514,8 +1463,6 @@ bool PPCAsmParser::parseExpression(const MCExpr *&EVal) {
15141463
if (getParser().parseExpression(EVal))
15151464
return true;
15161465

1517-
EVal = fixupVariantKind(EVal);
1518-
15191466
PPCMCExpr::VariantKind Variant;
15201467
const MCExpr *E = extractModifierFromExpr(EVal, Variant);
15211468
if (E)

llvm/lib/Target/PowerPC/MCTargetDesc/PPCELFObjectWriter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,13 +399,13 @@ unsigned PPCELFObjectWriter::getRelocType(MCContext &Ctx, const MCValue &Target,
399399
case PPC::fixup_ppc_nofixup:
400400
switch (Modifier) {
401401
default: llvm_unreachable("Unsupported Modifier");
402-
case MCSymbolRefExpr::VK_PPC_TLSGD:
402+
case MCSymbolRefExpr::VK_TLSGD:
403403
if (is64Bit())
404404
Type = ELF::R_PPC64_TLSGD;
405405
else
406406
Type = ELF::R_PPC_TLSGD;
407407
break;
408-
case MCSymbolRefExpr::VK_PPC_TLSLD:
408+
case MCSymbolRefExpr::VK_TLSLD:
409409
if (is64Bit())
410410
Type = ELF::R_PPC64_TLSLD;
411411
else

llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCAsmInfo.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ const MCAsmInfo::VariantKindDesc variantKindDescs[] = {
2323
{MCSymbolRefExpr::VK_GOT, "GOT"},
2424
{MCSymbolRefExpr::VK_PCREL, "PCREL"},
2525
{MCSymbolRefExpr::VK_PLT, "PLT"},
26-
{MCSymbolRefExpr::VK_TLSGD, "TLSGD"},
27-
{MCSymbolRefExpr::VK_TLSLD, "TLSLD"},
26+
{MCSymbolRefExpr::VK_TLSGD, "tlsgd"},
27+
{MCSymbolRefExpr::VK_TLSLD, "tlsld"},
2828
{MCSymbolRefExpr::VK_TPREL, "TPREL"},
2929
{MCSymbolRefExpr::VK_PPC_LO, "l"},
3030
{MCSymbolRefExpr::VK_PPC_HI, "h"},
@@ -77,7 +77,6 @@ const MCAsmInfo::VariantKindDesc variantKindDescs[] = {
7777
{MCSymbolRefExpr::VK_PPC_GOT_TLSGD_LO, "got@tlsgd@l"},
7878
{MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HI, "got@tlsgd@h"},
7979
{MCSymbolRefExpr::VK_PPC_GOT_TLSGD_HA, "got@tlsgd@ha"},
80-
{MCSymbolRefExpr::VK_PPC_TLSGD, "tlsgd"},
8180
{MCSymbolRefExpr::VK_PPC_AIX_TLSGD, "gd"},
8281
{MCSymbolRefExpr::VK_PPC_AIX_TLSGDM, "m"},
8382
{MCSymbolRefExpr::VK_PPC_AIX_TLSIE, "ie"},
@@ -93,7 +92,6 @@ const MCAsmInfo::VariantKindDesc variantKindDescs[] = {
9392
{MCSymbolRefExpr::VK_PPC_GOT_TLSLD_PCREL, "got@tlsld@pcrel"},
9493
{MCSymbolRefExpr::VK_PPC_GOT_TPREL_PCREL, "got@tprel@pcrel"},
9594
{MCSymbolRefExpr::VK_PPC_TLS_PCREL, "tls@pcrel"},
96-
{MCSymbolRefExpr::VK_PPC_TLSLD, "tlsld"},
9795
{MCSymbolRefExpr::VK_PPC_LOCAL, "local"},
9896
{MCSymbolRefExpr::VK_PPC_NOTOC, "notoc"},
9997
{MCSymbolRefExpr::VK_PPC_PCREL_OPT, "<<invalid>>"},

llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1474,7 +1474,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) {
14741474
case PPC::GETtlsADDR32: {
14751475
// Transform: %r3 = GETtlsADDR32 %r3, @sym
14761476
// Into: BL_TLS __tls_get_addr(sym at tlsgd)@PLT
1477-
EmitTlsCall(MI, MCSymbolRefExpr::VK_PPC_TLSGD);
1477+
EmitTlsCall(MI, MCSymbolRefExpr::VK_TLSGD);
14781478
return;
14791479
}
14801480
case PPC::GETtlsTpointer32AIX: {
@@ -1526,7 +1526,7 @@ void PPCAsmPrinter::emitInstruction(const MachineInstr *MI) {
15261526
case PPC::GETtlsldADDR32: {
15271527
// Transform: %r3 = GETtlsldADDR32 %r3, @sym
15281528
// Into: BL_TLS __tls_get_addr(sym at tlsld)@PLT
1529-
EmitTlsCall(MI, MCSymbolRefExpr::VK_PPC_TLSLD);
1529+
EmitTlsCall(MI, MCSymbolRefExpr::VK_TLSLD);
15301530
return;
15311531
}
15321532
case PPC::ADDISdtprelHA:

0 commit comments

Comments
 (0)