Skip to content

Commit a9ba028

Browse files
committed
[𝘀𝗽𝗿] changes to main this commit is based on
Created using spr 1.3.5-bogner [skip ci]
1 parent a2ad656 commit a9ba028

File tree

11 files changed

+81
-107
lines changed

11 files changed

+81
-107
lines changed

bolt/lib/Target/AArch64/AArch64MCPlusBuilder.cpp

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
#include "AArch64MCSymbolizer.h"
1515
#include "MCTargetDesc/AArch64AddressingModes.h"
1616
#include "MCTargetDesc/AArch64FixupKinds.h"
17-
#include "MCTargetDesc/AArch64MCExpr.h"
17+
#include "MCTargetDesc/AArch64MCAsmInfo.h"
1818
#include "MCTargetDesc/AArch64MCTargetDesc.h"
1919
#include "Utils/AArch64BaseInfo.h"
2020
#include "bolt/Core/BinaryBasicBlock.h"
@@ -179,13 +179,10 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
179179

180180
bool equals(const MCSpecifierExpr &A, const MCSpecifierExpr &B,
181181
CompFuncTy Comp) const override {
182-
const auto &AArch64ExprA = cast<AArch64MCExpr>(A);
183-
const auto &AArch64ExprB = cast<AArch64MCExpr>(B);
184-
if (AArch64ExprA.getKind() != AArch64ExprB.getKind())
182+
if (A.getSpecifier() != B.getSpecifier())
185183
return false;
186184

187-
return MCPlusBuilder::equals(*AArch64ExprA.getSubExpr(),
188-
*AArch64ExprB.getSubExpr(), Comp);
185+
return MCPlusBuilder::equals(*A.getSubExpr(), *B.getSubExpr(), Comp);
189186
}
190187

191188
bool shortenInstruction(MCInst &, const MCSubtargetInfo &) const override {
@@ -1084,15 +1081,15 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
10841081

10851082
if (isADR(Inst) || RelType == ELF::R_AARCH64_ADR_PREL_LO21 ||
10861083
RelType == ELF::R_AARCH64_TLSDESC_ADR_PREL21) {
1087-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS, Ctx);
1084+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS, Ctx);
10881085
} else if (isADRP(Inst) || RelType == ELF::R_AARCH64_ADR_PREL_PG_HI21 ||
10891086
RelType == ELF::R_AARCH64_ADR_PREL_PG_HI21_NC ||
10901087
RelType == ELF::R_AARCH64_TLSDESC_ADR_PAGE21 ||
10911088
RelType == ELF::R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 ||
10921089
RelType == ELF::R_AARCH64_ADR_GOT_PAGE) {
10931090
// Never emit a GOT reloc, we handled this in
10941091
// RewriteInstance::readRelocations().
1095-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_PAGE, Ctx);
1092+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_PAGE, Ctx);
10961093
} else {
10971094
switch (RelType) {
10981095
case ELF::R_AARCH64_ADD_ABS_LO12_NC:
@@ -1106,18 +1103,18 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
11061103
case ELF::R_AARCH64_TLSDESC_LD64_LO12:
11071104
case ELF::R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC:
11081105
case ELF::R_AARCH64_TLSLE_ADD_TPREL_LO12_NC:
1109-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_LO12, Ctx);
1106+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_LO12, Ctx);
11101107
case ELF::R_AARCH64_MOVW_UABS_G3:
1111-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_G3, Ctx);
1108+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_G3, Ctx);
11121109
case ELF::R_AARCH64_MOVW_UABS_G2:
11131110
case ELF::R_AARCH64_MOVW_UABS_G2_NC:
1114-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_G2_NC, Ctx);
1111+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_G2_NC, Ctx);
11151112
case ELF::R_AARCH64_MOVW_UABS_G1:
11161113
case ELF::R_AARCH64_MOVW_UABS_G1_NC:
1117-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_G1_NC, Ctx);
1114+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_G1_NC, Ctx);
11181115
case ELF::R_AARCH64_MOVW_UABS_G0:
11191116
case ELF::R_AARCH64_MOVW_UABS_G0_NC:
1120-
return AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_G0_NC, Ctx);
1117+
return MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_G0_NC, Ctx);
11211118
default:
11221119
break;
11231120
}
@@ -1142,7 +1139,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
11421139
}
11431140

