Skip to content

Commit e9dc719

Browse files
committed
[𝘀𝗽𝗿] initial version
Created using spr 1.3.5-bogner
2 parents a2ad656 + a9ba028 commit e9dc719

15 files changed

+606
-649
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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_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, AArch64::S_ABS_G0_NC, *Ctx)));
20662059
Inst.addOperand(MCOperand::createImm(0));
20672060
Seq.emplace_back(Inst);
20682061

llvm/lib/Target/AArch64/AArch64AsmPrinter.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "AArch64TargetObjectFile.h"
2020
#include "MCTargetDesc/AArch64AddressingModes.h"
2121
#include "MCTargetDesc/AArch64InstPrinter.h"
22-
#include "MCTargetDesc/AArch64MCExpr.h"
22+
#include "MCTargetDesc/AArch64MCAsmInfo.h"
2323
#include "MCTargetDesc/AArch64MCTargetDesc.h"
2424
#include "MCTargetDesc/AArch64TargetStreamer.h"
2525
#include "TargetInfo/AArch64TargetInfo.h"
@@ -910,15 +910,15 @@ 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(
914-
HwasanTagMismatchRef, AArch64MCExpr::VK_GOT_PAGE,
915-
OutContext)));
913+
.addExpr(MCSpecifierExpr::create(HwasanTagMismatchRef,
914+
AArch64::S_GOT_PAGE,
915+
OutContext)));
916916
EmitToStreamer(MCInstBuilder(AArch64::LDRXui)
917917
.addReg(AArch64::X16)
918918
.addReg(AArch64::X16)
919-
.addExpr(AArch64MCExpr::create(
920-
HwasanTagMismatchRef, AArch64MCExpr::VK_GOT_LO12,
921-
OutContext)));
919+
.addExpr(MCSpecifierExpr::create(HwasanTagMismatchRef,
920+
AArch64::S_GOT_LO12,
921+
OutContext)));
922922
EmitToStreamer(MCInstBuilder(AArch64::BR).addReg(AArch64::X16));
923923
}
924924
}

llvm/lib/Target/AArch64/AArch64MCInstLower.cpp

