[llvm] ef328e9 - MipsMCExpr: Migrate to MCSpecifierExpr

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Sun Jun 8 00:20:54 PDT 2025


Author: Fangrui Song
Date: 2025-06-08T00:20:49-07:00
New Revision: ef328e97db61309e01ee10bf3bb430e1d1b4a7ed

URL: https://github.com/llvm/llvm-project/commit/ef328e97db61309e01ee10bf3bb430e1d1b4a7ed
DIFF: https://github.com/llvm/llvm-project/commit/ef328e97db61309e01ee10bf3bb430e1d1b4a7ed.diff

LOG: MipsMCExpr: Migrate to MCSpecifierExpr

Added: 
    

Modified: 
    llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
    llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
    llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
    llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 40552cbf8e4ff..76bbdef7ae22d 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -1305,7 +1305,7 @@ class MipsOperand : public MCParsedAsmOperand {
       return false;
     if (!getMemBase()->isGPRAsmReg())
       return false;
-    if (isa<MCTargetExpr>(getMemOff()) ||
+    if (isa<MCSpecifierExpr>(getMemOff()) ||
         (isConstantMemOff() &&
          isShiftedInt<Bits, ShiftAmount>(getConstantMemOff())))
       return true;
@@ -1320,7 +1320,7 @@ class MipsOperand : public MCParsedAsmOperand {
     if (!getMemBase()->isGPRAsmReg())
       return false;
     const unsigned PtrBits = AsmParser.getABI().ArePtrs64bit() ? 64 : 32;
-    if (isa<MCTargetExpr>(getMemOff()) ||
+    if (isa<MCSpecifierExpr>(getMemOff()) ||
         (isConstantMemOff() && isIntN(PtrBits, getConstantMemOff())))
       return true;
     MCValue Res;
@@ -1784,9 +1784,9 @@ static bool isEvaluated(const MCExpr *Expr) {
   case MCExpr::Unary:
     return isEvaluated(cast<MCUnaryExpr>(Expr)->getSubExpr());
   case MCExpr::Specifier:
-    llvm_unreachable("unused by this backend");
-  case MCExpr::Target:
     return true;
+  case MCExpr::Target:
+    llvm_unreachable("unused by this backend");
   }
   return false;
 }

diff  --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
index b49f86bc5b350..a426ca7360ce7 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCCodeEmitter.cpp
@@ -580,7 +580,7 @@ unsigned MipsMCCodeEmitter::
 getExprOpValue(const MCExpr *Expr, SmallVectorImpl<MCFixup> &Fixups,
                const MCSubtargetInfo &STI) const {
   MCExpr::ExprKind Kind = Expr->getKind();
-  if (Kind == MCExpr::Target) {
+  if (Kind == MCExpr::Specifier) {
     const MipsMCExpr *MipsExpr = cast<MipsMCExpr>(Expr);
 
     Mips::Fixups FixupKind = Mips::Fixups(0);
@@ -733,7 +733,7 @@ unsigned MipsMCCodeEmitter::getImmOpValue(const MCInst &MI, const MCOperand &MO,
   if (Expr->evaluateAsAbsolute(Res))
     return Res;
   unsigned MIFrm = MipsII::getFormat(MCII.get(MI.getOpcode()).TSFlags);
-  if (!isa<MCTargetExpr>(Expr) && MIFrm == MipsII::FrmI) {
+  if (!isa<MCSpecifierExpr>(Expr) && MIFrm == MipsII::FrmI) {
     Fixups.push_back(MCFixup::create(
         0, Expr, MCFixupKind(Mips::fixup_Mips_AnyImm16), Expr->getLoc()));
     return 0;

diff  --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
index dd800293ae38d..d5d64ae8a0cdb 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
@@ -152,10 +152,6 @@ bool MipsMCExpr::evaluateAsRelocatableImpl(MCValue &Res,
   return !Res.getSubSym();
 }
 
-void MipsMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
-  Streamer.visitUsedExpr(*getSubExpr());
-}
-
 bool MipsMCExpr::isGpOff(Specifier &S) const {
   if (getSpecifier() == MEK_HI || getSpecifier() == MEK_LO) {
     if (const MipsMCExpr *S1 = dyn_cast<const MipsMCExpr>(getSubExpr())) {

diff  --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
index 288ca5c277538..5aad02c38d6ec 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
@@ -14,9 +14,10 @@
 
 namespace llvm {
 
-class MipsMCExpr : public MCTargetExpr {
+class MipsMCExpr : public MCSpecifierExpr {
 public:
-  enum Specifier {
+  using Specifier = Spec;
+  enum {
     MEK_None,
     MEK_CALL_HI16,
     MEK_CALL_LO16,
@@ -47,11 +48,8 @@ class MipsMCExpr : public MCTargetExpr {
   };
 
 private:
-  const MCExpr *Expr;
-  const Specifier specifier;
-
   explicit MipsMCExpr(const MCExpr *Expr, Specifier S)
-      : Expr(Expr), specifier(S) {}
+      : MCSpecifierExpr(Expr, S) {}
 
 public:
   static const MipsMCExpr *create(Specifier S, const MCExpr *Expr,
@@ -61,23 +59,9 @@ class MipsMCExpr : public MCTargetExpr {
   static const MipsMCExpr *createGpOff(Specifier S, const MCExpr *Expr,
                                        MCContext &Ctx);
 
-  Specifier getSpecifier() const { return specifier; }
-
-  /// Get the child of this expression.
-  const MCExpr *getSubExpr() const { return Expr; }
-
   void printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const override;
   bool evaluateAsRelocatableImpl(MCValue &Res,
                                  const MCAssembler *Asm) const override;
-  void visitUsedExpr(MCStreamer &Streamer) const override;
-
-  MCFragment *findAssociatedFragment() const override {
-    return getSubExpr()->findAssociatedFragment();
-  }
-
-  static bool classof(const MCExpr *E) {
-    return E->getKind() == MCExpr::Target;
-  }
 
   bool isGpOff(Specifier &S) const;
   bool isGpOff() const {


        


More information about the llvm-commits mailing list