[llvm] d9a767c - [Mips, MC] Replace getSymA()->getSymbol() with getAddSym. NFC
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sat Apr 5 14:23:06 PDT 2025
Author: Fangrui Song
Date: 2025-04-05T14:23:01-07:00
New Revision: d9a767cfc802aca491f5f25fb386679ab1100621
URL: https://github.com/llvm/llvm-project/commit/d9a767cfc802aca491f5f25fb386679ab1100621
DIFF: https://github.com/llvm/llvm-project/commit/d9a767cfc802aca491f5f25fb386679ab1100621.diff
LOG: [Mips,MC] Replace getSymA()->getSymbol() with getAddSym. NFC
We will replace the MCSymbolRefExpr member in MCValue with MCSymbol.
This change reduces dependence on MCSymbolRefExpr.
Create a MipsMCExpr::create overload that takes MCSymbol as an argument.
We use the order preferred by other targets.
Added:
Modified:
llvm/lib/Target/Mips/AsmParser/MipsAsmParser.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 8d9ae1e20006a..53c9174725ab8 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -3009,7 +3009,7 @@ bool MipsAsmParser::loadAndAddSymbolAddress(const MCExpr *SymExpr,
const MCExpr *CallHiExpr =
MipsMCExpr::create(MipsMCExpr::MEK_GOT_HI16, SymExpr, getContext());
const MCExpr *CallLoExpr = MipsMCExpr::create(
- MipsMCExpr::MEK_GOT_LO16, Res.getSymA(), getContext());
+ Res.getAddSym(), MipsMCExpr::MEK_GOT_LO16, getContext());
TOut.emitRX(Mips::LUi, TmpReg, MCOperand::createExpr(CallHiExpr), IDLoc,
STI);
@@ -3040,7 +3040,7 @@ bool MipsAsmParser::loadAndAddSymbolAddress(const MCExpr *SymExpr,
// The daddiu's marked with a '>' may be omitted if they are redundant. If
// this happens then the last instruction must use $rd as the result
// register.
- GotExpr = MipsMCExpr::create(MipsMCExpr::MEK_GOT_DISP, Res.getSymA(),
+ GotExpr = MipsMCExpr::create(Res.getAddSym(), MipsMCExpr::MEK_GOT_DISP,
getContext());
if (Res.getConstant() != 0) {
// Symbols fully resolve with just the %got_disp(symbol) but we
@@ -3075,7 +3075,7 @@ bool MipsAsmParser::loadAndAddSymbolAddress(const MCExpr *SymExpr,
// External symbols fully resolve the symbol with just the %got(symbol)
// but we must still account for any offset to the symbol for
// expressions like symbol+8.
- GotExpr = MipsMCExpr::create(MipsMCExpr::MEK_GOT, Res.getSymA(),
+ GotExpr = MipsMCExpr::create(Res.getAddSym(), MipsMCExpr::MEK_GOT,
getContext());
if (Res.getConstant() != 0)
LoExpr = MCConstantExpr::create(Res.getConstant(), getContext());
@@ -3771,8 +3771,9 @@ void MipsAsmParser::expandMem16Inst(MCInst &Inst, SMLoc IDLoc, MCStreamer &Out,
return;
}
- loadAndAddSymbolAddress(Res.getSymA(), TmpReg, BaseReg,
- !ABI.ArePtrs64bit(), IDLoc, Out, STI);
+ loadAndAddSymbolAddress(
+ MCSymbolRefExpr::create(Res.getAddSym(), getContext()), TmpReg,
+ BaseReg, !ABI.ArePtrs64bit(), IDLoc, Out, STI);
emitInstWithOffset(MCOperand::createImm(int16_t(Res.getConstant())));
} else {
// FIXME: Implement 64-bit case.
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
index 39dc329d80222..cecda2c729d62 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.cpp
@@ -26,7 +26,12 @@ using namespace llvm;
const MipsMCExpr *MipsMCExpr::create(MipsMCExpr::Specifier S,
const MCExpr *Expr, MCContext &Ctx) {
- return new (Ctx) MipsMCExpr(S, Expr);
+ return new (Ctx) MipsMCExpr(Expr, S);
+}
+
+const MipsMCExpr *MipsMCExpr::create(const MCSymbol *Sym, Specifier S,
+ MCContext &Ctx) {
+ return new (Ctx) MipsMCExpr(MCSymbolRefExpr::create(Sym, Ctx), S);
}
const MipsMCExpr *MipsMCExpr::createGpOff(MipsMCExpr::Specifier S,
diff --git a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
index 13dad8d8a0472..288ca5c277538 100644
--- a/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
+++ b/llvm/lib/Target/Mips/MCTargetDesc/MipsMCExpr.h
@@ -47,15 +47,17 @@ class MipsMCExpr : public MCTargetExpr {
};
private:
- const Specifier specifier;
const MCExpr *Expr;
+ const Specifier specifier;
- explicit MipsMCExpr(Specifier S, const MCExpr *Expr)
- : specifier(S), Expr(Expr) {}
+ explicit MipsMCExpr(const MCExpr *Expr, Specifier S)
+ : Expr(Expr), specifier(S) {}
public:
static const MipsMCExpr *create(Specifier S, const MCExpr *Expr,
MCContext &Ctx);
+ static const MipsMCExpr *create(const MCSymbol *Sym, Specifier S,
+ MCContext &Ctx);
static const MipsMCExpr *createGpOff(Specifier S, const MCExpr *Expr,
MCContext &Ctx);
More information about the llvm-commits
mailing list