15
15
#include " llvm/MC/MCContext.h"
16
16
#include " llvm/MC/MCExpr.h"
17
17
#include " llvm/MC/MCStreamer.h"
18
- #include " llvm/MC/MCValue.h"
19
18
#include " llvm/Support/CommandLine.h"
20
19
#include " llvm/TargetParser/Triple.h"
21
20
using namespace llvm ;
@@ -54,80 +53,6 @@ const MCAsmInfo::AtSpecifier MachOAtSpecifiers[] = {
54
53
{AArch64MCExpr::M_TLVPPAGEOFF, " TLVPPAGEOFF" },
55
54
};
56
55
57
- StringRef AArch64::getSpecifierName (const MCSpecifierExpr &Expr) {
58
- // clang-format off
59
- switch (static_cast <uint32_t >(Expr.getSpecifier ())) {
60
- case AArch64MCExpr::VK_CALL: return " " ;
61
- case AArch64MCExpr::VK_LO12: return " :lo12:" ;
62
- case AArch64MCExpr::VK_ABS_G3: return " :abs_g3:" ;
63
- case AArch64MCExpr::VK_ABS_G2: return " :abs_g2:" ;
64
- case AArch64MCExpr::VK_ABS_G2_S: return " :abs_g2_s:" ;
65
- case AArch64MCExpr::VK_ABS_G2_NC: return " :abs_g2_nc:" ;
66
- case AArch64MCExpr::VK_ABS_G1: return " :abs_g1:" ;
67
- case AArch64MCExpr::VK_ABS_G1_S: return " :abs_g1_s:" ;
68
- case AArch64MCExpr::VK_ABS_G1_NC: return " :abs_g1_nc:" ;
69
- case AArch64MCExpr::VK_ABS_G0: return " :abs_g0:" ;
70
- case AArch64MCExpr::VK_ABS_G0_S: return " :abs_g0_s:" ;
71
- case AArch64MCExpr::VK_ABS_G0_NC: return " :abs_g0_nc:" ;
72
- case AArch64MCExpr::VK_PREL_G3: return " :prel_g3:" ;
73
- case AArch64MCExpr::VK_PREL_G2: return " :prel_g2:" ;
74
- case AArch64MCExpr::VK_PREL_G2_NC: return " :prel_g2_nc:" ;
75
- case AArch64MCExpr::VK_PREL_G1: return " :prel_g1:" ;
76
- case AArch64MCExpr::VK_PREL_G1_NC: return " :prel_g1_nc:" ;
77
- case AArch64MCExpr::VK_PREL_G0: return " :prel_g0:" ;
78
- case AArch64MCExpr::VK_PREL_G0_NC: return " :prel_g0_nc:" ;
79
- case AArch64MCExpr::VK_DTPREL_G2: return " :dtprel_g2:" ;
80
- case AArch64MCExpr::VK_DTPREL_G1: return " :dtprel_g1:" ;
81
- case AArch64MCExpr::VK_DTPREL_G1_NC: return " :dtprel_g1_nc:" ;
82
- case AArch64MCExpr::VK_DTPREL_G0: return " :dtprel_g0:" ;
83
- case AArch64MCExpr::VK_DTPREL_G0_NC: return " :dtprel_g0_nc:" ;
84
- case AArch64MCExpr::VK_DTPREL_HI12: return " :dtprel_hi12:" ;
85
- case AArch64MCExpr::VK_DTPREL_LO12: return " :dtprel_lo12:" ;
86
- case AArch64MCExpr::VK_DTPREL_LO12_NC: return " :dtprel_lo12_nc:" ;
87
- case AArch64MCExpr::VK_TPREL_G2: return " :tprel_g2:" ;
88
- case AArch64MCExpr::VK_TPREL_G1: return " :tprel_g1:" ;
89
- case AArch64MCExpr::VK_TPREL_G1_NC: return " :tprel_g1_nc:" ;
90
- case AArch64MCExpr::VK_TPREL_G0: return " :tprel_g0:" ;
91
- case AArch64MCExpr::VK_TPREL_G0_NC: return " :tprel_g0_nc:" ;
92
- case AArch64MCExpr::VK_TPREL_HI12: return " :tprel_hi12:" ;
93
- case AArch64MCExpr::VK_TPREL_LO12: return " :tprel_lo12:" ;
94
- case AArch64MCExpr::VK_TPREL_LO12_NC: return " :tprel_lo12_nc:" ;
95
- case AArch64MCExpr::VK_TLSDESC_LO12: return " :tlsdesc_lo12:" ;
96
- case AArch64MCExpr::VK_TLSDESC_AUTH_LO12: return " :tlsdesc_auth_lo12:" ;
97
- case AArch64MCExpr::VK_ABS_PAGE: return " " ;
98
- case AArch64MCExpr::VK_ABS_PAGE_NC: return " :pg_hi21_nc:" ;
99
- case AArch64MCExpr::VK_GOT: return " :got:" ;
100
- case AArch64MCExpr::VK_GOT_PAGE: return " :got:" ;
101
- case AArch64MCExpr::VK_GOT_PAGE_LO15: return " :gotpage_lo15:" ;
102
- case AArch64MCExpr::VK_GOT_LO12: return " :got_lo12:" ;
103
- case AArch64MCExpr::VK_GOTTPREL: return " :gottprel:" ;
104
- case AArch64MCExpr::VK_GOTTPREL_PAGE: return " :gottprel:" ;
105
- case AArch64MCExpr::VK_GOTTPREL_LO12_NC: return " :gottprel_lo12:" ;
106
- case AArch64MCExpr::VK_GOTTPREL_G1: return " :gottprel_g1:" ;
107
- case AArch64MCExpr::VK_GOTTPREL_G0_NC: return " :gottprel_g0_nc:" ;
108
- case AArch64MCExpr::VK_TLSDESC: return " " ;
109
- case AArch64MCExpr::VK_TLSDESC_PAGE: return " :tlsdesc:" ;
110
- case AArch64MCExpr::VK_TLSDESC_AUTH: return " " ;
111
- case AArch64MCExpr::VK_TLSDESC_AUTH_PAGE: return " :tlsdesc_auth:" ;
112
- case AArch64MCExpr::VK_SECREL_LO12: return " :secrel_lo12:" ;
113
- case AArch64MCExpr::VK_SECREL_HI12: return " :secrel_hi12:" ;
114
- case AArch64MCExpr::VK_GOT_AUTH: return " :got_auth:" ;
115
- case AArch64MCExpr::VK_GOT_AUTH_PAGE: return " :got_auth:" ;
116
- case AArch64MCExpr::VK_GOT_AUTH_LO12: return " :got_auth_lo12:" ;
117
- default :
118
- llvm_unreachable (" Invalid relocation specifier" );
119
- }
120
- // clang-format on
121
- }
122
-
123
- static bool evaluate (const MCSpecifierExpr &Expr, MCValue &Res,
124
- const MCAssembler *Asm) {
125
- if (!Expr.getSubExpr ()->evaluateAsRelocatable (Res, Asm))
126
- return false ;
127
- Res.setSpecifier (Expr.getSpecifier ());
128
- return true ;
129
- }
130
-
131
56
AArch64MCAsmInfoDarwin::AArch64MCAsmInfoDarwin (bool IsILP32) {
132
57
// We prefer NEON instructions to be printed in the short, Apple-specific
133
58
// form when targeting Darwin.
@@ -166,34 +91,6 @@ const MCExpr *AArch64MCAsmInfoDarwin::getExprForPersonalitySymbol(
166
91
return MCBinaryExpr::createSub (Res, PC, Context);
167
92
}
168
93
169
- void AArch64AuthMCExpr::print (raw_ostream &OS, const MCAsmInfo *MAI) const {
170
- bool WrapSubExprInParens = !isa<MCSymbolRefExpr>(getSubExpr ());
171
- if (WrapSubExprInParens)
172
- OS << ' (' ;
173
- getSubExpr ()->print (OS, MAI);
174
- if (WrapSubExprInParens)
175
- OS << ' )' ;
176
-
177
- OS << " @AUTH(" << AArch64PACKeyIDToString (Key) << ' ,' << Discriminator;
178
- if (hasAddressDiversity ())
179
- OS << " ,addr" ;
180
- OS << ' )' ;
181
- }
182
-
183
- void AArch64MCAsmInfoDarwin::printSpecifierExpr (
184
- raw_ostream &OS, const MCSpecifierExpr &Expr) const {
185
- if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
186
- return AE->print (OS, this );
187
- // FIXME: tryParseAdrLabel should not use VK_ABS for Mach-O
188
- assert (Expr.getSpecifier () == AArch64MCExpr::VK_ABS);
189
- printExpr (OS, *Expr.getSubExpr ());
190
- }
191
-
192
- bool AArch64MCAsmInfoDarwin::evaluateAsRelocatableImpl (
193
- const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
194
- return evaluate (Expr, Res, Asm);
195
- }
196
-
197
94
AArch64MCAsmInfoELF::AArch64MCAsmInfoELF (const Triple &T) {
198
95
if (T.getArch () == Triple::aarch64_be)
199
96
IsLittleEndian = false ;
@@ -230,19 +127,6 @@ AArch64MCAsmInfoELF::AArch64MCAsmInfoELF(const Triple &T) {
230
127
initializeVariantKinds (ELFAtSpecifiers);
231
128
}
232
129
233
- void AArch64MCAsmInfoELF::printSpecifierExpr (
234
- raw_ostream &OS, const MCSpecifierExpr &Expr) const {
235
- if (auto *AE = dyn_cast<AArch64AuthMCExpr>(&Expr))
236
- return AE->print (OS, this );
237
- OS << AArch64::getSpecifierName (Expr);
238
- printExpr (OS, *Expr.getSubExpr ());
239
- }
240
-
241
- bool AArch64MCAsmInfoELF::evaluateAsRelocatableImpl (
242
- const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
243
- return evaluate (Expr, Res, Asm);
244
- }
245
-
246
130
AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF () {
247
131
PrivateGlobalPrefix = " .L" ;
248
132
PrivateLabelPrefix = " .L" ;
@@ -262,17 +146,6 @@ AArch64MCAsmInfoMicrosoftCOFF::AArch64MCAsmInfoMicrosoftCOFF() {
262
146
initializeVariantKinds (COFFAtSpecifiers);
263
147
}
264
148
265
- void AArch64MCAsmInfoMicrosoftCOFF::printSpecifierExpr (
266
- raw_ostream &OS, const MCSpecifierExpr &Expr) const {
267
- OS << AArch64::getSpecifierName (Expr);
268
- printExpr (OS, *Expr.getSubExpr ());
269
- }
270
-
271
- bool AArch64MCAsmInfoMicrosoftCOFF::evaluateAsRelocatableImpl (
272
- const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
273
- return evaluate (Expr, Res, Asm);
274
- }
275
-
276
149
AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF () {
277
150
PrivateGlobalPrefix = " .L" ;
278
151
PrivateLabelPrefix = " .L" ;
@@ -291,14 +164,3 @@ AArch64MCAsmInfoGNUCOFF::AArch64MCAsmInfoGNUCOFF() {
291
164
292
165
initializeVariantKinds (COFFAtSpecifiers);
293
166
}
294
-
295
- void AArch64MCAsmInfoGNUCOFF::printSpecifierExpr (
296
- raw_ostream &OS, const MCSpecifierExpr &Expr) const {
297
- OS << AArch64::getSpecifierName (Expr);
298
- printExpr (OS, *Expr.getSubExpr ());
299
- }
300
-
301
- bool AArch64MCAsmInfoGNUCOFF::evaluateAsRelocatableImpl (
302
- const MCSpecifierExpr &Expr, MCValue &Res, const MCAssembler *Asm) const {
303
- return evaluate (Expr, Res, Asm);
304
- }
0 commit comments