Lines changed: 40 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
#include "AArch64MCInstLower.h"
1515
#include "AArch64MachineFunctionInfo.h"
16-
#include "MCTargetDesc/AArch64MCExpr.h"
16+
#include "MCTargetDesc/AArch64MCAsmInfo.h"
1717
#include "Utils/AArch64BaseInfo.h"
1818
#include "llvm/CodeGen/AsmPrinter.h"
1919
#include "llvm/CodeGen/MachineBasicBlock.h"
@@ -147,31 +147,31 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandMachO(const MachineOperand &MO,
147147
MCSymbol *Sym) const {
148148
// FIXME: We would like an efficient form for this, so we don't have to do a
149149
// lot of extra uniquing.
150-
auto Spec = AArch64MCExpr::None;
150+
auto Spec = AArch64::S_None;
151151
if ((MO.getTargetFlags() & AArch64II::MO_GOT) != 0) {
152152
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
153-
Spec = AArch64MCExpr::M_GOTPAGE;
153+
Spec = AArch64::S_MACHO_GOTPAGE;
154154
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
155155
AArch64II::MO_PAGEOFF)
156-
Spec = AArch64MCExpr::M_GOTPAGEOFF;
156+
Spec = AArch64::S_MACHO_GOTPAGEOFF;
157157
else
158158
llvm_unreachable("Unexpected target flags with MO_GOT on GV operand");
159159
} else if ((MO.getTargetFlags() & AArch64II::MO_TLS) != 0) {
160160
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
161-
Spec = AArch64MCExpr::M_TLVPPAGE;
161+
Spec = AArch64::S_MACHO_TLVPPAGE;
162162
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
163163
AArch64II::MO_PAGEOFF)
164-
Spec = AArch64MCExpr::M_TLVPPAGEOFF;
164+
Spec = AArch64::S_MACHO_TLVPPAGEOFF;
165165
else
166166
llvm_unreachable("Unexpected target flags with MO_TLS on GV operand");
167167
} else {
168168
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
169-
Spec = AArch64MCExpr::M_PAGE;
169+
Spec = AArch64::S_MACHO_PAGE;
170170
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
171171
AArch64II::MO_PAGEOFF)
172-
Spec = AArch64MCExpr::M_PAGEOFF;
172+
Spec = AArch64::S_MACHO_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(
@@ -186,8 +186,8 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
186186
if (MO.getTargetFlags() & AArch64II::MO_GOT) {
187187
const MachineFunction *MF = MO.getParent()->getParent()->getParent();
188188
RefFlags |= (MF->getInfo<AArch64FunctionInfo>()->hasELFSignedGOT()
189-
? AArch64MCExpr::VK_GOT_AUTH
190-
: AArch64MCExpr::VK_GOT);
189+
? AArch64::S_GOT_AUTH
190+
: AArch64::S_GOT);
191191
} else if (MO.getTargetFlags() & AArch64II::MO_TLS) {
192192
TLSModel::Model Model;
193193
if (MO.isGlobal()) {
@@ -211,13 +211,13 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
211211
}
212212
switch (Model) {
213213
case TLSModel::InitialExec:
214-
RefFlags |= AArch64MCExpr::VK_GOTTPREL;
214+
RefFlags |= AArch64::S_GOTTPREL;
215215
break;
216216
case TLSModel::LocalExec:
217-
RefFlags |= AArch64MCExpr::VK_TPREL;
217+
RefFlags |= AArch64::S_TPREL;
218218
break;
219219
case TLSModel::LocalDynamic:
220-
RefFlags |= AArch64MCExpr::VK_DTPREL;
220+
RefFlags |= AArch64::S_DTPREL;
221221
break;
222222
case TLSModel::GeneralDynamic: {
223223
// TODO: it's probably better to introduce MO_TLS_AUTH or smth and avoid
@@ -226,37 +226,37 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandELF(const MachineOperand &MO,
226226
// making the field wider breaks static assertions.
227227
const MachineFunction *MF = MO.getParent()->getParent()->getParent();
228228
RefFlags |= MF->getInfo<AArch64FunctionInfo>()->hasELFSignedGOT()
229-
? AArch64MCExpr::VK_TLSDESC_AUTH
230-
: AArch64MCExpr::VK_TLSDESC;
229+
? AArch64::S_TLSDESC_AUTH
230+
: AArch64::S_TLSDESC;
231231
break;
232232
}
233233
}
234234
} else if (MO.getTargetFlags() & AArch64II::MO_PREL) {
235-
RefFlags |= AArch64MCExpr::VK_PREL;
235+
RefFlags |= AArch64::S_PREL;
236236
} else {
237237
// No modifier means this is a generic reference, classified as absolute for
238238
// the cases where it matters (:abs_g0: etc).
239-
RefFlags |= AArch64MCExpr::VK_ABS;
239+
RefFlags |= AArch64::S_ABS;
240240
}
241241

242242
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
243-
RefFlags |= AArch64MCExpr::VK_PAGE;
243+
RefFlags |= AArch64::S_PAGE;
244244
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
245245
AArch64II::MO_PAGEOFF)
246-
RefFlags |= AArch64MCExpr::VK_PAGEOFF;
246+
RefFlags |= AArch64::S_PAGEOFF;
247247
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G3)
248-
RefFlags |= AArch64MCExpr::VK_G3;
248+
RefFlags |= AArch64::S_G3;
249249
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G2)
250-
RefFlags |= AArch64MCExpr::VK_G2;
250+
RefFlags |= AArch64::S_G2;
251251
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G1)
252-
RefFlags |= AArch64MCExpr::VK_G1;
252+
RefFlags |= AArch64::S_G1;
253253
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G0)
254-
RefFlags |= AArch64MCExpr::VK_G0;
254+
RefFlags |= AArch64::S_G0;
255255
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_HI12)
256-
RefFlags |= AArch64MCExpr::VK_HI12;
256+
RefFlags |= AArch64::S_HI12;
257257

