[llvm] 532facc - ARMMCExpr: Migrate to MCSpecifierExpr
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 7 23:32:23 PDT 2025
Author: Fangrui Song
Date: 2025-06-07T23:32:18-07:00
New Revision: 532facc78e075255afde69f2d86f26e4d4dd4c7f
URL: https://github.com/llvm/llvm-project/commit/532facc78e075255afde69f2d86f26e4d4dd4c7f
DIFF: https://github.com/llvm/llvm-project/commit/532facc78e075255afde69f2d86f26e4d4dd4c7f.diff
LOG: ARMMCExpr: Migrate to MCSpecifierExpr
Added:
Modified:
llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
index 075fe8687b5af..a7320eea80b0e 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp
@@ -619,7 +619,7 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCAssembler &Asm,
// Offset by 8 just as above.
if (const MCSymbolRefExpr *SRE =
dyn_cast<MCSymbolRefExpr>(Fixup.getValue()))
- if (getSpecifier(SRE) == ARMMCExpr::VK_TLSCALL)
+ if (SRE->getSpecifier() == ARMMCExpr::VK_TLSCALL)
return 0;
return 0xffffff & (Value >> 2);
case ARM::fixup_t2_uncondbranch: {
@@ -746,7 +746,7 @@ unsigned ARMAsmBackend::adjustFixupValue(const MCAssembler &Asm,
uint32_t offset = (Value - 4) >> 2;
if (const MCSymbolRefExpr *SRE =
dyn_cast<MCSymbolRefExpr>(Fixup.getValue()))
- if (getSpecifier(SRE) == ARMMCExpr::VK_TLSCALL)
+ if (SRE->getSpecifier() == ARMMCExpr::VK_TLSCALL)
offset = 0;
uint32_t signBit = (offset & 0x400000) >> 22;
uint32_t I1Bit = (offset & 0x200000) >> 21;
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
index 7884b10a48a99..49b89cad6d475 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMELFStreamer.cpp
@@ -590,7 +590,7 @@ class ARMELFStreamer : public MCELFStreamer {
/// necessary.
void emitValueImpl(const MCExpr *Value, unsigned Size, SMLoc Loc) override {
if (const MCSymbolRefExpr *SRE = dyn_cast_or_null<MCSymbolRefExpr>(Value)) {
- if (getSpecifier(SRE) == ARMMCExpr::VK_SBREL && !(Size == 4)) {
+ if (SRE->getSpecifier() == ARMMCExpr::VK_SBREL && !(Size == 4)) {
getContext().reportError(Loc, "relocated expression must be 32-bit");
return;
}
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
index 7fa4baac9970c..e79cdbde62ca9 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCCodeEmitter.cpp
@@ -1191,7 +1191,7 @@ uint32_t ARMMCCodeEmitter::getHiLoImmOpValue(const MCInst &MI, unsigned OpIdx,
// :lower0_7: assembly prefixes.
const MCExpr *E = MO.getExpr();
MCFixupKind Kind;
- if (E->getKind() == MCExpr::Target) {
+ if (E->getKind() == MCExpr::Specifier) {
const ARMMCExpr *ARM16Expr = cast<ARMMCExpr>(E);
E = ARM16Expr->getSubExpr();
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
index 6230491a7b01a..b5e17e3c2da0b 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.cpp
@@ -48,7 +48,3 @@ void ARMMCExpr::printImpl(raw_ostream &OS, const MCAsmInfo *MAI) const {
if (Expr->getKind() != MCExpr::SymbolRef)
OS << ')';
}
-
-void ARMMCExpr::visitUsedExpr(MCStreamer &Streamer) const {
- Streamer.visitUsedExpr(*getSubExpr());
-}
diff --git a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
index 9b959ce12f644..bcd92de3434ab 100644
--- a/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
+++ b/llvm/lib/Target/ARM/MCTargetDesc/ARMMCExpr.h
@@ -13,9 +13,10 @@
namespace llvm {
-class ARMMCExpr : public MCTargetExpr {
+class ARMMCExpr : public MCSpecifierExpr {
public:
- enum Specifier {
+ using Specifier = uint16_t;
+ enum {
VK_None,
VK_HI16 =
MCSymbolRefExpr::FirstTargetSpecifier, // The R_ARM_MOVT_ABS relocation
@@ -57,16 +58,10 @@ class ARMMCExpr : public MCTargetExpr {
};
private:
- const Specifier specifier;
- const MCExpr *Expr;
-
explicit ARMMCExpr(Specifier S, const MCExpr *Expr)
- : specifier(S), Expr(Expr) {}
+ : MCSpecifierExpr(Expr, S) {}
public:
- /// @name Construction
- /// @{
-
static const ARMMCExpr *create(Specifier S, const MCExpr *Expr,
MCContext &Ctx);
@@ -94,33 +89,12 @@ class ARMMCExpr : public MCTargetExpr {
return create(VK_LO_0_7, 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 {
return false;
}
- void visitUsedExpr(MCStreamer &Streamer) const override;
- MCFragment *findAssociatedFragment() const override {
- return getSubExpr()->findAssociatedFragment();
- }
-
- static bool classof(const MCExpr *E) {
- return E->getKind() == MCExpr::Target;
- }
};
-
-static inline ARMMCExpr::Specifier getSpecifier(const MCSymbolRefExpr *SRE) {
- return ARMMCExpr::Specifier(SRE->getKind());
-}
} // end namespace llvm
#endif
More information about the llvm-commits
mailing list