1515
1616namespace llvm {
1717
18- class SystemZMCExpr : public MCTargetExpr {
18+ class SystemZMCExpr : public MCSpecifierExpr {
1919public:
20- enum Specifier : uint8_t {
20+ using Specifier = Spec;
21+ enum {
2122 VK_None,
2223
2324 VK_DTPOFF = MCSymbolRefExpr::FirstTargetSpecifier,
@@ -37,40 +38,19 @@ class SystemZMCExpr : public MCTargetExpr {
3738 };
3839
3940private:
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) {}
4543
4644public:
47- static const SystemZMCExpr *create (Specifier Kind, const MCExpr *Expr,
45+ static const SystemZMCExpr *create (Spec Kind, const MCExpr *Expr,
4846 MCContext &Ctx);
4947
50- Specifier getSpecifier () const { return specifier; }
51- const MCExpr *getSubExpr () const { return Expr; }
52-
5348 StringRef getVariantKindName () const ;
5449
5550 void printImpl (raw_ostream &OS, const MCAsmInfo *MAI) const override ;
5651 bool evaluateAsRelocatableImpl (MCValue &Res,
5752 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- }
6853};
69-
70- static inline SystemZMCExpr::Specifier
71- getSpecifier (const MCSymbolRefExpr *SRE) {
72- return SystemZMCExpr::Specifier (SRE->getKind ());
73- }
7454} // end namespace llvm
7555
7656#endif
0 commit comments