@@ -455,7 +455,7 @@ class ARMAsmParser : public MCTargetAsmParser {
455455 bool parseMemory (OperandVector &);
456456 bool parseOperand (OperandVector &, StringRef Mnemonic);
457457 bool parseImmExpr (int64_t &Out);
458- bool parsePrefix (ARMMCExpr::VariantKind &RefKind );
458+ bool parsePrefix (ARMMCExpr::Specifier & );
459459 bool parseMemRegOffsetShift (ARM_AM::ShiftOpc &ShiftType,
460460 unsigned &ShiftAmount);
461461 bool parseLiteralValues (unsigned Size, SMLoc L);
@@ -1328,8 +1328,8 @@ class ARMOperand : public MCParsedAsmOperand {
13281328 // We want to avoid matching :upper16: and :lower16: as we want these
13291329 // expressions to match in isImm0_65535Expr()
13301330 const ARMMCExpr *ARM16Expr = dyn_cast<ARMMCExpr>(getImm ());
1331- return (!ARM16Expr || (ARM16Expr->getKind () != ARMMCExpr::VK_ARM_HI16 &&
1332- ARM16Expr->getKind () != ARMMCExpr::VK_ARM_LO16 ));
1331+ return (!ARM16Expr || (ARM16Expr->getSpecifier () != ARMMCExpr::VK_HI16 &&
1332+ ARM16Expr->getSpecifier () != ARMMCExpr::VK_LO16 ));
13331333 }
13341334 if (!isImm ()) return false ;
13351335 const MCConstantExpr *CE = dyn_cast<MCConstantExpr>(getImm ());
@@ -6425,16 +6425,15 @@ bool ARMAsmParser::parseOperand(OperandVector &Operands, StringRef Mnemonic) {
64256425 // ":upper8_15:", expression prefixes
64266426 // FIXME: Check it's an expression prefix,
64276427 // e.g. (FOO - :lower16:BAR) isn't legal.
6428- ARMMCExpr::VariantKind RefKind ;
6429- if (parsePrefix (RefKind ))
6428+ ARMMCExpr::Specifier Spec ;
6429+ if (parsePrefix (Spec ))
64306430 return true ;
64316431
64326432 const MCExpr *SubExprVal;
64336433 if (getParser ().parseExpression (SubExprVal))
64346434 return true ;
64356435
6436- const MCExpr *ExprVal = ARMMCExpr::create (RefKind, SubExprVal,
6437- getContext ());
6436+ const MCExpr *ExprVal = ARMMCExpr::create (Spec, SubExprVal, getContext ());
64386437 E = SMLoc::getFromPointer (Parser.getTok ().getLoc ().getPointer () - 1 );
64396438 Operands.push_back (ARMOperand::CreateImm (ExprVal, S, E, *this ));
64406439 return false ;
@@ -6473,9 +6472,9 @@ bool ARMAsmParser::parseImmExpr(int64_t &Out) {
64736472// parsePrefix - Parse ARM 16-bit relocations expression prefixes, i.e.
64746473// :lower16: and :upper16: and Thumb 8-bit relocation expression prefixes, i.e.
64756474// :upper8_15:, :upper0_7:, :lower8_15: and :lower0_7:
6476- bool ARMAsmParser::parsePrefix (ARMMCExpr::VariantKind &RefKind ) {
6475+ bool ARMAsmParser::parsePrefix (ARMMCExpr::Specifier &Spec ) {
64776476 MCAsmParser &Parser = getParser ();
6478- RefKind = ARMMCExpr::VK_ARM_None ;
6477+ Spec = ARMMCExpr::VK_None ;
64796478
64806479 // consume an optional '#' (GNU compatibility)
64816480 if (getLexer ().is (AsmToken::Hash))
@@ -6497,15 +6496,15 @@ bool ARMAsmParser::parsePrefix(ARMMCExpr::VariantKind &RefKind) {
64976496 };
64986497 static const struct PrefixEntry {
64996498 const char *Spelling;
6500- ARMMCExpr::VariantKind VariantKind ;
6499+ ARMMCExpr::Specifier Spec ;
65016500 uint8_t SupportedFormats;
65026501 } PrefixEntries[] = {
6503- {" upper16" , ARMMCExpr::VK_ARM_HI16 , COFF | ELF | MACHO},
6504- {" lower16" , ARMMCExpr::VK_ARM_LO16 , COFF | ELF | MACHO},
6505- {" upper8_15" , ARMMCExpr::VK_ARM_HI_8_15 , ELF},
6506- {" upper0_7" , ARMMCExpr::VK_ARM_HI_0_7 , ELF},
6507- {" lower8_15" , ARMMCExpr::VK_ARM_LO_8_15 , ELF},
6508- {" lower0_7" , ARMMCExpr::VK_ARM_LO_0_7 , ELF},
6502+ {" upper16" , ARMMCExpr::VK_HI16 , COFF | ELF | MACHO},
6503+ {" lower16" , ARMMCExpr::VK_LO16 , COFF | ELF | MACHO},
6504+ {" upper8_15" , ARMMCExpr::VK_HI_8_15 , ELF},
6505+ {" upper0_7" , ARMMCExpr::VK_HI_0_7 , ELF},
6506+ {" lower8_15" , ARMMCExpr::VK_LO_8_15 , ELF},
6507+ {" lower0_7" , ARMMCExpr::VK_LO_0_7 , ELF},
65096508 };
65106509
65116510 StringRef IDVal = Parser.getTok ().getIdentifier ();
@@ -6547,7 +6546,7 @@ bool ARMAsmParser::parsePrefix(ARMMCExpr::VariantKind &RefKind) {
65476546 return true ;
65486547 }
65496548
6550- RefKind = Prefix->VariantKind ;
6549+ Spec = Prefix->Spec ;
65516550 Parser.Lex ();
65526551
65536552 if (getLexer ().isNot (AsmToken::Colon)) {
@@ -6882,10 +6881,10 @@ static bool isThumbI8Relocation(MCParsedAsmOperand &MCOp) {
68826881 if (!E)
68836882 return false ;
68846883 const ARMMCExpr *ARM16Expr = dyn_cast<ARMMCExpr>(E);
6885- if (ARM16Expr && (ARM16Expr->getKind () == ARMMCExpr::VK_ARM_HI_8_15 ||
6886- ARM16Expr->getKind () == ARMMCExpr::VK_ARM_HI_0_7 ||
6887- ARM16Expr->getKind () == ARMMCExpr::VK_ARM_LO_8_15 ||
6888- ARM16Expr->getKind () == ARMMCExpr::VK_ARM_LO_0_7 ))
6884+ if (ARM16Expr && (ARM16Expr->getSpecifier () == ARMMCExpr::VK_HI_8_15 ||
6885+ ARM16Expr->getSpecifier () == ARMMCExpr::VK_HI_0_7 ||
6886+ ARM16Expr->getSpecifier () == ARMMCExpr::VK_LO_8_15 ||
6887+ ARM16Expr->getSpecifier () == ARMMCExpr::VK_LO_0_7 ))
68896888 return true ;
68906889 return false ;
68916890}
@@ -8289,8 +8288,8 @@ bool ARMAsmParser::validateInstruction(MCInst &Inst,
82898288 const MCExpr *E = dyn_cast<MCExpr>(Op.getImm ());
82908289 if (!E) break ;
82918290 const ARMMCExpr *ARM16Expr = dyn_cast<ARMMCExpr>(E);
8292- if (!ARM16Expr || (ARM16Expr->getKind () != ARMMCExpr::VK_ARM_HI16 &&
8293- ARM16Expr->getKind () != ARMMCExpr::VK_ARM_LO16 ))
8291+ if (!ARM16Expr || (ARM16Expr->getSpecifier () != ARMMCExpr::VK_HI16 &&
8292+ ARM16Expr->getSpecifier () != ARMMCExpr::VK_LO16 ))
82948293 return Error (
82958294 Op.getStartLoc (),
82968295 " immediate expression for mov requires :lower16: or :upper16" );
0 commit comments