@@ -26,7 +26,7 @@ using namespace llvm;
2626
2727const SparcMCExpr *SparcMCExpr::create (uint16_t S, const MCExpr *Expr,
2828 MCContext &Ctx) {
29- return new (Ctx) SparcMCExpr (Specifier (S) , Expr);
29+ return new (Ctx) SparcMCExpr (S , Expr);
3030}
3131
3232void SparcMCExpr::printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const {
@@ -38,12 +38,12 @@ void SparcMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
3838 OS << ' )' ;
3939}
4040
41- StringRef SparcMCExpr::getSpecifierName (SparcMCExpr::Specifier S) {
41+ StringRef SparcMCExpr::getSpecifierName (uint16_t S) {
4242 // clang-format off
4343 switch (uint16_t (S)) {
44- case VK_None: return {};
45- case VK_LO: return " lo" ;
46- case VK_HI: return " hi" ;
44+ case 0 : return {};
45+ case ELF::R_SPARC_LO10: return " lo" ;
46+ case ELF::R_SPARC_HI22: return " hi" ;
4747 case ELF::R_SPARC_H44: return " h44" ;
4848 case ELF::R_SPARC_M44: return " m44" ;
4949 case ELF::R_SPARC_L44: return " l44" ;
@@ -85,62 +85,55 @@ StringRef SparcMCExpr::getSpecifierName(SparcMCExpr::Specifier S) {
8585 llvm_unreachable (" Unhandled SparcMCExpr::Specifier" );
8686}
8787
88- SparcMCExpr::Specifier SparcMCExpr::parseSpecifier (StringRef name) {
89- return StringSwitch<SparcMCExpr::Specifier >(name)
90- .Case (" lo" , VK_LO )
91- .Case (" hi" , VK_HI )
92- .Case (" h44" , (SparcMCExpr::Specifier) ELF::R_SPARC_H44)
93- .Case (" m44" , (SparcMCExpr::Specifier) ELF::R_SPARC_M44)
94- .Case (" l44" , (SparcMCExpr::Specifier) ELF::R_SPARC_L44)
95- .Case (" hh" , (SparcMCExpr::Specifier) ELF::R_SPARC_HH22)
88+ uint16_t SparcMCExpr::parseSpecifier (StringRef name) {
89+ return StringSwitch<uint16_t >(name)
90+ .Case (" lo" , ELF::R_SPARC_LO10 )
91+ .Case (" hi" , ELF::R_SPARC_HI22 )
92+ .Case (" h44" , ELF::R_SPARC_H44)
93+ .Case (" m44" , ELF::R_SPARC_M44)
94+ .Case (" l44" , ELF::R_SPARC_L44)
95+ .Case (" hh" , ELF::R_SPARC_HH22)
9696 // Nonstandard GNU extension
97- .Case (" uhi" , (SparcMCExpr::Specifier) ELF::R_SPARC_HH22)
98- .Case (" hm" , (SparcMCExpr::Specifier) ELF::R_SPARC_HM10)
97+ .Case (" uhi" , ELF::R_SPARC_HH22)
98+ .Case (" hm" , ELF::R_SPARC_HM10)
9999 // Nonstandard GNU extension
100- .Case (" ulo" , (SparcMCExpr::Specifier) ELF::R_SPARC_HM10)
101- .Case (" lm" , (SparcMCExpr::Specifier) ELF::R_SPARC_LM22)
102- .Case (" pc22" , (SparcMCExpr::Specifier) ELF::R_SPARC_PC22)
103- .Case (" pc10" , (SparcMCExpr::Specifier) ELF::R_SPARC_PC10)
104- .Case (" got22" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOT22)
105- .Case (" got10" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOT10)
106- .Case (" got13" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOT13)
107- .Case (" r_disp32" , (SparcMCExpr::Specifier) ELF::R_SPARC_DISP32)
108- .Case (" tgd_hi22" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_GD_HI22)
109- .Case (" tgd_lo10" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_GD_LO10)
110- .Case (" tgd_add" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_GD_ADD)
111- .Case (" tgd_call" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_GD_CALL)
112- .Case (" tldm_hi22" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDM_HI22)
113- .Case (" tldm_lo10" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDM_LO10)
114- .Case (" tldm_add" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDM_ADD)
115- .Case (" tldm_call" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDM_CALL)
116- .Case (" tldo_hix22" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDO_HIX22)
117- .Case (" tldo_lox10" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDO_LOX10)
118- .Case (" tldo_add" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LDO_ADD)
119- .Case (" tie_hi22" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_IE_HI22)
120- .Case (" tie_lo10" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_IE_LO10)
121- .Case (" tie_ld" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_IE_LD)
122- .Case (" tie_ldx" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_IE_LDX)
123- .Case (" tie_add" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_IE_ADD)
124- .Case (" tle_hix22" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LE_HIX22)
125- .Case (" tle_lox10" , (SparcMCExpr::Specifier) ELF::R_SPARC_TLS_LE_LOX10)
126- .Case (" hix" , (SparcMCExpr::Specifier) ELF::R_SPARC_HIX22)
127- .Case (" lox" , (SparcMCExpr::Specifier) ELF::R_SPARC_LOX10)
128- .Case (" gdop_hix22" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOTDATA_OP_HIX22)
129- .Case (" gdop_lox10" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOTDATA_OP_LOX10)
130- .Case (" gdop" , (SparcMCExpr::Specifier) ELF::R_SPARC_GOTDATA_OP)
131- .Default (VK_None );
100+ .Case (" ulo" , ELF::R_SPARC_HM10)
101+ .Case (" lm" , ELF::R_SPARC_LM22)
102+ .Case (" pc22" , ELF::R_SPARC_PC22)
103+ .Case (" pc10" , ELF::R_SPARC_PC10)
104+ .Case (" got22" , ELF::R_SPARC_GOT22)
105+ .Case (" got10" , ELF::R_SPARC_GOT10)
106+ .Case (" got13" , ELF::R_SPARC_GOT13)
107+ .Case (" r_disp32" , ELF::R_SPARC_DISP32)
108+ .Case (" tgd_hi22" , ELF::R_SPARC_TLS_GD_HI22)
109+ .Case (" tgd_lo10" , ELF::R_SPARC_TLS_GD_LO10)
110+ .Case (" tgd_add" , ELF::R_SPARC_TLS_GD_ADD)
111+ .Case (" tgd_call" , ELF::R_SPARC_TLS_GD_CALL)
112+ .Case (" tldm_hi22" , ELF::R_SPARC_TLS_LDM_HI22)
113+ .Case (" tldm_lo10" , ELF::R_SPARC_TLS_LDM_LO10)
114+ .Case (" tldm_add" , ELF::R_SPARC_TLS_LDM_ADD)
115+ .Case (" tldm_call" , ELF::R_SPARC_TLS_LDM_CALL)
116+ .Case (" tldo_hix22" , ELF::R_SPARC_TLS_LDO_HIX22)
117+ .Case (" tldo_lox10" , ELF::R_SPARC_TLS_LDO_LOX10)
118+ .Case (" tldo_add" , ELF::R_SPARC_TLS_LDO_ADD)
119+ .Case (" tie_hi22" , ELF::R_SPARC_TLS_IE_HI22)
120+ .Case (" tie_lo10" , ELF::R_SPARC_TLS_IE_LO10)
121+ .Case (" tie_ld" , ELF::R_SPARC_TLS_IE_LD)
122+ .Case (" tie_ldx" , ELF::R_SPARC_TLS_IE_LDX)
123+ .Case (" tie_add" , ELF::R_SPARC_TLS_IE_ADD)
124+ .Case (" tle_hix22" , ELF::R_SPARC_TLS_LE_HIX22)
125+ .Case (" tle_lox10" , ELF::R_SPARC_TLS_LE_LOX10)
126+ .Case (" hix" , ELF::R_SPARC_HIX22)
127+ .Case (" lox" , ELF::R_SPARC_LOX10)
128+ .Case (" gdop_hix22" , ELF::R_SPARC_GOTDATA_OP_HIX22)
129+ .Case (" gdop_lox10" , ELF::R_SPARC_GOTDATA_OP_LOX10)
130+ .Case (" gdop" , ELF::R_SPARC_GOTDATA_OP)
131+ .Default (0 );
132132}
133133
134134uint16_t SparcMCExpr::getFixupKind () const {
135- // clang-format off
136- switch (specifier) {
137- default :
138- assert (uint16_t (specifier) < FirstTargetFixupKind);
139- return specifier;
140- case VK_LO: return ELF::R_SPARC_LO10;
141- case VK_HI: return ELF::R_SPARC_HI22;
142- }
143- // clang-format on
135+ assert (uint16_t (specifier) < FirstTargetFixupKind);
136+ return specifier;
144137}
145138
146139bool SparcMCExpr::evaluateAsRelocatableImpl (MCValue &Res,
0 commit comments