MCValue: reduce getSymB uses
The MCValue::SymB MCSymbolRefExpr member might be replaced with a
MCSymbol in the future. Reduce direct access.
diff --git a/llvm/lib/MC/MCAssembler.cpp b/llvm/lib/MC/MCAssembler.cpp
index 835fa8a..2c9cd0e 100644
--- a/llvm/lib/MC/MCAssembler.cpp
+++ b/llvm/lib/MC/MCAssembler.cpp
@@ -201,11 +201,9 @@
if (Sym.isDefined())
Value += getSymbolOffset(Sym);
}
- if (const MCSymbolRefExpr *B = Target.getSymB()) {
- const MCSymbol &Sym = B->getSymbol();
- if (Sym.isDefined())
- Value -= getSymbolOffset(Sym);
- }
+ if (const MCSymbol *Sub = Target.getSubSym())
+ if (Sub->isDefined())
+ Value -= getSymbolOffset(*Sub);
bool ShouldAlignPC = FixupFlags & MCFixupKindInfo::FKF_IsAlignedDownTo32Bits;
assert((ShouldAlignPC ? IsPCRel : true) &&
diff --git a/llvm/lib/MC/MCValue.cpp b/llvm/lib/MC/MCValue.cpp
index a90ba4e..8b2edc9 100644
--- a/llvm/lib/MC/MCValue.cpp
+++ b/llvm/lib/MC/MCValue.cpp
@@ -9,6 +9,7 @@
#include "llvm/MC/MCValue.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/MCExpr.h"
+#include "llvm/MC/MCSymbol.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
@@ -28,9 +29,9 @@
OS << *getSymA();
- if (getSymB()) {
+ if (auto *B = getSubSym()) {
OS << " - ";
- OS << *getSymB();
+ B->print(OS, nullptr);
}
if (getConstant())
diff --git a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
index c83a187..f22b208 100644
--- a/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
+++ b/llvm/lib/Target/LoongArch/MCTargetDesc/LoongArchAsmBackend.cpp
@@ -498,7 +498,8 @@
llvm_unreachable("unsupported fixup size");
}
MCValue A = MCValue::get(Target.getSymA(), nullptr, Target.getConstant());
- MCValue B = MCValue::get(Target.getSymB());
+ MCValue B = MCValue::get(
+ MCSymbolRefExpr::create(Target.getSubSym(), Asm.getContext()));
auto FA = MCFixup::create(Fixup.getOffset(), nullptr, std::get<0>(FK));
auto FB = MCFixup::create(Fixup.getOffset(), nullptr, std::get<1>(FK));
auto &Assembler = const_cast<MCAssembler &>(Asm);
diff --git a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
index 6c24617..a8922c3 100644
--- a/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
+++ b/llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
@@ -2806,7 +2806,7 @@
MCValue Res;
if (Expr->evaluateAsRelocatable(Res, nullptr)) {
return Res.getRefKind() == RISCVMCExpr::VK_None && Res.getSymA() &&
- Res.getSymB();
+ Res.getSubSym();
}
return false;
}
diff --git a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
index ac0f742..f208618 100644
--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
+++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp
@@ -657,7 +657,8 @@
llvm_unreachable("unsupported fixup size");
}
MCValue A = MCValue::get(Target.getSymA(), nullptr, Target.getConstant());
- MCValue B = MCValue::get(Target.getSymB());
+ MCValue B = MCValue::get(
+ MCSymbolRefExpr::create(Target.getSubSym(), Asm.getContext()));
auto FA = MCFixup::create(
Fixup.getOffset(), nullptr,
static_cast<MCFixupKind>(FirstLiteralRelocationKind + TA));