11441141
const MCSymbol *getTargetSymbol(const MCExpr *Expr) const override {
1145-
auto *AArchExpr = dyn_cast<AArch64MCExpr>(Expr);
1142+
auto *AArchExpr = dyn_cast<MCSpecifierExpr>(Expr);
11461143
if (AArchExpr && AArchExpr->getSubExpr())
11471144
return getTargetSymbol(AArchExpr->getSubExpr());
11481145

@@ -1162,7 +1159,7 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
11621159
}
11631160

11641161
int64_t getTargetAddend(const MCExpr *Expr) const override {
1165-
auto *AArchExpr = dyn_cast<AArch64MCExpr>(Expr);
1162+
auto *AArchExpr = dyn_cast<MCSpecifierExpr>(Expr);
11661163
if (AArchExpr && AArchExpr->getSubExpr())
11671164
return getTargetAddend(AArchExpr->getSubExpr());
11681165

@@ -2030,39 +2027,35 @@ class AArch64MCPlusBuilder : public MCPlusBuilder {
20302027
MCInst Inst;
20312028
Inst.setOpcode(AArch64::MOVZXi);
20322029
Inst.addOperand(MCOperand::createReg(AArch64::X16));
2033-
Inst.addOperand(MCOperand::createExpr(AArch64MCExpr::create(
2034-
MCSymbolRefExpr::create(Target, MCSymbolRefExpr::VK_None, *Ctx),
2035-
AArch64MCExpr::VK_ABS_G3, *Ctx)));
2030+
Inst.addOperand(MCOperand::createExpr(
2031+
MCSpecifierExpr::create(Target, AArch64MCExpr::VK_ABS_G3, *Ctx)));
20362032
Inst.addOperand(MCOperand::createImm(0x30));
20372033
Seq.emplace_back(Inst);
20382034

20392035
Inst.clear();
20402036
Inst.setOpcode(AArch64::MOVKXi);
20412037
Inst.addOperand(MCOperand::createReg(AArch64::X16));
20422038
Inst.addOperand(MCOperand::createReg(AArch64::X16));
2043-
Inst.addOperand(MCOperand::createExpr(AArch64MCExpr::create(
2044-
MCSymbolRefExpr::create(Target, MCSymbolRefExpr::VK_None, *Ctx),
2045-
AArch64MCExpr::VK_ABS_G2_NC, *Ctx)));
2039+
Inst.addOperand(MCOperand::createExpr(
2040+
MCSpecifierExpr::create(Target, AArch64MCExpr::VK_ABS_G2_NC, *Ctx)));
20462041
Inst.addOperand(MCOperand::createImm(0x20));
20472042
Seq.emplace_back(Inst);
20482043

20492044
Inst.clear();
20502045
Inst.setOpcode(AArch64::MOVKXi);
20512046
Inst.addOperand(MCOperand::createReg(AArch64::X16));
20522047
Inst.addOperand(MCOperand::createReg(AArch64::X16));
2053-
Inst.addOperand(MCOperand::createExpr(AArch64MCExpr::create(
2054-
MCSymbolRefExpr::create(Target, MCSymbolRefExpr::VK_None, *Ctx),
2055-
AArch64MCExpr::VK_ABS_G1_NC, *Ctx)));
2048+
Inst.addOperand(MCOperand::createExpr(
2049+
MCSpecifierExpr::create(Target, AArch64MCExpr::VK_ABS_G1_NC, *Ctx)));
20562050
Inst.addOperand(MCOperand::createImm(0x10));
20572051
Seq.emplace_back(Inst);
20582052

20592053
Inst.clear();
20602054
Inst.setOpcode(AArch64::MOVKXi);
20612055
Inst.addOperand(MCOperand::createReg(AArch64::X16));
20622056
Inst.addOperand(MCOperand::createReg(AArch64::X16));
2063-
Inst.addOperand(MCOperand::createExpr(AArch64MCExpr::create(
2064-
MCSymbolRefExpr::create(Target, MCSymbolRefExpr::VK_None, *Ctx),
2065-
AArch64MCExpr::VK_ABS_G0_NC, *Ctx)));
2057+
Inst.addOperand(MCOperand::createExpr(
2058+
MCSpecifierExpr::create(Target, AArch64MCExpr::VK_ABS_G0_NC, *Ctx)));
20662059
Inst.addOperand(MCOperand::createImm(0));
20672060
Seq.emplace_back(Inst);
20682061

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -910,13 +910,13 @@ void AArch64AsmPrinter::emitHwasanMemaccessSymbols(Module &M) {
910910
// have a chance to save them.
911911
EmitToStreamer(MCInstBuilder(AArch64::ADRP)
912912
.addReg(AArch64::X16)
913-
.addExpr(AArch64MCExpr::create(
913+
.addExpr(MCSpecifierExpr::create(
914914
HwasanTagMismatchRef, AArch64MCExpr::VK_GOT_PAGE,
915915
OutContext)));
916916
EmitToStreamer(MCInstBuilder(AArch64::LDRXui)
917917
.addReg(AArch64::X16)
918918
.addReg(AArch64::X16)
919-
.addExpr(AArch64MCExpr::create(
919+
.addExpr(MCSpecifierExpr::create(
920920
HwasanTagMismatchRef, AArch64MCExpr::VK_GOT_LO12,
921921
OutContext)));
922922
EmitToStreamer(MCInstBuilder(AArch64::BR).addReg(AArch64::X16));

llvm/lib/Target/AArch64/AArch64MCInstLower.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandMachO(const MachineOperand &MO,
171171
AArch64II::MO_PAGEOFF)
172172
Spec = AArch64MCExpr::M_PAGEOFF;
173173
}
174-
// TODO: Migrate to AArch64MCExpr::create like ELF.
174+
// TODO: Migrate to MCSpecifierExpr::create like ELF.
175175
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, Spec, Ctx);
176176
if (!MO.isJTI() && MO.getOffset())
177177
Expr = MCBinaryExpr::createAdd(
@@ -265,7 +265,7 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
265265

266266
AArch64MCExpr::Specifier RefKind;
267267
RefKind = static_cast<AArch64MCExpr::Specifier>(RefFlags);
268-
Expr = AArch64MCExpr::create(Expr, RefKind, Ctx);
268+
Expr = MCSpecifierExpr::create(Expr, RefKind, Ctx);
269269

270270
return MCOperand::createExpr(Expr);
271271
}
@@ -320,7 +320,7 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF(const MachineOperand &MO,
320320
auto RefKind = static_cast<AArch64MCExpr::Specifier>(RefFlags);
321321
assert(RefKind != AArch64MCExpr::VK_INVALID &&
322322
"Invalid relocation requested");
323-
Expr = AArch64MCExpr::create(Expr, RefKind, Ctx);
323+
Expr = MCSpecifierExpr::create(Expr, RefKind, Ctx);
324324

325325
return MCOperand::createExpr(Expr);
326326
}

llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3307,8 +3307,8 @@ ParseStatus AArch64AsmParser::tryParseAdrpLabel(OperandVector &Operands) {
33073307
ELFSpec == AArch64MCExpr::VK_INVALID) {
33083308
// No modifier was specified at all; this is the syntax for an ELF basic
33093309
// ADRP relocation (unfortunately).
3310-
Expr =
3311-
AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS_PAGE, getContext());
3310+
Expr = MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS_PAGE,
3311+
getContext());
33123312
} else if ((DarwinSpec == AArch64MCExpr::M_GOTPAGE ||
33133313
DarwinSpec == AArch64MCExpr::M_TLVPPAGE) &&
33143314
Addend != 0) {
@@ -3361,7 +3361,7 @@ ParseStatus AArch64AsmParser::tryParseAdrLabel(OperandVector &Operands) {
33613361
ELFSpec == AArch64MCExpr::VK_INVALID) {
33623362
// No modifier was specified at all; this is the syntax for an ELF basic
33633363
// ADR relocation (unfortunately).
3364-
Expr = AArch64MCExpr::create(Expr, AArch64MCExpr::VK_ABS, getContext());
3364+
Expr = MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_ABS, getContext());
33653365
} else if (ELFSpec != AArch64MCExpr::VK_GOT_AUTH_PAGE) {
33663366
// For tiny code model, we use :got_auth: operator to fill 21-bit imm of
33673367
// adr. It's not actually GOT entry page address but the GOT address
@@ -4478,7 +4478,7 @@ bool AArch64AsmParser::parseSymbolicImmVal(const MCExpr *&ImmVal) {
44784478
return true;
44794479

44804480
if (HasELFModifier)
4481-
ImmVal = AArch64MCExpr::create(ImmVal, RefKind, getContext());
4481+
ImmVal = MCSpecifierExpr::create(ImmVal, RefKind, getContext());
44824482

44834483
SMLoc EndLoc;
44844484
if (getContext().getAsmInfo()->hasSubsectionsViaSymbols()) {
@@ -7360,7 +7360,7 @@ bool AArch64AsmParser::parseDirectiveTLSDescCall(SMLoc L) {
73607360

73617361
MCSymbol *Sym = getContext().getOrCreateSymbol(Name);
73627362
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, getContext());
7363-
Expr = AArch64MCExpr::create(Expr, AArch64MCExpr::VK_TLSDESC, getContext());
7363+
Expr = MCSpecifierExpr::create(Expr, AArch64MCExpr::VK_TLSDESC, getContext());
73647364

73657365
MCInst Inst;
73667366
Inst.setOpcode(AArch64::TLSDESCCALL);
@@ -8288,7 +8288,7 @@ bool AArch64AsmParser::classifySymbolRef(const MCExpr *Expr,
82888288
DarwinSpec = AArch64MCExpr::None;
82898289
Addend = 0;
82908290

8291-
if (const AArch64MCExpr *AE = dyn_cast<AArch64MCExpr>(Expr)) {
8291+
if (auto *AE = dyn_cast<MCSpecifierExpr>(Expr)) {
82928292
ELFSpec = AE->getSpecifier();
82938293
Expr = AE->getSubExpr();
82948294
}

llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
//===----------------------------------------------------------------------===//
88

99
#include "MCTargetDesc/AArch64FixupKinds.h"
10-
#include "MCTargetDesc/AArch64MCExpr.h"
10+
#include "MCTargetDesc/AArch64MCAsmInfo.h"
1111
#include "MCTargetDesc/AArch64MCTargetDesc.h"
1212
#include "Utils/AArch64BaseInfo.h"
1313
#include "llvm/BinaryFormat/MachO.h"
@@ -221,8 +221,8 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, const MCValue &Target,
221221
case AArch64::fixup_aarch64_movw: {
222222
AArch64MCExpr::Specifier RefKind =
223223
static_cast<AArch64MCExpr::Specifier>(Target.getSpecifier());
224-
if (AArch64MCExpr::getSymbolLoc(RefKind) != AArch64MCExpr::VK_ABS &&
225-
AArch64MCExpr::getSymbolLoc(RefKind) != AArch64MCExpr::VK_SABS) {
224+
if (AArch64::getSymbolLoc(RefKind) != AArch64MCExpr::VK_ABS &&
225+
AArch64::getSymbolLoc(RefKind) != AArch64MCExpr::VK_SABS) {
226226
if (!RefKind) {
227227
// The fixup is an expression
228228
if (SignedValue > 0xFFFF || SignedValue < -0xFFFF)
@@ -250,8 +250,8 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, const MCValue &Target,
250250
return Value;
251251
}
252252

253-
if (AArch64MCExpr::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS) {
254-
switch (AArch64MCExpr::getAddressFrag(RefKind)) {
253+
if (AArch64::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS) {
254+
switch (AArch64::getAddressFrag(RefKind)) {
255255
case AArch64MCExpr::VK_G0:
256256
break;
257257
case AArch64MCExpr::VK_G1:
@@ -268,7 +268,7 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, const MCValue &Target,
268268
}
269269

270270
} else {
271-
switch (AArch64MCExpr::getAddressFrag(RefKind)) {
271+
switch (AArch64::getAddressFrag(RefKind)) {
272272
case AArch64MCExpr::VK_G0:
273273
break;
274274
case AArch64MCExpr::VK_G1:
@@ -287,17 +287,15 @@ static uint64_t adjustFixupValue(const MCFixup &Fixup, const MCValue &Target,
287287

288288
if (RefKind & AArch64MCExpr::VK_NC) {
289289
Value &= 0xFFFF;
290-
}
291-
else if (AArch64MCExpr::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS) {
290+
} else if (AArch64::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS) {
292291
if (SignedValue > 0xFFFF || SignedValue < -0xFFFF)
293292
Ctx.reportError(Fixup.getLoc(), "fixup value out of range");
294293

295294
// Invert the negative immediate because it will feed into a MOVN.
296295
if (SignedValue < 0)
297296
SignedValue = ~SignedValue;
298297
Value = static_cast<uint64_t>(SignedValue);
299-
}
300-
else if (Value > 0xFFFF) {
298+
} else if (Value > 0xFFFF) {
301299
Ctx.reportError(Fixup.getLoc(), "fixup value out of range");
302300
}
303301
return Value;
@@ -424,9 +422,9 @@ void AArch64AsmBackend::applyFixup(const MCFragment &, const MCFixup &Fixup,
424422

425423
if (Fixup.getTargetKind() == FK_Data_8 && TheTriple.isOSBinFormatELF()) {
426424
auto RefKind = static_cast<AArch64MCExpr::Specifier>(Target.getSpecifier());
427-
AArch64MCExpr::Specifier SymLoc = AArch64MCExpr::getSymbolLoc(RefKind);
428-
if (SymLoc == AArch64AuthMCExpr::VK_AUTH ||
429-
SymLoc == AArch64AuthMCExpr::VK_AUTHADDR) {
425+
AArch64MCExpr::Specifier SymLoc = AArch64::getSymbolLoc(RefKind);
426+
if (SymLoc == AArch64MCExpr::VK_AUTH ||
427+
SymLoc == AArch64MCExpr::VK_AUTHADDR) {
430428
const auto *Expr = dyn_cast<AArch64AuthMCExpr>(Fixup.getValue());
431429
if (!Expr) {
432430
getContext().reportError(Fixup.getValue()->getLoc(),
@@ -479,7 +477,7 @@ void AArch64AsmBackend::applyFixup(const MCFragment &, const MCFixup &Fixup,
479477
// handle this more cleanly. This may affect the output of -show-mc-encoding.
480478
AArch64MCExpr::Specifier RefKind =
481479
static_cast<AArch64MCExpr::Specifier>(Target.getSpecifier());
482-
if (AArch64MCExpr::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS ||
480+
if (AArch64::getSymbolLoc(RefKind) == AArch64MCExpr::VK_SABS ||
483481
(!RefKind && Fixup.getTargetKind() == AArch64::fixup_aarch64_movw)) {
484482
// If the immediate is negative, generate MOVN else MOVZ.
485483
// (Bit 30 = 0) ==> MOVN, (Bit 30 = 1) ==> MOVZ.

llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "MCTargetDesc/AArch64FixupKinds.h"
15-
#include "MCTargetDesc/AArch64MCExpr.h"
15+
#include "MCTargetDesc/AArch64MCAsmInfo.h"
1616
#include "MCTargetDesc/AArch64MCTargetDesc.h"
1717
#include "llvm/BinaryFormat/ELF.h"
1818
#include "llvm/MC/MCContext.h"
@@ -88,8 +88,8 @@ unsigned AArch64ELFObjectWriter::getRelocType(const MCFixup &Fixup,
8888
unsigned Kind = Fixup.getTargetKind();
8989
AArch64MCExpr::Specifier RefKind =
9090
static_cast<AArch64MCExpr::Specifier>(Target.getSpecifier());
91-
AArch64MCExpr::Specifier SymLoc = AArch64MCExpr::getSymbolLoc(RefKind);
92-
bool IsNC = AArch64MCExpr::isNotChecked(RefKind);
91+
AArch64MCExpr::Specifier SymLoc = AArch64::getSymbolLoc(RefKind);
92+
bool IsNC = AArch64::isNotChecked(RefKind);
9393

9494
switch (SymLoc) {
9595
case AArch64MCExpr::VK_DTPREL:
@@ -356,8 +356,7 @@ unsigned AArch64ELFObjectWriter::getRelocType(const MCFixup &Fixup,
356356
if ((SymLoc == AArch64MCExpr::VK_GOT ||
357357
SymLoc == AArch64MCExpr::VK_GOT_AUTH) &&
358358
IsNC) {
359-
AArch64MCExpr::Specifier AddressLoc =
360-
AArch64MCExpr::getAddressFrag(RefKind);
359+
AArch64MCExpr::Specifier AddressLoc = AArch64::getAddressFrag(RefKind);
361360
bool IsAuth = (SymLoc == AArch64MCExpr::VK_GOT_AUTH);
362361
if (!IsILP32) {
363362
if (AddressLoc == AArch64MCExpr::VK_LO15)

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,21 @@ struct AArch64MCAsmInfoGNUCOFF : public MCAsmInfoGNUCOFF {
5858
};
5959

6060
namespace AArch64 {
61+
using Specifier = uint16_t;
62+
6163
/// Return the string representation of the ELF relocation specifier
6264
/// (e.g. ":got:", ":lo12:").
6365
StringRef getSpecifierName(const MCSpecifierExpr &Expr);
66+
67+
inline Specifier getSymbolLoc(Specifier S) {
68+
return static_cast<Specifier>(S & AArch64MCExpr::VK_SymLocBits);
69+
}
70+
71+
inline Specifier getAddressFrag(Specifier S) {
72+
return static_cast<Specifier>(S & AArch64MCExpr::VK_AddressFragBits);
73+
}
74+
75+
inline bool isNotChecked(Specifier S) { return S & AArch64MCExpr::VK_NC; }
6476
} // namespace AArch64
6577

6678
} // namespace llvm

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCCodeEmitter.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ AArch64MCCodeEmitter::getAddSubImmOpValue(const MCInst &MI, unsigned OpIdx,
308308

309309
// Set the shift bit of the add instruction for relocation types
310310
// R_AARCH64_TLSLE_ADD_TPREL_HI12 and R_AARCH64_TLSLD_ADD_DTPREL_HI12.
311-
if (const AArch64MCExpr *A64E = dyn_cast<AArch64MCExpr>(Expr)) {
311+
if (auto *A64E = dyn_cast<MCSpecifierExpr>(Expr)) {
312312
AArch64MCExpr::Specifier RefKind = A64E->getSpecifier();
313313
if (RefKind == AArch64MCExpr::VK_TPREL_HI12 ||
314314
RefKind == AArch64MCExpr::VK_DTPREL_HI12 ||
@@ -718,7 +718,7 @@ unsigned AArch64MCCodeEmitter::fixMOVZ(const MCInst &MI, unsigned EncodedValue,
718718
return EncodedValue;
719719

720720
const MCExpr *E = UImm16MO.getExpr();
721-
if (const AArch64MCExpr *A64E = dyn_cast<AArch64MCExpr>(E)) {
721+
if (auto *A64E = dyn_cast<MCSpecifierExpr>(E)) {
722722
switch (A64E->getSpecifier()) {
723723
case AArch64MCExpr::VK_DTPREL_G2:
724724
case AArch64MCExpr::VK_DTPREL_G1:

llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCExpr.cpp

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@
55
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
66
//
77
//===----------------------------------------------------------------------===//
8-
//
9-
// This file contains the implementation of the relocation specifiers
10-
// accepted by the AArch64 architecture (e.g. ":lo12:", ":gottprel_g1:", ...).
11-
//
12-
//===----------------------------------------------------------------------===//
138

149
#include "AArch64MCExpr.h"
1510
#include "AArch64MCAsmInfo.h"
@@ -20,11 +15,6 @@
2015

2116
using namespace llvm;
2217

23-
const AArch64MCExpr *AArch64MCExpr::create(const MCExpr *Expr, Specifier S,
24-
MCContext &Ctx) {
25-
return new (Ctx) AArch64MCExpr(Expr, S);
26-
}
27-
2818
const AArch64AuthMCExpr *AArch64AuthMCExpr::create(const MCExpr *Expr,
2919
uint16_t Discriminator,
3020
AArch64PACKey::ID Key,

0 commit comments

Comments
 (0)