[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