@@ -339,7 +339,7 @@ class AArch64AsmParser : public MCTargetAsmParser {
339339
340340 static bool classifySymbolRef (const MCExpr *Expr,
341341 AArch64MCExpr::Specifier &ELFSpec,
342- MCSymbolRefExpr::VariantKind &DarwinRefKind ,
342+ AArch64MCExpr::Specifier &DarwinSpec ,
343343 int64_t &Addend);
344344};
345345
@@ -889,16 +889,16 @@ class AArch64Operand : public MCParsedAsmOperand {
889889
890890 bool isSymbolicUImm12Offset (const MCExpr *Expr) const {
891891 AArch64MCExpr::Specifier ELFSpec;
892- MCSymbolRefExpr::VariantKind DarwinRefKind ;
892+ AArch64MCExpr::Specifier DarwinSpec ;
893893 int64_t Addend;
894- if (!AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinRefKind ,
894+ if (!AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinSpec ,
895895 Addend)) {
896896 // If we don't understand the expression, assume the best and
897897 // let the fixup and relocation code deal with it.
898898 return true ;
899899 }
900900
901- if (DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
901+ if (DarwinSpec == AArch64MCExpr::M_PAGEOFF ||
902902 llvm::is_contained (
903903 {AArch64MCExpr::VK_LO12, AArch64MCExpr::VK_GOT_LO12,
904904 AArch64MCExpr::VK_GOT_AUTH_LO12, AArch64MCExpr::VK_DTPREL_LO12,
@@ -912,8 +912,8 @@ class AArch64Operand : public MCParsedAsmOperand {
912912 // size when converted, so there is no "out of range" condition when using
913913 // @pageoff.
914914 return true ;
915- } else if (DarwinRefKind == MCSymbolRefExpr::VK_GOTPAGEOFF ||
916- DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGEOFF ) {
915+ } else if (DarwinSpec == AArch64MCExpr::M_GOTPAGEOFF ||
916+ DarwinSpec == AArch64MCExpr::M_TLVPPAGEOFF ) {
917917 // @gotpageoff/@tlvppageoff can only be used directly, not with an addend.
918918 return Addend == 0 ;
919919 }
@@ -1006,13 +1006,13 @@ class AArch64Operand : public MCParsedAsmOperand {
10061006 }
10071007
10081008 AArch64MCExpr::Specifier ELFSpec;
1009- MCSymbolRefExpr::VariantKind DarwinRefKind ;
1009+ AArch64MCExpr::Specifier DarwinSpec ;
10101010 int64_t Addend;
1011- if (AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinRefKind ,
1011+ if (AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinSpec ,
10121012 Addend)) {
1013- return DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
1014- DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGEOFF ||
1015- (DarwinRefKind == MCSymbolRefExpr::VK_GOTPAGEOFF && Addend == 0 ) ||
1013+ return DarwinSpec == AArch64MCExpr::M_PAGEOFF ||
1014+ DarwinSpec == AArch64MCExpr::M_TLVPPAGEOFF ||
1015+ (DarwinSpec == AArch64MCExpr::M_GOTPAGEOFF && Addend == 0 ) ||
10161016 llvm::is_contained (
10171017 {AArch64MCExpr::VK_LO12, AArch64MCExpr::VK_GOT_AUTH_LO12,
10181018 AArch64MCExpr::VK_DTPREL_HI12, AArch64MCExpr::VK_DTPREL_LO12,
@@ -1120,13 +1120,13 @@ class AArch64Operand : public MCParsedAsmOperand {
11201120 return false ;
11211121
11221122 AArch64MCExpr::Specifier ELFSpec;
1123- MCSymbolRefExpr::VariantKind DarwinRefKind ;
1123+ AArch64MCExpr::Specifier DarwinSpec ;
11241124 int64_t Addend;
1125- if (!AArch64AsmParser::classifySymbolRef (getImm (), ELFSpec, DarwinRefKind ,
1125+ if (!AArch64AsmParser::classifySymbolRef (getImm (), ELFSpec, DarwinSpec ,
11261126 Addend)) {
11271127 return false ;
11281128 }
1129- if (DarwinRefKind != MCSymbolRefExpr::VK_None )
1129+ if (DarwinSpec != AArch64MCExpr::None )
11301130 return false ;
11311131
11321132 return llvm::is_contained (AllowedModifiers, ELFSpec);
@@ -3297,22 +3297,22 @@ ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
32973297 return ParseStatus::Failure;
32983298
32993299 AArch64MCExpr::Specifier ELFSpec;
3300- MCSymbolRefExpr::VariantKind DarwinRefKind ;
3300+ AArch64MCExpr::Specifier DarwinSpec ;
33013301 int64_t Addend;
3302- if (classifySymbolRef (Expr, ELFSpec, DarwinRefKind , Addend)) {
3303- if (DarwinRefKind == MCSymbolRefExpr::VK_None &&
3302+ if (classifySymbolRef (Expr, ELFSpec, DarwinSpec , Addend)) {
3303+ if (DarwinSpec == AArch64MCExpr::None &&
33043304 ELFSpec == AArch64MCExpr::VK_INVALID) {
33053305 // No modifier was specified at all; this is the syntax for an ELF basic
33063306 // ADRP relocation (unfortunately).
33073307 Expr =
33083308 AArch64MCExpr::create (Expr, AArch64MCExpr::VK_ABS_PAGE, getContext ());
3309- } else if ((DarwinRefKind == MCSymbolRefExpr::VK_GOTPAGE ||
3310- DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGE ) &&
3309+ } else if ((DarwinSpec == AArch64MCExpr::M_GOTPAGE ||
3310+ DarwinSpec == AArch64MCExpr::M_TLVPPAGE ) &&
33113311 Addend != 0 ) {
33123312 return Error (S, " gotpage label reference not allowed an addend" );
3313- } else if (DarwinRefKind != MCSymbolRefExpr::VK_PAGE &&
3314- DarwinRefKind != MCSymbolRefExpr::VK_GOTPAGE &&
3315- DarwinRefKind != MCSymbolRefExpr::VK_TLVPPAGE &&
3313+ } else if (DarwinSpec != AArch64MCExpr::M_PAGE &&
3314+ DarwinSpec != AArch64MCExpr::M_GOTPAGE &&
3315+ DarwinSpec != AArch64MCExpr::M_TLVPPAGE &&
33163316 ELFSpec != AArch64MCExpr::VK_ABS_PAGE_NC &&
33173317 ELFSpec != AArch64MCExpr::VK_GOT_PAGE &&
33183318 ELFSpec != AArch64MCExpr::VK_GOT_AUTH_PAGE &&
@@ -3351,10 +3351,10 @@ ParseStatus AArch64AsmParser::tryParseAdrLabel(OperandVector &Operands) {
33513351 return ParseStatus::Failure;
33523352
33533353 AArch64MCExpr::Specifier ELFSpec;
3354- MCSymbolRefExpr::VariantKind DarwinRefKind ;
3354+ AArch64MCExpr::Specifier DarwinSpec ;
33553355 int64_t Addend;
3356- if (classifySymbolRef (Expr, ELFSpec, DarwinRefKind , Addend)) {
3357- if (DarwinRefKind == MCSymbolRefExpr::VK_None &&
3356+ if (classifySymbolRef (Expr, ELFSpec, DarwinSpec , Addend)) {
3357+ if (DarwinSpec == AArch64MCExpr::None &&
33583358 ELFSpec == AArch64MCExpr::VK_INVALID) {
33593359 // No modifier was specified at all; this is the syntax for an ELF basic
33603360 // ADR relocation (unfortunately).
@@ -5817,13 +5817,13 @@ bool AArch64AsmParser::validateInstruction(MCInst &Inst, SMLoc &IDLoc,
58175817 if (Inst.getOperand (2 ).isExpr ()) {
58185818 const MCExpr *Expr = Inst.getOperand (2 ).getExpr ();
58195819 AArch64MCExpr::Specifier ELFSpec;
5820- MCSymbolRefExpr::VariantKind DarwinRefKind ;
5820+ AArch64MCExpr::Specifier DarwinSpec ;
58215821 int64_t Addend;
5822- if (classifySymbolRef (Expr, ELFSpec, DarwinRefKind , Addend)) {
5822+ if (classifySymbolRef (Expr, ELFSpec, DarwinSpec , Addend)) {
58235823
58245824 // Only allow these with ADDXri.
5825- if ((DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
5826- DarwinRefKind == MCSymbolRefExpr::VK_TLVPPAGEOFF ) &&
5825+ if ((DarwinSpec == AArch64MCExpr::M_PAGEOFF ||
5826+ DarwinSpec == AArch64MCExpr::M_TLVPPAGEOFF ) &&
58275827 Inst.getOpcode () == AArch64::ADDXri)
58285828 return false ;
58295829
@@ -8192,11 +8192,12 @@ bool AArch64AsmParser::parseAuthExpr(const MCExpr *&Res, SMLoc &EndLoc) {
81928192 return false ;
81938193}
81948194
8195- bool AArch64AsmParser::classifySymbolRef (
8196- const MCExpr *Expr, AArch64MCExpr::Specifier &ELFSpec,
8197- MCSymbolRefExpr::VariantKind &DarwinRefKind, int64_t &Addend) {
8195+ bool AArch64AsmParser::classifySymbolRef (const MCExpr *Expr,
8196+ AArch64MCExpr::Specifier &ELFSpec,
8197+ AArch64MCExpr::Specifier &DarwinSpec,
8198+ int64_t &Addend) {
81988199 ELFSpec = AArch64MCExpr::VK_INVALID;
8199- DarwinRefKind = MCSymbolRefExpr::VK_None ;
8200+ DarwinSpec = AArch64MCExpr::None ;
82008201 Addend = 0 ;
82018202
82028203 if (const AArch64MCExpr *AE = dyn_cast<AArch64MCExpr>(Expr)) {
@@ -8207,7 +8208,7 @@ bool AArch64AsmParser::classifySymbolRef(
82078208 const MCSymbolRefExpr *SE = dyn_cast<MCSymbolRefExpr>(Expr);
82088209 if (SE) {
82098210 // It's a simple symbol reference with no addend.
8210- DarwinRefKind = SE->getKind ();
8211+ DarwinSpec = AArch64MCExpr::Specifier ( SE->getKind () );
82118212 return true ;
82128213 }
82138214
@@ -8223,13 +8224,13 @@ bool AArch64AsmParser::classifySymbolRef(
82238224 return false ;
82248225
82258226 if (Res.getSymA ())
8226- DarwinRefKind = Res.getSymA ()->getKind ();
8227+ DarwinSpec = AArch64MCExpr::Specifier ( Res.getSymA ()->getKind () );
82278228 Addend = Res.getConstant ();
82288229
82298230 // It's some symbol reference + a constant addend, but really
82308231 // shouldn't use both Darwin and ELF syntax.
82318232 return ELFSpec == AArch64MCExpr::VK_INVALID ||
8232- DarwinRefKind == MCSymbolRefExpr::VK_None ;
8233+ DarwinSpec == AArch64MCExpr::None ;
82338234}
82348235
82358236// / Force static initialization.
0 commit comments