[llvm] [Mips] Fix $gp was restored when used as global register variable (PR #184975)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 3 03:20:45 PDT 2026
================
@@ -75,6 +76,23 @@ MipsRegisterInfo::getRegPressureLimit(const TargetRegisterClass *RC,
// Callee Saved Registers methods
//===----------------------------------------------------------------------===//
+/// Check if the user has declared $gp/$28 as a global regiater.
+bool isGPUsedAsGlobalRegister(const MachineFunction &MF) {
+ const Module *Module = MF.getFunction().getParent();
+
+ if (const NamedMDNode *NamedRegs =
+ Module->getNamedMetadata("llvm.named.register")) {
+ for (const auto *Op : NamedRegs->operands()) {
+ const MDString *RegStr = cast<MDString>(Op->getOperand(0));
+ StringRef RegName = RegStr->getString();
+ return RegName == "$28" || RegName == "$gp";
+ }
+ } else if (Module->getNamedMetadata("llvm.named.register.$28"))
----------------
arsenm wrote:
I would be unhappy if we have 2 different forms of llvm.named.register, but it's missing from the langref so I don't know what the expectations are
https://github.com/llvm/llvm-project/pull/184975
More information about the llvm-commits
mailing list