[llvm] 1fc8b1b - Sparc: Remove specifiers for HH22/HM10/LM22, TLS, and DISP32
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sun May 4 23:35:34 PDT 2025
Author: Fangrui Song
Date: 2025-05-04T23:35:29-07:00
New Revision: 1fc8b1bcb1ccca25926b3d92331df681fb49e766
URL: https://github.com/llvm/llvm-project/commit/1fc8b1bcb1ccca25926b3d92331df681fb49e766
DIFF: https://github.com/llvm/llvm-project/commit/1fc8b1bcb1ccca25926b3d92331df681fb49e766.diff
LOG: Sparc: Remove specifiers for HH22/HM10/LM22, TLS, and DISP32
Added:
Modified:
llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
llvm/lib/Target/Sparc/SparcISelLowering.cpp
llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index 6b36adacdcc49..ae61ff579b882 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -847,16 +847,16 @@ bool SparcAsmParser::expandSETX(MCInst &Inst, SMLoc IDLoc,
// merge it with the lower half that has just been generated above.
// sethi %hh(val), tmp
- Instructions.push_back(
- MCInstBuilder(SP::SETHIi)
- .addReg(MCTmpOp.getReg())
- .addExpr(adjustPICRelocation(SparcMCExpr::VK_HH, ValExpr)));
+ Instructions.push_back(MCInstBuilder(SP::SETHIi)
+ .addReg(MCTmpOp.getReg())
+ .addExpr(SparcMCExpr::create(
+ ELF::R_SPARC_HH22, ValExpr, getContext())));
// or tmp, %hm(val), tmp
- Instructions.push_back(
- MCInstBuilder(SP::ORri)
- .addReg(MCTmpOp.getReg())
- .addReg(MCTmpOp.getReg())
- .addExpr(adjustPICRelocation(SparcMCExpr::VK_HM, ValExpr)));
+ Instructions.push_back(MCInstBuilder(SP::ORri)
+ .addReg(MCTmpOp.getReg())
+ .addReg(MCTmpOp.getReg())
+ .addExpr(SparcMCExpr::create(
+ ELF::R_SPARC_HM10, ValExpr, getContext())));
// sllx tmp, 32, tmp
Instructions.push_back(MCInstBuilder(SP::SLLXri)
.addReg(MCTmpOp.getReg())
@@ -1114,20 +1114,20 @@ ParseStatus SparcAsmParser::parseTailRelocSym(OperandVector &Operands) {
SMLoc S = getLoc();
SMLoc E = SMLoc::getFromPointer(S.getPointer() - 1);
- auto MatchesKind = [](SparcMCExpr::Specifier VK) -> bool {
+ auto MatchesKind = [](uint16_t RelType) -> bool {
switch (Kind) {
case TailRelocKind::Load_GOT:
// Non-TLS relocations on ld (or ldx).
// ld [%rr + %rr], %rr, %rel(sym)
- return VK == ELF::R_SPARC_GOTDATA_OP;
+ return RelType == ELF::R_SPARC_GOTDATA_OP;
case TailRelocKind::Add_TLS:
// TLS relocations on add.
// add %rr, %rr, %rr, %rel(sym)
- switch (VK) {
- case SparcMCExpr::VK_TLS_GD_ADD:
- case SparcMCExpr::VK_TLS_IE_ADD:
- case SparcMCExpr::VK_TLS_LDM_ADD:
- case SparcMCExpr::VK_TLS_LDO_ADD:
+ switch (RelType) {
+ case ELF::R_SPARC_TLS_GD_ADD:
+ case ELF::R_SPARC_TLS_IE_ADD:
+ case ELF::R_SPARC_TLS_LDM_ADD:
+ case ELF::R_SPARC_TLS_LDO_ADD:
return true;
default:
return false;
@@ -1135,9 +1135,9 @@ ParseStatus SparcAsmParser::parseTailRelocSym(OperandVector &Operands) {
case TailRelocKind::Load_TLS:
// TLS relocations on ld (or ldx).
// ld[x] %addr, %rr, %rel(sym)
- switch (VK) {
- case SparcMCExpr::VK_TLS_IE_LD:
- case SparcMCExpr::VK_TLS_IE_LDX:
+ switch (RelType) {
+ case ELF::R_SPARC_TLS_IE_LD:
+ case ELF::R_SPARC_TLS_IE_LDX:
return true;
default:
return false;
@@ -1145,9 +1145,9 @@ ParseStatus SparcAsmParser::parseTailRelocSym(OperandVector &Operands) {
case TailRelocKind::Call_TLS:
// TLS relocations on call.
// call sym, %rel(sym)
- switch (VK) {
- case SparcMCExpr::VK_TLS_GD_CALL:
- case SparcMCExpr::VK_TLS_LDM_CALL:
+ switch (RelType) {
+ case ELF::R_SPARC_TLS_GD_CALL:
+ case ELF::R_SPARC_TLS_LDM_CALL:
return true;
default:
return false;
@@ -1706,14 +1706,14 @@ bool SparcAsmParser::matchSparcAsmModifiers(const MCExpr *&EVal,
return false;
case ELF::R_SPARC_GOTDATA_OP:
- case SparcMCExpr::VK_TLS_GD_ADD:
- case SparcMCExpr::VK_TLS_GD_CALL:
- case SparcMCExpr::VK_TLS_IE_ADD:
- case SparcMCExpr::VK_TLS_IE_LD:
- case SparcMCExpr::VK_TLS_IE_LDX:
- case SparcMCExpr::VK_TLS_LDM_ADD:
- case SparcMCExpr::VK_TLS_LDM_CALL:
- case SparcMCExpr::VK_TLS_LDO_ADD:
+ case ELF::R_SPARC_TLS_GD_ADD:
+ case ELF::R_SPARC_TLS_GD_CALL:
+ case ELF::R_SPARC_TLS_IE_ADD:
+ case ELF::R_SPARC_TLS_IE_LD:
+ case ELF::R_SPARC_TLS_IE_LDX:
+ case ELF::R_SPARC_TLS_LDM_ADD:
+ case ELF::R_SPARC_TLS_LDM_CALL:
+ case ELF::R_SPARC_TLS_LDO_ADD:
// These are special-cased at tablegen level.
return false;
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
index 0878304fb54c7..b54958c94834f 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcELFObjectWriter.cpp
@@ -45,22 +45,22 @@ unsigned SparcELFObjectWriter::getRelocType(MCContext &Ctx,
const MCFixup &Fixup,
bool IsPCRel) const {
switch (Target.getSpecifier()) {
- case SparcMCExpr::VK_TLS_GD_HI22:
- case SparcMCExpr::VK_TLS_GD_LO10:
- case SparcMCExpr::VK_TLS_GD_ADD:
- case SparcMCExpr::VK_TLS_LDM_HI22:
- case SparcMCExpr::VK_TLS_LDM_LO10:
- case SparcMCExpr::VK_TLS_LDM_ADD:
- case SparcMCExpr::VK_TLS_LDO_HIX22:
- case SparcMCExpr::VK_TLS_LDO_LOX10:
- case SparcMCExpr::VK_TLS_LDO_ADD:
- case SparcMCExpr::VK_TLS_IE_HI22:
- case SparcMCExpr::VK_TLS_IE_LO10:
- case SparcMCExpr::VK_TLS_IE_LD:
- case SparcMCExpr::VK_TLS_IE_LDX:
- case SparcMCExpr::VK_TLS_IE_ADD:
- case SparcMCExpr::VK_TLS_LE_HIX22:
- case SparcMCExpr::VK_TLS_LE_LOX10:
+ case ELF::R_SPARC_TLS_GD_HI22:
+ case ELF::R_SPARC_TLS_GD_LO10:
+ case ELF::R_SPARC_TLS_GD_ADD:
+ case ELF::R_SPARC_TLS_LDM_HI22:
+ case ELF::R_SPARC_TLS_LDM_LO10:
+ case ELF::R_SPARC_TLS_LDM_ADD:
+ case ELF::R_SPARC_TLS_LDO_HIX22:
+ case ELF::R_SPARC_TLS_LDO_LOX10:
+ case ELF::R_SPARC_TLS_LDO_ADD:
+ case ELF::R_SPARC_TLS_IE_HI22:
+ case ELF::R_SPARC_TLS_IE_LO10:
+ case ELF::R_SPARC_TLS_IE_LD:
+ case ELF::R_SPARC_TLS_IE_LDX:
+ case ELF::R_SPARC_TLS_IE_ADD:
+ case ELF::R_SPARC_TLS_LE_HIX22:
+ case ELF::R_SPARC_TLS_LE_LOX10:
if (auto *SA = Target.getAddSym())
cast<MCSymbolELF>(SA)->setType(ELF::STT_TLS);
break;
@@ -75,7 +75,7 @@ unsigned SparcELFObjectWriter::getRelocType(MCContext &Ctx,
return Kind;
if (const SparcMCExpr *SExpr = dyn_cast<SparcMCExpr>(Fixup.getValue())) {
- if (SExpr->getSpecifier() == SparcMCExpr::VK_R_DISP32)
+ if (SExpr->getSpecifier() == ELF::R_SPARC_DISP32)
return ELF::R_SPARC_DISP32;
}
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
index 99ed3b60d618f..8de9a789a63bf 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCAsmInfo.cpp
@@ -13,6 +13,7 @@
#include "SparcMCAsmInfo.h"
#include "SparcMCExpr.h"
#include "llvm/BinaryFormat/Dwarf.h"
+#include "llvm/BinaryFormat/ELF.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCTargetOptions.h"
@@ -49,7 +50,7 @@ SparcELFMCAsmInfo::getExprForPersonalitySymbol(const MCSymbol *Sym,
MCStreamer &Streamer) const {
if (Encoding & dwarf::DW_EH_PE_pcrel) {
MCContext &Ctx = Streamer.getContext();
- return SparcMCExpr::create(SparcMCExpr::VK_R_DISP32,
+ return SparcMCExpr::create(ELF::R_SPARC_DISP32,
MCSymbolRefExpr::create(Sym, Ctx), Ctx);
}
@@ -62,7 +63,7 @@ SparcELFMCAsmInfo::getExprForFDESymbol(const MCSymbol *Sym,
MCStreamer &Streamer) const {
if (Encoding & dwarf::DW_EH_PE_pcrel) {
MCContext &Ctx = Streamer.getContext();
- return SparcMCExpr::create(SparcMCExpr::VK_R_DISP32,
+ return SparcMCExpr::create(ELF::R_SPARC_DISP32,
MCSymbolRefExpr::create(Sym, Ctx), Ctx);
}
return MCAsmInfo::getExprForFDESymbol(Sym, Encoding, Streamer);
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
index 51ea4490f1615..57203fd5c80ae 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
@@ -24,9 +24,9 @@ using namespace llvm;
#define DEBUG_TYPE "sparcmcexpr"
-const SparcMCExpr *SparcMCExpr::create(Specifier S, const MCExpr *Expr,
+const SparcMCExpr *SparcMCExpr::create(uint16_t S, const MCExpr *Expr,
MCContext &Ctx) {
- return new (Ctx) SparcMCExpr(S, Expr);
+ return new (Ctx) SparcMCExpr(Specifier(S), Expr);
}
void SparcMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
@@ -47,36 +47,36 @@ StringRef SparcMCExpr::getSpecifierName(SparcMCExpr::Specifier S) {
case ELF::R_SPARC_H44: return "h44";
case ELF::R_SPARC_M44: return "m44";
case ELF::R_SPARC_L44: return "l44";
- case VK_HH: return "hh";
- case VK_HM: return "hm";
- case VK_LM: return "lm";
+ case ELF::R_SPARC_HH22: return "hh";
+ case ELF::R_SPARC_HM10: return "hm";
+ case ELF::R_SPARC_LM22: return "lm";
// FIXME: use %pc22/%pc10, if system assembler supports them.
case ELF::R_SPARC_PC22: return "hi";
case ELF::R_SPARC_PC10: return "lo";
case ELF::R_SPARC_GOT22: return "hi";
case ELF::R_SPARC_GOT10: return "lo";
case ELF::R_SPARC_GOT13: return {};
- case VK_R_DISP32: return "r_disp32";
- case VK_TLS_GD_HI22: return "tgd_hi22";
- case VK_TLS_GD_LO10: return "tgd_lo10";
- case VK_TLS_GD_ADD: return "tgd_add";
- case VK_TLS_GD_CALL: return "tgd_call";
- case VK_TLS_LDM_HI22: return "tldm_hi22";
- case VK_TLS_LDM_LO10: return "tldm_lo10";
- case VK_TLS_LDM_ADD: return "tldm_add";
- case VK_TLS_LDM_CALL: return "tldm_call";
- case VK_TLS_LDO_HIX22: return "tldo_hix22";
- case VK_TLS_LDO_LOX10: return "tldo_lox10";
- case VK_TLS_LDO_ADD: return "tldo_add";
- case VK_TLS_IE_HI22: return "tie_hi22";
- case VK_TLS_IE_LO10: return "tie_lo10";
- case VK_TLS_IE_LD: return "tie_ld";
- case VK_TLS_IE_LDX: return "tie_ldx";
- case VK_TLS_IE_ADD: return "tie_add";
- case VK_TLS_LE_HIX22: return "tle_hix22";
- case VK_TLS_LE_LOX10: return "tle_lox10";
- case VK_HIX22: return "hix";
- case VK_LOX10: return "lox";
+ case ELF::R_SPARC_DISP32: return "r_disp32";
+ case ELF::R_SPARC_TLS_GD_HI22: return "tgd_hi22";
+ case ELF::R_SPARC_TLS_GD_LO10: return "tgd_lo10";
+ case ELF::R_SPARC_TLS_GD_ADD: return "tgd_add";
+ case ELF::R_SPARC_TLS_GD_CALL: return "tgd_call";
+ case ELF::R_SPARC_TLS_LDM_HI22: return "tldm_hi22";
+ case ELF::R_SPARC_TLS_LDM_LO10: return "tldm_lo10";
+ case ELF::R_SPARC_TLS_LDM_ADD: return "tldm_add";
+ case ELF::R_SPARC_TLS_LDM_CALL: return "tldm_call";
+ case ELF::R_SPARC_TLS_LDO_HIX22: return "tldo_hix22";
+ case ELF::R_SPARC_TLS_LDO_LOX10: return "tldo_lox10";
+ case ELF::R_SPARC_TLS_LDO_ADD: return "tldo_add";
+ case ELF::R_SPARC_TLS_IE_HI22: return "tie_hi22";
+ case ELF::R_SPARC_TLS_IE_LO10: return "tie_lo10";
+ case ELF::R_SPARC_TLS_IE_LD: return "tie_ld";
+ case ELF::R_SPARC_TLS_IE_LDX: return "tie_ldx";
+ case ELF::R_SPARC_TLS_IE_ADD: return "tie_add";
+ case ELF::R_SPARC_TLS_LE_HIX22: return "tle_hix22";
+ case ELF::R_SPARC_TLS_LE_LOX10: return "tle_lox10";
+ case ELF::R_SPARC_HIX22: return "hix";
+ case ELF::R_SPARC_LOX10: return "lox";
case ELF::R_SPARC_GOTDATA_OP_HIX22: return "gdop_hix22";
case ELF::R_SPARC_GOTDATA_OP_LOX10: return "gdop_lox10";
case ELF::R_SPARC_GOTDATA_OP: return "gdop";
@@ -92,37 +92,39 @@ SparcMCExpr::Specifier SparcMCExpr::parseSpecifier(StringRef name) {
.Case("h44", (SparcMCExpr::Specifier)ELF::R_SPARC_H44)
.Case("m44", (SparcMCExpr::Specifier)ELF::R_SPARC_M44)
.Case("l44", (SparcMCExpr::Specifier)ELF::R_SPARC_L44)
- .Case("hh", VK_HH)
- .Case("uhi", VK_HH) // Nonstandard GNU extension
- .Case("hm", VK_HM)
- .Case("ulo", VK_HM) // Nonstandard GNU extension
- .Case("lm", VK_LM)
+ .Case("hh", (SparcMCExpr::Specifier)ELF::R_SPARC_HH22)
+ // Nonstandard GNU extension
+ .Case("uhi", (SparcMCExpr::Specifier)ELF::R_SPARC_HH22)
+ .Case("hm", (SparcMCExpr::Specifier)ELF::R_SPARC_HM10)
+ // Nonstandard GNU extension
+ .Case("ulo", (SparcMCExpr::Specifier)ELF::R_SPARC_HM10)
+ .Case("lm", (SparcMCExpr::Specifier)ELF::R_SPARC_LM22)
.Case("pc22", (SparcMCExpr::Specifier)ELF::R_SPARC_PC22)
.Case("pc10", (SparcMCExpr::Specifier)ELF::R_SPARC_PC10)
.Case("got22", (SparcMCExpr::Specifier)ELF::R_SPARC_GOT22)
.Case("got10", (SparcMCExpr::Specifier)ELF::R_SPARC_GOT10)
.Case("got13", (SparcMCExpr::Specifier)ELF::R_SPARC_GOT13)
- .Case("r_disp32", VK_R_DISP32)
- .Case("tgd_hi22", VK_TLS_GD_HI22)
- .Case("tgd_lo10", VK_TLS_GD_LO10)
- .Case("tgd_add", VK_TLS_GD_ADD)
- .Case("tgd_call", VK_TLS_GD_CALL)
- .Case("tldm_hi22", VK_TLS_LDM_HI22)
- .Case("tldm_lo10", VK_TLS_LDM_LO10)
- .Case("tldm_add", VK_TLS_LDM_ADD)
- .Case("tldm_call", VK_TLS_LDM_CALL)
- .Case("tldo_hix22", VK_TLS_LDO_HIX22)
- .Case("tldo_lox10", VK_TLS_LDO_LOX10)
- .Case("tldo_add", VK_TLS_LDO_ADD)
- .Case("tie_hi22", VK_TLS_IE_HI22)
- .Case("tie_lo10", VK_TLS_IE_LO10)
- .Case("tie_ld", VK_TLS_IE_LD)
- .Case("tie_ldx", VK_TLS_IE_LDX)
- .Case("tie_add", VK_TLS_IE_ADD)
- .Case("tle_hix22", VK_TLS_LE_HIX22)
- .Case("tle_lox10", VK_TLS_LE_LOX10)
- .Case("hix", VK_HIX22)
- .Case("lox", VK_LOX10)
+ .Case("r_disp32", (SparcMCExpr::Specifier)ELF::R_SPARC_DISP32)
+ .Case("tgd_hi22", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_GD_HI22)
+ .Case("tgd_lo10", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_GD_LO10)
+ .Case("tgd_add", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_GD_ADD)
+ .Case("tgd_call", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_GD_CALL)
+ .Case("tldm_hi22", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDM_HI22)
+ .Case("tldm_lo10", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDM_LO10)
+ .Case("tldm_add", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDM_ADD)
+ .Case("tldm_call", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDM_CALL)
+ .Case("tldo_hix22", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDO_HIX22)
+ .Case("tldo_lox10", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDO_LOX10)
+ .Case("tldo_add", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LDO_ADD)
+ .Case("tie_hi22", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_IE_HI22)
+ .Case("tie_lo10", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_IE_LO10)
+ .Case("tie_ld", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_IE_LD)
+ .Case("tie_ldx", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_IE_LDX)
+ .Case("tie_add", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_IE_ADD)
+ .Case("tle_hix22", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LE_HIX22)
+ .Case("tle_lox10", (SparcMCExpr::Specifier)ELF::R_SPARC_TLS_LE_LOX10)
+ .Case("hix", (SparcMCExpr::Specifier)ELF::R_SPARC_HIX22)
+ .Case("lox", (SparcMCExpr::Specifier)ELF::R_SPARC_LOX10)
.Case("gdop_hix22", (SparcMCExpr::Specifier)ELF::R_SPARC_GOTDATA_OP_HIX22)
.Case("gdop_lox10", (SparcMCExpr::Specifier)ELF::R_SPARC_GOTDATA_OP_LOX10)
.Case("gdop", (SparcMCExpr::Specifier)ELF::R_SPARC_GOTDATA_OP)
@@ -137,29 +139,6 @@ uint16_t SparcMCExpr::getFixupKind() const {
return specifier;
case VK_LO: return ELF::R_SPARC_LO10;
case VK_HI: return ELF::R_SPARC_HI22;
- case VK_HH: return ELF::R_SPARC_HH22;
- case VK_HM: return ELF::R_SPARC_HM10;
- case VK_LM: return ELF::R_SPARC_LM22;
- case VK_TLS_GD_HI22: return ELF::R_SPARC_TLS_GD_HI22;
- case VK_TLS_GD_LO10: return ELF::R_SPARC_TLS_GD_LO10;
- case VK_TLS_GD_ADD: return ELF::R_SPARC_TLS_GD_ADD;
- case VK_TLS_GD_CALL: return ELF::R_SPARC_TLS_GD_CALL;
- case VK_TLS_LDM_HI22: return ELF::R_SPARC_TLS_LDM_HI22;
- case VK_TLS_LDM_LO10: return ELF::R_SPARC_TLS_LDM_LO10;
- case VK_TLS_LDM_ADD: return ELF::R_SPARC_TLS_LDM_ADD;
- case VK_TLS_LDM_CALL: return ELF::R_SPARC_TLS_LDM_CALL;
- case VK_TLS_LDO_HIX22: return ELF::R_SPARC_TLS_LDO_HIX22;
- case VK_TLS_LDO_LOX10: return ELF::R_SPARC_TLS_LDO_LOX10;
- case VK_TLS_LDO_ADD: return ELF::R_SPARC_TLS_LDO_ADD;
- case VK_TLS_IE_HI22: return ELF::R_SPARC_TLS_IE_HI22;
- case VK_TLS_IE_LO10: return ELF::R_SPARC_TLS_IE_LO10;
- case VK_TLS_IE_LD: return ELF::R_SPARC_TLS_IE_LD;
- case VK_TLS_IE_LDX: return ELF::R_SPARC_TLS_IE_LDX;
- case VK_TLS_IE_ADD: return ELF::R_SPARC_TLS_IE_ADD;
- case VK_TLS_LE_HIX22: return ELF::R_SPARC_TLS_LE_HIX22;
- case VK_TLS_LE_LOX10: return ELF::R_SPARC_TLS_LE_LOX10;
- case VK_HIX22: return ELF::R_SPARC_HIX22;
- case VK_LOX10: return ELF::R_SPARC_LOX10;
}
// clang-format on
}
diff --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
index f4ab87905ae2b..b99e8ce084795 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
@@ -26,30 +26,6 @@ class SparcMCExpr : public MCTargetExpr {
VK_None,
VK_LO = 200, // larger than any relocation type
VK_HI,
- VK_HH,
- VK_HM,
- VK_LM,
- VK_R_DISP32,
- VK_TLS_GD_HI22,
- VK_TLS_GD_LO10,
- VK_TLS_GD_ADD,
- VK_TLS_GD_CALL,
- VK_TLS_LDM_HI22,
- VK_TLS_LDM_LO10,
- VK_TLS_LDM_ADD,
- VK_TLS_LDM_CALL,
- VK_TLS_LDO_HIX22,
- VK_TLS_LDO_LOX10,
- VK_TLS_LDO_ADD,
- VK_TLS_IE_HI22,
- VK_TLS_IE_LO10,
- VK_TLS_IE_LD,
- VK_TLS_IE_LDX,
- VK_TLS_IE_ADD,
- VK_TLS_LE_HIX22,
- VK_TLS_LE_LOX10,
- VK_HIX22,
- VK_LOX10,
};
private:
@@ -63,7 +39,7 @@ class SparcMCExpr : public MCTargetExpr {
/// @name Construction
/// @{
- static const SparcMCExpr *create(Specifier S, const MCExpr *Expr,
+ static const SparcMCExpr *create(uint16_t S, const MCExpr *Expr,
MCContext &Ctx);
/// @}
/// @name Accessors
diff --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index c2ddfcbd7c89d..ed8d2fa057bce 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -207,7 +207,7 @@ void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
break;
}
case CodeModel::Large: {
- EmitHiLo(*OutStreamer, GOTLabel, SparcMCExpr::VK_HH, SparcMCExpr::VK_HM,
+ EmitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_HH22, ELF::R_SPARC_HM10,
MCRegOP, OutContext, STI);
MCOperand imm = MCOperand::createExpr(MCConstantExpr::create(32,
OutContext));
diff --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
index a963db1f103f2..1be39a98ad8c2 100644
--- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp
+++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
@@ -2213,7 +2213,7 @@ SDValue SparcTargetLowering::makeAddress(SDValue Op, SelectionDAG &DAG) const {
}
case CodeModel::Large: {
// abs64.
- SDValue Hi = makeHiLoPair(Op, SparcMCExpr::VK_HH, SparcMCExpr::VK_HM, DAG);
+ SDValue Hi = makeHiLoPair(Op, ELF::R_SPARC_HH22, ELF::R_SPARC_HM10, DAG);
Hi = DAG.getNode(ISD::SHL, DL, VT, Hi, DAG.getConstant(32, DL, MVT::i32));
SDValue Lo = makeHiLoPair(Op, SparcMCExpr::VK_HI, SparcMCExpr::VK_LO, DAG);
return DAG.getNode(ISD::ADD, DL, VT, Hi, Lo);
@@ -2251,17 +2251,17 @@ SDValue SparcTargetLowering::LowerGlobalTLSAddress(SDValue Op,
if (model == TLSModel::GeneralDynamic || model == TLSModel::LocalDynamic) {
unsigned HiTF =
- ((model == TLSModel::GeneralDynamic) ? SparcMCExpr::VK_TLS_GD_HI22
- : SparcMCExpr::VK_TLS_LDM_HI22);
+ ((model == TLSModel::GeneralDynamic) ? ELF::R_SPARC_TLS_GD_HI22
+ : ELF::R_SPARC_TLS_LDM_HI22);
unsigned LoTF =
- ((model == TLSModel::GeneralDynamic) ? SparcMCExpr::VK_TLS_GD_LO10
- : SparcMCExpr::VK_TLS_LDM_LO10);
+ ((model == TLSModel::GeneralDynamic) ? ELF::R_SPARC_TLS_GD_LO10
+ : ELF::R_SPARC_TLS_LDM_LO10);
unsigned addTF =
- ((model == TLSModel::GeneralDynamic) ? SparcMCExpr::VK_TLS_GD_ADD
- : SparcMCExpr::VK_TLS_LDM_ADD);
+ ((model == TLSModel::GeneralDynamic) ? ELF::R_SPARC_TLS_GD_ADD
+ : ELF::R_SPARC_TLS_LDM_ADD);
unsigned callTF =
- ((model == TLSModel::GeneralDynamic) ? SparcMCExpr::VK_TLS_GD_CALL
- : SparcMCExpr::VK_TLS_LDM_CALL);
+ ((model == TLSModel::GeneralDynamic) ? ELF::R_SPARC_TLS_GD_CALL
+ : ELF::R_SPARC_TLS_LDM_CALL);
SDValue HiLo = makeHiLoPair(Op, HiTF, LoTF, DAG);
SDValue Base = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, PtrVT);
@@ -2298,18 +2298,18 @@ SDValue SparcTargetLowering::LowerGlobalTLSAddress(SDValue Op,
SDValue Hi =
DAG.getNode(SPISD::Hi, DL, PtrVT,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_LDO_HIX22, DAG));
+ withTargetFlags(Op, ELF::R_SPARC_TLS_LDO_HIX22, DAG));
SDValue Lo =
DAG.getNode(SPISD::Lo, DL, PtrVT,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_LDO_LOX10, DAG));
+ withTargetFlags(Op, ELF::R_SPARC_TLS_LDO_LOX10, DAG));
HiLo = DAG.getNode(ISD::XOR, DL, PtrVT, Hi, Lo);
return DAG.getNode(SPISD::TLS_ADD, DL, PtrVT, Ret, HiLo,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_LDO_ADD, DAG));
+ withTargetFlags(Op, ELF::R_SPARC_TLS_LDO_ADD, DAG));
}
if (model == TLSModel::InitialExec) {
- unsigned ldTF = ((PtrVT == MVT::i64) ? SparcMCExpr::VK_TLS_IE_LDX
- : SparcMCExpr::VK_TLS_IE_LD);
+ unsigned ldTF = ((PtrVT == MVT::i64) ? ELF::R_SPARC_TLS_IE_LDX
+ : ELF::R_SPARC_TLS_IE_LD);
SDValue Base = DAG.getNode(SPISD::GLOBAL_BASE_REG, DL, PtrVT);
@@ -2318,24 +2318,22 @@ SDValue SparcTargetLowering::LowerGlobalTLSAddress(SDValue Op,
MachineFrameInfo &MFI = DAG.getMachineFunction().getFrameInfo();
MFI.setHasCalls(true);
- SDValue TGA = makeHiLoPair(Op, SparcMCExpr::VK_TLS_IE_HI22,
- SparcMCExpr::VK_TLS_IE_LO10, DAG);
+ SDValue TGA = makeHiLoPair(Op, ELF::R_SPARC_TLS_IE_HI22,
+ ELF::R_SPARC_TLS_IE_LO10, DAG);
SDValue Ptr = DAG.getNode(ISD::ADD, DL, PtrVT, Base, TGA);
SDValue Offset = DAG.getNode(SPISD::TLS_LD,
DL, PtrVT, Ptr,
withTargetFlags(Op, ldTF, DAG));
return DAG.getNode(SPISD::TLS_ADD, DL, PtrVT,
DAG.getRegister(SP::G7, PtrVT), Offset,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_IE_ADD, DAG));
+ withTargetFlags(Op, ELF::R_SPARC_TLS_IE_ADD, DAG));
}
assert(model == TLSModel::LocalExec);
- SDValue Hi =
- DAG.getNode(SPISD::Hi, DL, PtrVT,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_LE_HIX22, DAG));
- SDValue Lo =
- DAG.getNode(SPISD::Lo, DL, PtrVT,
- withTargetFlags(Op, SparcMCExpr::VK_TLS_LE_LOX10, DAG));
+ SDValue Hi = DAG.getNode(SPISD::Hi, DL, PtrVT,
+ withTargetFlags(Op, ELF::R_SPARC_TLS_LE_HIX22, DAG));
+ SDValue Lo = DAG.getNode(SPISD::Lo, DL, PtrVT,
+ withTargetFlags(Op, ELF::R_SPARC_TLS_LE_LOX10, DAG));
SDValue Offset = DAG.getNode(ISD::XOR, DL, PtrVT, Hi, Lo);
return DAG.getNode(ISD::ADD, DL, PtrVT,
diff --git a/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp b/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
index 6c1ecccec85cc..668e6eab4e1bc 100644
--- a/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
+++ b/llvm/lib/Target/Sparc/SparcTargetObjectFile.cpp
@@ -9,6 +9,7 @@
#include "SparcTargetObjectFile.h"
#include "MCTargetDesc/SparcMCExpr.h"
#include "llvm/BinaryFormat/Dwarf.h"
+#include "llvm/BinaryFormat/ELF.h"
#include "llvm/CodeGen/MachineModuleInfoImpls.h"
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/Target/TargetMachine.h"
@@ -38,7 +39,7 @@ const MCExpr *SparcELFTargetObjectFile::getTTypeGlobalReference(
}
MCContext &Ctx = getContext();
- return SparcMCExpr::create(SparcMCExpr::VK_R_DISP32,
+ return SparcMCExpr::create(ELF::R_SPARC_DISP32,
MCSymbolRefExpr::create(SSym, Ctx), Ctx);
}
More information about the llvm-commits
mailing list