258258
if (MO.getTargetFlags() & AArch64II::MO_NC)
259-
RefFlags |= AArch64MCExpr::VK_NC;
259+
RefFlags |= AArch64::S_NC;
260260

261261
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, Ctx);
262262
if (!MO.isJTI() && MO.getOffset())
@@ -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
}
@@ -276,31 +276,31 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF(const MachineOperand &MO,
276276

277277
if (MO.getTargetFlags() & AArch64II::MO_TLS) {
278278
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGEOFF)
279-
RefFlags |= AArch64MCExpr::VK_SECREL_LO12;
279+
RefFlags |= AArch64::S_SECREL_LO12;
280280
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
281281
AArch64II::MO_HI12)
282-
RefFlags |= AArch64MCExpr::VK_SECREL_HI12;
282+
RefFlags |= AArch64::S_SECREL_HI12;
283283

284284
} else if (MO.getTargetFlags() & AArch64II::MO_S) {
285-
RefFlags |= AArch64MCExpr::VK_SABS;
285+
RefFlags |= AArch64::S_SABS;
286286
} else {
287-
RefFlags |= AArch64MCExpr::VK_ABS;
287+
RefFlags |= AArch64::S_ABS;
288288

289289
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_PAGE)
290-
RefFlags |= AArch64MCExpr::VK_PAGE;
290+
RefFlags |= AArch64::S_PAGE;
291291
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) ==
292292
AArch64II::MO_PAGEOFF)
293-
RefFlags |= AArch64MCExpr::VK_PAGEOFF | AArch64MCExpr::VK_NC;
293+
RefFlags |= AArch64::S_PAGEOFF | AArch64::S_NC;
294294
}
295295

296296
if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G3)
297-
RefFlags |= AArch64MCExpr::VK_G3;
297+
RefFlags |= AArch64::S_G3;
298298
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G2)
299-
RefFlags |= AArch64MCExpr::VK_G2;
299+
RefFlags |= AArch64::S_G2;
300300
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G1)
301-
RefFlags |= AArch64MCExpr::VK_G1;
301+
RefFlags |= AArch64::S_G1;
302302
else if ((MO.getTargetFlags() & AArch64II::MO_FRAGMENT) == AArch64II::MO_G0)
303-
RefFlags |= AArch64MCExpr::VK_G0;
303+
RefFlags |= AArch64::S_G0;
304304

305305
// FIXME: Currently we only set VK_NC for MO_G3/MO_G2/MO_G1/MO_G0. This is
306306
// because setting VK_NC for others would mean setting their respective
@@ -309,7 +309,7 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF(const MachineOperand &MO,
309309
auto MOFrag = (MO.getTargetFlags() & AArch64II::MO_FRAGMENT);
310310
if (MOFrag == AArch64II::MO_G3 || MOFrag == AArch64II::MO_G2 ||
311311
MOFrag == AArch64II::MO_G1 || MOFrag == AArch64II::MO_G0)
312-
RefFlags |= AArch64MCExpr::VK_NC;
312+
RefFlags |= AArch64::S_NC;
313313
}
314314

315315
const MCExpr *Expr = MCSymbolRefExpr::create(Sym, Ctx);
@@ -318,9 +318,8 @@ MCOperand AArch64MCInstLower::lowerSymbolOperandCOFF(const MachineOperand &MO,
318318
Expr, MCConstantExpr::create(MO.getOffset(), Ctx), Ctx);
319319

320320
auto RefKind = static_cast<AArch64MCExpr::Specifier>(RefFlags);
321-
assert(RefKind != AArch64MCExpr::VK_INVALID &&
322-
"Invalid relocation requested");
323-
Expr = AArch64MCExpr::create(Expr, RefKind, Ctx);
321+
assert(RefKind != AArch64::S_INVALID && "Invalid relocation requested");
322+
Expr = MCSpecifierExpr::create(Expr, RefKind, Ctx);
324323

325324
return MCOperand::createExpr(Expr);
326325
}

0 commit comments

Comments
 (0)