15
15
16
16
namespace llvm {
17
17
18
- class SystemZMCExpr : public MCTargetExpr {
18
+ class SystemZMCExpr : public MCSpecifierExpr {
19
19
public:
20
- enum Specifier : uint8_t {
20
+ using Specifier = Spec;
21
+ enum {
21
22
VK_None,
22
23
23
24
VK_DTPOFF = MCSymbolRefExpr::FirstTargetSpecifier,
@@ -37,40 +38,19 @@ class SystemZMCExpr : public MCTargetExpr {
37
38
};
38
39
39
40
private:
40
- const Specifier specifier;
41
- const MCExpr *Expr;
42
-
43
- explicit SystemZMCExpr (Specifier S, const MCExpr *Expr)
44
- : specifier(S), Expr(Expr) {}
41
+ explicit SystemZMCExpr (const MCExpr *Expr, Spec S)
42
+ : MCSpecifierExpr(Expr, S) {}
45
43
46
44
public:
47
- static const SystemZMCExpr *create (Specifier Kind, const MCExpr *Expr,
45
+ static const SystemZMCExpr *create (Spec Kind, const MCExpr *Expr,
48
46
MCContext &Ctx);
49
47
50
- Specifier getSpecifier () const { return specifier; }
51
- const MCExpr *getSubExpr () const { return Expr; }
52
-
53
48
StringRef getVariantKindName () const ;
54
49
55
50
void printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const override ;
56
51
bool evaluateAsRelocatableImpl (MCValue &Res,
57
52
const MCAssembler *Asm) const override ;
58
- void visitUsedExpr (MCStreamer &Streamer) const override {
59
- Streamer.visitUsedExpr (*getSubExpr ());
60
- }
61
- MCFragment *findAssociatedFragment () const override {
62
- return getSubExpr ()->findAssociatedFragment ();
63
- }
64
-
65
- static bool classof (const MCExpr *E) {
66
- return E->getKind () == MCExpr::Target;
67
- }
68
53
};
69
-
70
- static inline SystemZMCExpr::Specifier
71
- getSpecifier (const MCSymbolRefExpr *SRE) {
72
- return SystemZMCExpr::Specifier (SRE->getKind ());
73
- }
74
54
} // end namespace llvm
75
55
76
56
#endif
0 commit comments