[llvm] 003fa77 - Sparc: Remove VK_LO/VK_HI and replace enum Specifier with uint16_t

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun May 4 23:51:22 PDT 2025


Author: Fangrui Song
Date: 2025-05-04T23:51:17-07:00
New Revision: 003fa7731d81a47c98e9c55f80d509933c9b91f6

URL: https://github.com/llvm/llvm-project/commit/003fa7731d81a47c98e9c55f80d509933c9b91f6
DIFF: https://github.com/llvm/llvm-project/commit/003fa7731d81a47c98e9c55f80d509933c9b91f6.diff

LOG: Sparc: Remove VK_LO/VK_HI and replace enum Specifier with uint16_t

Added: 
    

Modified: 
    llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.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

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
index ae61ff579b882..f0eb403a7c71e 100644
--- a/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
+++ b/llvm/lib/Target/Sparc/AsmParser/SparcAsmParser.cpp
@@ -109,8 +109,7 @@ class SparcAsmParser : public MCTargetAsmParser {
   ParseStatus parseExpression(int64_t &Val);
 
   // Helper function for dealing with %lo / %hi in PIC mode.
-  const SparcMCExpr *adjustPICRelocation(SparcMCExpr::Specifier VK,
-                                         const MCExpr *subExpr);
+  const SparcMCExpr *adjustPICRelocation(uint16_t VK, const MCExpr *subExpr);
 
   // Helper function to see if current token can start an expression.
   bool isPossibleExpression(const AsmToken &Token);
@@ -701,7 +700,7 @@ bool SparcAsmParser::expandSET(MCInst &Inst, SMLoc IDLoc,
   // In either case, start with the 'sethi'.
   if (!IsEffectivelyImm13) {
     MCInst TmpInst;
-    const MCExpr *Expr = adjustPICRelocation(SparcMCExpr::VK_HI, ValExpr);
+    const MCExpr *Expr = adjustPICRelocation(ELF::R_SPARC_HI22, ValExpr);
     TmpInst.setLoc(IDLoc);
     TmpInst.setOpcode(SP::SETHIi);
     TmpInst.addOperand(MCRegOp);
@@ -726,7 +725,7 @@ bool SparcAsmParser::expandSET(MCInst &Inst, SMLoc IDLoc,
     if (IsEffectivelyImm13)
       Expr = ValExpr;
     else
-      Expr = adjustPICRelocation(SparcMCExpr::VK_LO, ValExpr);
+      Expr = adjustPICRelocation(ELF::R_SPARC_LO10, ValExpr);
     TmpInst.setLoc(IDLoc);
     TmpInst.setOpcode(SP::ORri);
     TmpInst.addOperand(MCRegOp);
@@ -766,7 +765,7 @@ bool SparcAsmParser::expandSETSW(MCInst &Inst, SMLoc IDLoc,
     Instructions.push_back(
         MCInstBuilder(SP::SETHIi)
             .addReg(MCRegOp.getReg())
-            .addExpr(adjustPICRelocation(SparcMCExpr::VK_HI, ValExpr)));
+            .addExpr(adjustPICRelocation(ELF::R_SPARC_HI22, ValExpr)));
 
     PrevReg = MCRegOp;
   }
@@ -774,7 +773,7 @@ bool SparcAsmParser::expandSETSW(MCInst &Inst, SMLoc IDLoc,
   // If the immediate has the lower bits set or is small, we need to emit an or.
   if (!NoLowBitsImm || IsSmallImm) {
     const MCExpr *Expr =
-        IsSmallImm ? ValExpr : adjustPICRelocation(SparcMCExpr::VK_LO, ValExpr);
+        IsSmallImm ? ValExpr : adjustPICRelocation(ELF::R_SPARC_LO10, ValExpr);
 
     // or rd, %lo(val), rd
     Instructions.push_back(MCInstBuilder(SP::ORri)
@@ -830,13 +829,13 @@ bool SparcAsmParser::expandSETX(MCInst &Inst, SMLoc IDLoc,
   Instructions.push_back(
       MCInstBuilder(SP::SETHIi)
           .addReg(MCRegOp.getReg())
-          .addExpr(adjustPICRelocation(SparcMCExpr::VK_HI, ValExpr)));
+          .addExpr(adjustPICRelocation(ELF::R_SPARC_HI22, ValExpr)));
   // or    rd, %lo(val), rd
   Instructions.push_back(
       MCInstBuilder(SP::ORri)
           .addReg(MCRegOp.getReg())
           .addReg(MCRegOp.getReg())
-          .addExpr(adjustPICRelocation(SparcMCExpr::VK_LO, ValExpr)));
+          .addExpr(adjustPICRelocation(ELF::R_SPARC_LO10, ValExpr)));
 
   // Small positive immediates can be expressed as a single `sethi`+`or`
   // combination, so we can just return here.
@@ -1166,11 +1165,11 @@ ParseStatus SparcAsmParser::parseTailRelocSym(OperandVector &Operands) {
     return Error(getLoc(), "expected valid identifier for operand modifier");
 
   StringRef Name = getParser().getTok().getIdentifier();
-  SparcMCExpr::Specifier VK = SparcMCExpr::parseSpecifier(Name);
-  if (VK == SparcMCExpr::VK_None)
+  uint16_t RelType = SparcMCExpr::parseSpecifier(Name);
+  if (RelType == 0)
     return Error(getLoc(), "invalid relocation specifier");
 
-  if (!MatchesKind(VK)) {
+  if (!MatchesKind(RelType)) {
     // Did not match the specified set of relocation types, put '%' back.
     getLexer().UnLex(Tok);
     return ParseStatus::NoMatch;
@@ -1185,7 +1184,7 @@ ParseStatus SparcAsmParser::parseTailRelocSym(OperandVector &Operands) {
   if (getParser().parseParenExpression(SubExpr, E))
     return ParseStatus::Failure;
 
-  const MCExpr *Val = adjustPICRelocation(VK, SubExpr);
+  const MCExpr *Val = adjustPICRelocation(RelType, SubExpr);
   Operands.push_back(SparcOperand::CreateTailRelocSym(Val, S, E));
   return ParseStatus::Success;
 }
@@ -1666,29 +1665,28 @@ static bool hasGOTReference(const MCExpr *Expr) {
   return false;
 }
 
-const SparcMCExpr *
-SparcAsmParser::adjustPICRelocation(SparcMCExpr::Specifier VK,
-                                    const MCExpr *subExpr) {
+const SparcMCExpr *SparcAsmParser::adjustPICRelocation(uint16_t RelType,
+                                                       const MCExpr *subExpr) {
   // When in PIC mode, "%lo(...)" and "%hi(...)" behave 
diff erently.
   // If the expression refers contains _GLOBAL_OFFSET_TABLE, it is
   // actually a %pc10 or %pc22 relocation. Otherwise, they are interpreted
   // as %got10 or %got22 relocation.
 
   if (getContext().getObjectFileInfo()->isPositionIndependent()) {
-    switch(VK) {
+    switch (RelType) {
     default: break;
-    case SparcMCExpr::VK_LO:
-      VK = SparcMCExpr::Specifier(
-          hasGOTReference(subExpr) ? ELF::R_SPARC_PC10 : ELF::R_SPARC_GOT10);
+    case ELF::R_SPARC_LO10:
+      RelType =
+          hasGOTReference(subExpr) ? ELF::R_SPARC_PC10 : ELF::R_SPARC_GOT10;
       break;
-    case SparcMCExpr::VK_HI:
-      VK = SparcMCExpr::Specifier(
-          hasGOTReference(subExpr) ? ELF::R_SPARC_PC22 : ELF::R_SPARC_GOT22);
+    case ELF::R_SPARC_HI22:
+      RelType =
+          hasGOTReference(subExpr) ? ELF::R_SPARC_PC22 : ELF::R_SPARC_GOT22;
       break;
     }
   }
 
-  return SparcMCExpr::create(VK, subExpr, getContext());
+  return SparcMCExpr::create(RelType, subExpr, getContext());
 }
 
 bool SparcAsmParser::matchSparcAsmModifiers(const MCExpr *&EVal,
@@ -1699,9 +1697,9 @@ bool SparcAsmParser::matchSparcAsmModifiers(const MCExpr *&EVal,
 
   StringRef name = Tok.getString();
 
-  SparcMCExpr::Specifier VK = SparcMCExpr::parseSpecifier(name);
-  switch (uint16_t(VK)) {
-  case SparcMCExpr::VK_None:
+  auto VK = SparcMCExpr::parseSpecifier(name);
+  switch (VK) {
+  case 0:
     Error(getLoc(), "invalid relocation specifier");
     return false;
 

diff  --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
index 57203fd5c80ae..983fe03449a73 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.cpp
@@ -26,7 +26,7 @@ using namespace llvm;
 
 const SparcMCExpr *SparcMCExpr::create(uint16_t S, const MCExpr *Expr,
                                        MCContext &Ctx) {
-  return new (Ctx) SparcMCExpr(Specifier(S), Expr);
+  return new (Ctx) SparcMCExpr(S, Expr);
 }
 
 void SparcMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
@@ -38,12 +38,12 @@ void SparcMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
     OS << ')';
 }
 
-StringRef SparcMCExpr::getSpecifierName(SparcMCExpr::Specifier S) {
+StringRef SparcMCExpr::getSpecifierName(uint16_t S) {
   // clang-format off
   switch (uint16_t(S)) {
-  case VK_None:          return {};
-  case VK_LO:            return "lo";
-  case VK_HI:            return "hi";
+  case 0:                          return {};
+  case ELF::R_SPARC_LO10:          return "lo";
+  case ELF::R_SPARC_HI22:          return "hi";
   case ELF::R_SPARC_H44:           return "h44";
   case ELF::R_SPARC_M44:           return "m44";
   case ELF::R_SPARC_L44:           return "l44";
@@ -85,62 +85,55 @@ StringRef SparcMCExpr::getSpecifierName(SparcMCExpr::Specifier S) {
   llvm_unreachable("Unhandled SparcMCExpr::Specifier");
 }
 
-SparcMCExpr::Specifier SparcMCExpr::parseSpecifier(StringRef name) {
-  return StringSwitch<SparcMCExpr::Specifier>(name)
-      .Case("lo", VK_LO)
-      .Case("hi", VK_HI)
-      .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", (SparcMCExpr::Specifier)ELF::R_SPARC_HH22)
+uint16_t SparcMCExpr::parseSpecifier(StringRef name) {
+  return StringSwitch<uint16_t>(name)
+      .Case("lo", ELF::R_SPARC_LO10)
+      .Case("hi", ELF::R_SPARC_HI22)
+      .Case("h44", ELF::R_SPARC_H44)
+      .Case("m44", ELF::R_SPARC_M44)
+      .Case("l44", ELF::R_SPARC_L44)
+      .Case("hh", ELF::R_SPARC_HH22)
       // Nonstandard GNU extension
-      .Case("uhi", (SparcMCExpr::Specifier)ELF::R_SPARC_HH22)
-      .Case("hm", (SparcMCExpr::Specifier)ELF::R_SPARC_HM10)
+      .Case("uhi", ELF::R_SPARC_HH22)
+      .Case("hm", 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", (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)
-      .Default(VK_None);
+      .Case("ulo", ELF::R_SPARC_HM10)
+      .Case("lm", ELF::R_SPARC_LM22)
+      .Case("pc22", ELF::R_SPARC_PC22)
+      .Case("pc10", ELF::R_SPARC_PC10)
+      .Case("got22", ELF::R_SPARC_GOT22)
+      .Case("got10", ELF::R_SPARC_GOT10)
+      .Case("got13", ELF::R_SPARC_GOT13)
+      .Case("r_disp32", ELF::R_SPARC_DISP32)
+      .Case("tgd_hi22", ELF::R_SPARC_TLS_GD_HI22)
+      .Case("tgd_lo10", ELF::R_SPARC_TLS_GD_LO10)
+      .Case("tgd_add", ELF::R_SPARC_TLS_GD_ADD)
+      .Case("tgd_call", ELF::R_SPARC_TLS_GD_CALL)
+      .Case("tldm_hi22", ELF::R_SPARC_TLS_LDM_HI22)
+      .Case("tldm_lo10", ELF::R_SPARC_TLS_LDM_LO10)
+      .Case("tldm_add", ELF::R_SPARC_TLS_LDM_ADD)
+      .Case("tldm_call", ELF::R_SPARC_TLS_LDM_CALL)
+      .Case("tldo_hix22", ELF::R_SPARC_TLS_LDO_HIX22)
+      .Case("tldo_lox10", ELF::R_SPARC_TLS_LDO_LOX10)
+      .Case("tldo_add", ELF::R_SPARC_TLS_LDO_ADD)
+      .Case("tie_hi22", ELF::R_SPARC_TLS_IE_HI22)
+      .Case("tie_lo10", ELF::R_SPARC_TLS_IE_LO10)
+      .Case("tie_ld", ELF::R_SPARC_TLS_IE_LD)
+      .Case("tie_ldx", ELF::R_SPARC_TLS_IE_LDX)
+      .Case("tie_add", ELF::R_SPARC_TLS_IE_ADD)
+      .Case("tle_hix22", ELF::R_SPARC_TLS_LE_HIX22)
+      .Case("tle_lox10", ELF::R_SPARC_TLS_LE_LOX10)
+      .Case("hix", ELF::R_SPARC_HIX22)
+      .Case("lox", ELF::R_SPARC_LOX10)
+      .Case("gdop_hix22", ELF::R_SPARC_GOTDATA_OP_HIX22)
+      .Case("gdop_lox10", ELF::R_SPARC_GOTDATA_OP_LOX10)
+      .Case("gdop", ELF::R_SPARC_GOTDATA_OP)
+      .Default(0);
 }
 
 uint16_t SparcMCExpr::getFixupKind() const {
-  // clang-format off
-  switch (specifier) {
-  default:
-    assert(uint16_t(specifier) < FirstTargetFixupKind);
-    return specifier;
-  case VK_LO:            return ELF::R_SPARC_LO10;
-  case VK_HI:            return ELF::R_SPARC_HI22;
-  }
-  // clang-format on
+  assert(uint16_t(specifier) < FirstTargetFixupKind);
+  return specifier;
 }
 
 bool SparcMCExpr::evaluateAsRelocatableImpl(MCValue &Res,

diff  --git a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
index b99e8ce084795..095b115ea5a05 100644
--- a/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
+++ b/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCExpr.h
@@ -21,35 +21,20 @@ namespace llvm {
 
 class StringRef;
 class SparcMCExpr : public MCTargetExpr {
-public:
-  enum Specifier {
-    VK_None,
-    VK_LO = 200, // larger than any relocation type
-    VK_HI,
-  };
-
 private:
-  const Specifier specifier;
+  const uint16_t specifier;
   const MCExpr *Expr;
 
-  explicit SparcMCExpr(Specifier S, const MCExpr *Expr)
+  explicit SparcMCExpr(uint16_t S, const MCExpr *Expr)
       : specifier(S), Expr(Expr) {}
 
 public:
-  /// @name Construction
-  /// @{
-
   static const SparcMCExpr *create(uint16_t S, const MCExpr *Expr,
                                    MCContext &Ctx);
-  /// @}
-  /// @name Accessors
-  /// @{
-
-  Specifier getSpecifier() const { return specifier; }
+  uint16_t getSpecifier() const { return specifier; }
   const MCExpr *getSubExpr() const { return Expr; }
   uint16_t getFixupKind() const;
 
-  /// @}
   void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
   bool evaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAssembler *Asm) const override;
@@ -62,8 +47,8 @@ class SparcMCExpr : public MCTargetExpr {
     return E->getKind() == MCExpr::Target;
   }
 
-  static Specifier parseSpecifier(StringRef name);
-  static StringRef getSpecifierName(Specifier S);
+  static uint16_t parseSpecifier(StringRef name);
+  static StringRef getSpecifierName(uint16_t S);
 };
 
 } // end namespace llvm.

diff  --git a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
index ed8d2fa057bce..3cf26ce209ac9 100644
--- a/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
+++ b/llvm/lib/Target/Sparc/SparcAsmPrinter.cpp
@@ -79,8 +79,7 @@ class SparcAsmPrinter : public AsmPrinter {
 static MCOperand createSparcMCOperand(uint16_t Kind, MCSymbol *Sym,
                                       MCContext &OutContext) {
   const MCSymbolRefExpr *MCSym = MCSymbolRefExpr::create(Sym, OutContext);
-  const SparcMCExpr *expr =
-      SparcMCExpr::create(SparcMCExpr::Specifier(Kind), MCSym, OutContext);
+  const SparcMCExpr *expr = SparcMCExpr::create(Kind, MCSym, OutContext);
   return MCOperand::createExpr(expr);
 }
 static MCOperand createPCXCallOP(MCSymbol *Label,
@@ -99,8 +98,7 @@ static MCOperand createPCXRelExprOp(uint16_t Spec, MCSymbol *GOTLabel,
 
   const MCBinaryExpr *Sub = MCBinaryExpr::createSub(Cur, Start, OutContext);
   const MCBinaryExpr *Add = MCBinaryExpr::createAdd(GOT, Sub, OutContext);
-  const SparcMCExpr *expr =
-      SparcMCExpr::create(SparcMCExpr::Specifier(Spec), Add, OutContext);
+  const SparcMCExpr *expr = SparcMCExpr::create(Spec, Add, OutContext);
   return MCOperand::createExpr(expr);
 }
 
@@ -164,7 +162,7 @@ static void EmitSHL(MCStreamer &OutStreamer,
   EmitBinary(OutStreamer, SP::SLLri, RS1, Imm, RD, STI);
 }
 
-static void EmitHiLo(MCStreamer &OutStreamer, MCSymbol *GOTSym, uint16_t HiKind,
+static void emitHiLo(MCStreamer &OutStreamer, MCSymbol *GOTSym, uint16_t HiKind,
                      uint16_t LoKind, MCOperand &RD, MCContext &OutContext,
                      const MCSubtargetInfo &STI) {
   MCOperand hi = createSparcMCOperand(HiKind, GOTSym, OutContext);
@@ -192,11 +190,11 @@ void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
     default:
       llvm_unreachable("Unsupported absolute code model");
     case CodeModel::Small:
-      EmitHiLo(*OutStreamer, GOTLabel, SparcMCExpr::VK_HI, SparcMCExpr::VK_LO,
+      emitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_HI22, ELF::R_SPARC_LO10,
                MCRegOP, OutContext, STI);
       break;
     case CodeModel::Medium: {
-      EmitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_H44, ELF::R_SPARC_M44,
+      emitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_H44, ELF::R_SPARC_M44,
                MCRegOP, OutContext, STI);
       MCOperand imm = MCOperand::createExpr(MCConstantExpr::create(12,
                                                                    OutContext));
@@ -207,14 +205,14 @@ void SparcAsmPrinter::LowerGETPCXAndEmitMCInsts(const MachineInstr *MI,
       break;
     }
     case CodeModel::Large: {
-      EmitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_HH22, ELF::R_SPARC_HM10,
+      emitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_HH22, ELF::R_SPARC_HM10,
                MCRegOP, OutContext, STI);
       MCOperand imm = MCOperand::createExpr(MCConstantExpr::create(32,
                                                                    OutContext));
       EmitSHL(*OutStreamer, MCRegOP, imm, MCRegOP, STI);
       // Use register %o7 to load the lower 32 bits.
       MCOperand RegO7 = MCOperand::createReg(SP::O7);
-      EmitHiLo(*OutStreamer, GOTLabel, SparcMCExpr::VK_HI, SparcMCExpr::VK_LO,
+      emitHiLo(*OutStreamer, GOTLabel, ELF::R_SPARC_HI22, ELF::R_SPARC_LO10,
                RegO7, OutContext, STI);
       EmitADD(*OutStreamer, MCRegOP, RegO7, MCRegOP, STI);
     }
@@ -277,7 +275,7 @@ MCOperand SparcAsmPrinter::lowerOperand(const MachineOperand &MO) const {
   case MachineOperand::MO_BlockAddress:
   case MachineOperand::MO_ExternalSymbol:
   case MachineOperand::MO_ConstantPoolIndex: {
-    SparcMCExpr::Specifier Kind = (SparcMCExpr::Specifier)MO.getTargetFlags();
+    auto RelType = MO.getTargetFlags();
     const MCSymbol *Symbol = nullptr;
     switch (MO.getType()) {
     default:
@@ -300,8 +298,8 @@ MCOperand SparcAsmPrinter::lowerOperand(const MachineOperand &MO) const {
     }
 
     const MCExpr *expr = MCSymbolRefExpr::create(Symbol, OutContext);
-    if (Kind)
-      expr = SparcMCExpr::create(Kind, expr, OutContext);
+    if (RelType)
+      expr = SparcMCExpr::create(RelType, expr, OutContext);
     return MCOperand::createExpr(expr);
   }
 
@@ -371,7 +369,7 @@ void SparcAsmPrinter::printOperand(const MachineInstr *MI, int opNum,
                                    raw_ostream &O) {
   const DataLayout &DL = getDataLayout();
   const MachineOperand &MO = MI->getOperand (opNum);
-  SparcMCExpr::Specifier TF = (SparcMCExpr::Specifier)MO.getTargetFlags();
+  auto TF = MO.getTargetFlags();
 
   StringRef Spec = SparcMCExpr::getSpecifierName(TF);
   O << Spec;

diff  --git a/llvm/lib/Target/Sparc/SparcISelLowering.cpp b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
index 1be39a98ad8c2..0dae245c228aa 100644
--- a/llvm/lib/Target/Sparc/SparcISelLowering.cpp
+++ b/llvm/lib/Target/Sparc/SparcISelLowering.cpp
@@ -2202,7 +2202,7 @@ SDValue SparcTargetLowering::makeAddress(SDValue Op, SelectionDAG &DAG) const {
     llvm_unreachable("Unsupported absolute code model");
   case CodeModel::Small:
     // abs32.
-    return makeHiLoPair(Op, SparcMCExpr::VK_HI, SparcMCExpr::VK_LO, DAG);
+    return makeHiLoPair(Op, ELF::R_SPARC_HI22, ELF::R_SPARC_LO10, DAG);
   case CodeModel::Medium: {
     // abs44.
     SDValue H44 = makeHiLoPair(Op, ELF::R_SPARC_H44, ELF::R_SPARC_M44, DAG);
@@ -2215,7 +2215,7 @@ SDValue SparcTargetLowering::makeAddress(SDValue Op, SelectionDAG &DAG) const {
     // abs64.
     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);
+    SDValue Lo = makeHiLoPair(Op, ELF::R_SPARC_HI22, ELF::R_SPARC_LO10, DAG);
     return DAG.getNode(ISD::ADD, DL, VT, Hi, Lo);
   }
   }


        


More information about the llvm-commits mailing list