@@ -339,7 +339,7 @@ class AArch64AsmParser : public MCTargetAsmParser {
339
339
340
340
static bool classifySymbolRef (const MCExpr *Expr,
341
341
AArch64MCExpr::Specifier &ELFSpec,
342
- MCSymbolRefExpr::VariantKind &DarwinRefKind ,
342
+ AArch64MCExpr::Specifier &DarwinSpec ,
343
343
int64_t &Addend);
344
344
};
345
345
@@ -889,16 +889,16 @@ class AArch64Operand : public MCParsedAsmOperand {
889
889
890
890
bool isSymbolicUImm12Offset (const MCExpr *Expr) const {
891
891
AArch64MCExpr::Specifier ELFSpec;
892
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
892
+ AArch64MCExpr::Specifier DarwinSpec ;
893
893
int64_t Addend;
894
- if (!AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinRefKind ,
894
+ if (!AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinSpec ,
895
895
Addend)) {
896
896
// If we don't understand the expression, assume the best and
897
897
// let the fixup and relocation code deal with it.
898
898
return true ;
899
899
}
900
900
901
- if (DarwinRefKind == MCSymbolRefExpr::VK_PAGEOFF ||
901
+ if (DarwinSpec == AArch64MCExpr::M_PAGEOFF ||
902
902
llvm::is_contained (
903
903
{AArch64MCExpr::VK_LO12, AArch64MCExpr::VK_GOT_LO12,
904
904
AArch64MCExpr::VK_GOT_AUTH_LO12, AArch64MCExpr::VK_DTPREL_LO12,
@@ -912,8 +912,8 @@ class AArch64Operand : public MCParsedAsmOperand {
912
912
// size when converted, so there is no "out of range" condition when using
913
913
// @pageoff.
914
914
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 ) {
917
917
// @gotpageoff/@tlvppageoff can only be used directly, not with an addend.
918
918
return Addend == 0 ;
919
919
}
@@ -1006,13 +1006,13 @@ class AArch64Operand : public MCParsedAsmOperand {
1006
1006
}
1007
1007
1008
1008
AArch64MCExpr::Specifier ELFSpec;
1009
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
1009
+ AArch64MCExpr::Specifier DarwinSpec ;
1010
1010
int64_t Addend;
1011
- if (AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinRefKind ,
1011
+ if (AArch64AsmParser::classifySymbolRef (Expr, ELFSpec, DarwinSpec ,
1012
1012
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 ) ||
1016
1016
llvm::is_contained (
1017
1017
{AArch64MCExpr::VK_LO12, AArch64MCExpr::VK_GOT_AUTH_LO12,
1018
1018
AArch64MCExpr::VK_DTPREL_HI12, AArch64MCExpr::VK_DTPREL_LO12,
@@ -1120,13 +1120,13 @@ class AArch64Operand : public MCParsedAsmOperand {
1120
1120
return false ;
1121
1121
1122
1122
AArch64MCExpr::Specifier ELFSpec;
1123
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
1123
+ AArch64MCExpr::Specifier DarwinSpec ;
1124
1124
int64_t Addend;
1125
- if (!AArch64AsmParser::classifySymbolRef (getImm (), ELFSpec, DarwinRefKind ,
1125
+ if (!AArch64AsmParser::classifySymbolRef (getImm (), ELFSpec, DarwinSpec ,
1126
1126
Addend)) {
1127
1127
return false ;
1128
1128
}
1129
- if (DarwinRefKind != MCSymbolRefExpr::VK_None )
1129
+ if (DarwinSpec != AArch64MCExpr::None )
1130
1130
return false ;
1131
1131
1132
1132
return llvm::is_contained (AllowedModifiers, ELFSpec);
@@ -3297,22 +3297,22 @@ ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
3297
3297
return ParseStatus::Failure;
3298
3298
3299
3299
AArch64MCExpr::Specifier ELFSpec;
3300
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
3300
+ AArch64MCExpr::Specifier DarwinSpec ;
3301
3301
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 &&
3304
3304
ELFSpec == AArch64MCExpr::VK_INVALID) {
3305
3305
// No modifier was specified at all; this is the syntax for an ELF basic
3306
3306
// ADRP relocation (unfortunately).
3307
3307
Expr =
3308
3308
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 ) &&
3311
3311
Addend != 0 ) {
3312
3312
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 &&
3316
3316
ELFSpec != AArch64MCExpr::VK_ABS_PAGE_NC &&
3317
3317
ELFSpec != AArch64MCExpr::VK_GOT_PAGE &&
3318
3318
ELFSpec != AArch64MCExpr::VK_GOT_AUTH_PAGE &&
@@ -3351,10 +3351,10 @@ ParseStatus AArch64AsmParser::tryParseAdrLabel(OperandVector &Operands) {
3351
3351
return ParseStatus::Failure;
3352
3352
3353
3353
AArch64MCExpr::Specifier ELFSpec;
3354
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
3354
+ AArch64MCExpr::Specifier DarwinSpec ;
3355
3355
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 &&
3358
3358
ELFSpec == AArch64MCExpr::VK_INVALID) {
3359
3359
// No modifier was specified at all; this is the syntax for an ELF basic
3360
3360
// ADR relocation (unfortunately).
@@ -5817,13 +5817,13 @@ bool AArch64AsmParser::validateInstruction(MCInst &Inst, SMLoc &IDLoc,
5817
5817
if (Inst.getOperand (2 ).isExpr ()) {
5818
5818
const MCExpr *Expr = Inst.getOperand (2 ).getExpr ();
5819
5819
AArch64MCExpr::Specifier ELFSpec;
5820
- MCSymbolRefExpr::VariantKind DarwinRefKind ;
5820
+ AArch64MCExpr::Specifier DarwinSpec ;
5821
5821
int64_t Addend;
5822
- if (classifySymbolRef (Expr, ELFSpec, DarwinRefKind , Addend)) {
5822
+ if (classifySymbolRef (Expr, ELFSpec, DarwinSpec , Addend)) {
5823
5823
5824
5824
// 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 ) &&
5827
5827
Inst.getOpcode () == AArch64::ADDXri)
5828
5828
return false ;
5829
5829
@@ -8192,11 +8192,12 @@ bool AArch64AsmParser::parseAuthExpr(const MCExpr *&Res, SMLoc &EndLoc) {
8192
8192
return false ;
8193
8193
}
8194
8194
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) {
8198
8199
ELFSpec = AArch64MCExpr::VK_INVALID;
8199
- DarwinRefKind = MCSymbolRefExpr::VK_None ;
8200
+ DarwinSpec = AArch64MCExpr::None ;
8200
8201
Addend = 0 ;
8201
8202
8202
8203
if (const AArch64MCExpr *AE = dyn_cast<AArch64MCExpr>(Expr)) {
@@ -8207,7 +8208,7 @@ bool AArch64AsmParser::classifySymbolRef(
8207
8208
const MCSymbolRefExpr *SE = dyn_cast<MCSymbolRefExpr>(Expr);
8208
8209
if (SE) {
8209
8210
// It's a simple symbol reference with no addend.
8210
- DarwinRefKind = SE->getKind ();
8211
+ DarwinSpec = AArch64MCExpr::Specifier ( SE->getKind () );
8211
8212
return true ;
8212
8213
}
8213
8214
@@ -8223,13 +8224,13 @@ bool AArch64AsmParser::classifySymbolRef(
8223
8224
return false ;
8224
8225
8225
8226
if (Res.getSymA ())
8226
- DarwinRefKind = Res.getSymA ()->getKind ();
8227
+ DarwinSpec = AArch64MCExpr::Specifier ( Res.getSymA ()->getKind () );
8227
8228
Addend = Res.getConstant ();
8228
8229
8229
8230
// It's some symbol reference + a constant addend, but really
8230
8231
// shouldn't use both Darwin and ELF syntax.
8231
8232
return ELFSpec == AArch64MCExpr::VK_INVALID ||
8232
- DarwinRefKind == MCSymbolRefExpr::VK_None ;
8233
+ DarwinSpec == AArch64MCExpr::None ;
8233
8234
}
8234
8235
8235
8236
// / Force static initialization.
0 commit comments