[llvm] 8eac7f5 - PPCMCExpr: Migrate to MCSpecifierExpr
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 7 23:01:34 PDT 2025
Author: Fangrui Song
Date: 2025-06-07T23:01:29-07:00
New Revision: 8eac7f5a81be00da3c47484fafad3498e5c0e617
URL: https://github.com/llvm/llvm-project/commit/8eac7f5a81be00da3c47484fafad3498e5c0e617
DIFF: https://github.com/llvm/llvm-project/commit/8eac7f5a81be00da3c47484fafad3498e5c0e617.diff
LOG: PPCMCExpr: Migrate to MCSpecifierExpr
Added:
Modified:
llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
index acf55a2143fc7..9d3d04e6b8add 100644
--- a/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
+++ b/llvm/lib/Target/PowerPC/AsmParser/PPCAsmParser.cpp
@@ -37,9 +37,6 @@ DEFINE_PPC_REGCLASSES
static int64_t
EvaluateCRExpr(const MCExpr *E) {
switch (E->getKind()) {
- case MCExpr::Target:
- return -1;
-
case MCExpr::Constant: {
int64_t Res = cast<MCConstantExpr>(E)->getValue();
return Res < 0 ? -1 : Res;
@@ -88,6 +85,8 @@ EvaluateCRExpr(const MCExpr *E) {
return Res < 0 ? -1 : Res;
}
case MCExpr::Specifier:
+ return -1;
+ case MCExpr::Target:
llvm_unreachable("unused by this backend");
}
@@ -1374,7 +1373,7 @@ const MCExpr *PPCAsmParser::extractSpecifier(const MCExpr *E,
switch (E->getKind()) {
case MCExpr::Constant:
break;
- case MCExpr::Target: {
+ case MCExpr::Specifier: {
// Detect error but do not return a modified expression.
auto *TE = cast<PPCMCExpr>(E);
Spec = TE->getSpecifier();
@@ -1422,7 +1421,7 @@ const MCExpr *PPCAsmParser::extractSpecifier(const MCExpr *E,
return MCBinaryExpr::create(BE->getOpcode(), LHS, RHS, Context);
break;
}
- case MCExpr::Specifier:
+ case MCExpr::Target:
llvm_unreachable("unused by this backend");
}
@@ -1437,7 +1436,7 @@ bool PPCAsmParser::parseExpression(const MCExpr *&EVal) {
if (getParser().parseExpression(EVal))
return true;
- auto Spec = PPCMCExpr::VK_None;
+ uint16_t Spec = PPCMCExpr::VK_None;
const MCExpr *E = extractSpecifier(EVal, Spec);
if (Spec != PPCMCExpr::VK_None)
EVal = PPCMCExpr::create(Spec, E, getParser().getContext());
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
index 376b0e7743234..728b6799f94dc 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.cpp
@@ -86,7 +86,3 @@ bool PPCMCExpr::evaluateAsRelocatableImpl(MCValue &Res,
return true;
}
-
-void PPCMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
- Streamer.visitUsedExpr(*getSubExpr());
-}
diff --git a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h
index 19d35649ca36e..3d0511da2749f 100644
--- a/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h
+++ b/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCExpr.h
@@ -15,9 +15,10 @@
namespace llvm {
-class PPCMCExpr : public MCTargetExpr {
+class PPCMCExpr : public MCSpecifierExpr {
public:
- enum Specifier : uint8_t {
+ using Specifier = uint16_t;
+ enum {
VK_None,
VK_LO = MCSymbolRefExpr::FirstTargetSpecifier,
@@ -100,18 +101,12 @@ class PPCMCExpr : public MCTargetExpr {
};
private:
- const Specifier specifier;
- const MCExpr *Expr;
-
std::optional<int64_t> evaluateAsInt64(int64_t Value) const;
explicit PPCMCExpr(Specifier S, const MCExpr *Expr)
- : specifier(S), Expr(Expr) {}
+ : MCSpecifierExpr(Expr, S) {}
public:
- /// @name Construction
- /// @{
-
static const PPCMCExpr *create(Specifier S, const MCExpr *Expr,
MCContext &Ctx);
@@ -127,28 +122,11 @@ class PPCMCExpr : public MCTargetExpr {
return create(VK_HA, Expr, Ctx);
}
- /// @}
- /// @name Accessors
- /// @{
-
- Specifier getSpecifier() const { return specifier; }
- 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();
- }
bool evaluateAsConstant(int64_t &Res) const;
-
- static bool classof(const MCExpr *E) {
- return E->getKind() == MCExpr::Target;
- }
};
static inline PPCMCExpr::Specifier getSpecifier(const MCSymbolRefExpr *SRE) {
More information about the llvm-commits
mailing list