[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