[llvm] CodeGen: Move frame-pointer queries out of TargetOptions (PR #221416)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Sat Sep 5 00:39:17 PDT 2026
https://github.com/arsenm created https://github.com/llvm/llvm-project/pull/221416
These used to depend on a TargetOptions field, which was removed
at some point. These are now only depend on MachineFunction,
so move the attribute check there.
Co-authored-by: Claude (Claude-Opus-4.8)
>From 1f75220703bce366570fc1d7a8fe6a22feff0e93 Mon Sep 17 00:00:00 2001
From: Matt Arsenault <Matthew.Arsenault at amd.com>
Date: Sat, 5 Sep 2026 09:29:10 +0200
Subject: [PATCH] CodeGen: Move frame-pointer queries out of TargetOptions
These used to depend on a TargetOptions field, which was removed
at some point. These are now only depend on MachineFunction,
so move the attribute check there.
Co-authored-by: Claude (Claude-Opus-4.8)
---
llvm/include/llvm/CodeGen/MachineFunction.h | 8 +++++
llvm/include/llvm/Target/TargetOptions.h | 9 ------
.../CodeGen/AsmPrinter/DwarfCompileUnit.cpp | 4 +--
llvm/lib/CodeGen/MachineFunction.cpp | 30 +++++++++++++++++
llvm/lib/CodeGen/TargetOptionsImpl.cpp | 32 -------------------
.../Target/AArch64/AArch64FrameLowering.cpp | 5 ++-
.../Target/AArch64/AArch64RegisterInfo.cpp | 3 +-
llvm/lib/Target/AMDGPU/SIFrameLowering.cpp | 3 +-
llvm/lib/Target/ARC/ARCFrameLowering.cpp | 2 +-
llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp | 3 +-
llvm/lib/Target/ARM/ARMFrameLowering.cpp | 12 +++----
llvm/lib/Target/ARM/ARMSubtarget.cpp | 6 ++--
llvm/lib/Target/CSKY/CSKYFrameLowering.cpp | 5 ++-
.../Target/Hexagon/HexagonFrameLowering.cpp | 4 +--
.../LoongArch/LoongArchFrameLowering.cpp | 5 ++-
llvm/lib/Target/M68k/M68kFrameLowering.cpp | 6 ++--
.../lib/Target/MSP430/MSP430FrameLowering.cpp | 6 ++--
llvm/lib/Target/Mips/MipsFrameLowering.cpp | 6 ++--
llvm/lib/Target/PowerPC/PPCFrameLowering.cpp | 5 ++-
llvm/lib/Target/RISCV/RISCVFrameLowering.cpp | 5 ++-
.../Target/RISCV/RISCVMachineFunctionInfo.cpp | 2 +-
llvm/lib/Target/Sparc/SparcFrameLowering.cpp | 5 ++-
.../Target/SystemZ/SystemZFrameLowering.cpp | 2 +-
llvm/lib/Target/VE/VEFrameLowering.cpp | 6 ++--
llvm/lib/Target/X86/X86FrameLowering.cpp | 6 ++--
llvm/lib/Target/X86/X86RegisterInfo.cpp | 3 +-
llvm/lib/Target/XCore/XCoreFrameLowering.cpp | 4 +--
.../lib/Target/Xtensa/XtensaFrameLowering.cpp | 3 +-
28 files changed, 79 insertions(+), 111 deletions(-)
diff --git a/llvm/include/llvm/CodeGen/MachineFunction.h b/llvm/include/llvm/CodeGen/MachineFunction.h
index d84ce80e10a3c..94386510b9f8a 100644
--- a/llvm/include/llvm/CodeGen/MachineFunction.h
+++ b/llvm/include/llvm/CodeGen/MachineFunction.h
@@ -805,6 +805,14 @@ class LLVM_ABI MachineFunction {
MachineFrameInfo &getFrameInfo() { return *FrameInfo; }
const MachineFrameInfo &getFrameInfo() const { return *FrameInfo; }
+ /// Returns true if frame pointer elimination should be disabled for this
+ /// function.
+ LLVM_ABI bool disableFramePointerElim() const;
+
+ /// Returns true if the frame pointer must always either point to a new frame
+ /// record or be un-modified in this function.
+ LLVM_ABI bool framePointerIsReserved() const;
+
/// getJumpTableInfo - Return the jump table info object for the current
/// function. This object contains information about jump tables in the
/// current function. If the current function has no jump tables, this will
diff --git a/llvm/include/llvm/Target/TargetOptions.h b/llvm/include/llvm/Target/TargetOptions.h
index f6c862e99b98f..8a62653b03533 100644
--- a/llvm/include/llvm/Target/TargetOptions.h
+++ b/llvm/include/llvm/Target/TargetOptions.h
@@ -141,15 +141,6 @@ class TargetOptions {
EnableCFIFixup(false), MisExpect(false), XCOFFReadOnlyPointers(false),
VerifyArgABICompliance(true) {}
- /// DisableFramePointerElim - This returns true if frame pointer elimination
- /// optimization should be disabled for the given machine function.
- LLVM_ABI bool DisableFramePointerElim(const MachineFunction &MF) const;
-
- /// FramePointerIsReserved - This returns true if the frame pointer must
- /// always either point to a new frame record or be un-modified in the given
- /// function.
- LLVM_ABI bool FramePointerIsReserved(const MachineFunction &MF) const;
-
/// If greater than 0, override the default value of
/// MCAsmInfo::BinutilsVersion.
std::pair<int, int> BinutilsVersion{0, 0};
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
index 714858cc53105..bb7dba9f37585 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
@@ -35,7 +35,6 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Target/TargetLoweringObjectFile.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
#include <optional>
#include <string>
#include <utility>
@@ -519,8 +518,7 @@ DIE &DwarfCompileUnit::updateSubprogramScopeDIE(const DISubprogram *SP,
attachRangesOrLowHighPC(*SPDie, BB_List);
if (DD->useAppleExtensionAttributes() &&
- !DD->getCurrentFunction()->getTarget().Options.DisableFramePointerElim(
- *DD->getCurrentFunction()))
+ !DD->getCurrentFunction()->disableFramePointerElim())
addFlag(*SPDie, dwarf::DW_AT_APPLE_omit_frame_ptr);
if (emitFuncLineTableOffsets() && LineTableSym) {
diff --git a/llvm/lib/CodeGen/MachineFunction.cpp b/llvm/lib/CodeGen/MachineFunction.cpp
index f6121c4034bf8..282cce8667deb 100644
--- a/llvm/lib/CodeGen/MachineFunction.cpp
+++ b/llvm/lib/CodeGen/MachineFunction.cpp
@@ -747,6 +747,36 @@ bool MachineFunction::needsFrameMoves() const {
!F.getParent()->debug_compile_units().empty();
}
+bool MachineFunction::disableFramePointerElim() const {
+ FramePointerKind FP = getFrameInfo().getFramePointerPolicy();
+ switch (FP) {
+ case FramePointerKind::All:
+ return true;
+ case FramePointerKind::NonLeaf:
+ case FramePointerKind::NonLeafNoReserve:
+ return getFrameInfo().hasCalls();
+ case FramePointerKind::None:
+ case FramePointerKind::Reserved:
+ return false;
+ }
+ llvm_unreachable("unknown frame pointer flag");
+}
+
+bool MachineFunction::framePointerIsReserved() const {
+ FramePointerKind FP = getFrameInfo().getFramePointerPolicy();
+ switch (FP) {
+ case FramePointerKind::All:
+ case FramePointerKind::NonLeaf:
+ case FramePointerKind::Reserved:
+ return true;
+ case FramePointerKind::NonLeafNoReserve:
+ return getFrameInfo().hasCalls();
+ case FramePointerKind::None:
+ return false;
+ }
+ llvm_unreachable("unknown frame pointer flag");
+}
+
MachineFunction::CallSiteInfo::CallSiteInfo(const CallBase &CB) {
if (MDNode *Node = CB.getMetadata(llvm::LLVMContext::MD_call_target))
CallTarget = Node;
diff --git a/llvm/lib/CodeGen/TargetOptionsImpl.cpp b/llvm/lib/CodeGen/TargetOptionsImpl.cpp
index 3c8033928c4a4..a355189a4af5d 100644
--- a/llvm/lib/CodeGen/TargetOptionsImpl.cpp
+++ b/llvm/lib/CodeGen/TargetOptionsImpl.cpp
@@ -17,38 +17,6 @@
#include "llvm/Target/TargetOptions.h"
using namespace llvm;
-/// DisableFramePointerElim - This returns true if frame pointer elimination
-/// optimization should be disabled for the given machine function.
-bool TargetOptions::DisableFramePointerElim(const MachineFunction &MF) const {
- FramePointerKind FP = MF.getFrameInfo().getFramePointerPolicy();
- switch (FP) {
- case FramePointerKind::All:
- return true;
- case FramePointerKind::NonLeaf:
- case FramePointerKind::NonLeafNoReserve:
- return MF.getFrameInfo().hasCalls();
- case FramePointerKind::None:
- case FramePointerKind::Reserved:
- return false;
- }
- llvm_unreachable("unknown frame pointer flag");
-}
-
-bool TargetOptions::FramePointerIsReserved(const MachineFunction &MF) const {
- FramePointerKind FP = MF.getFrameInfo().getFramePointerPolicy();
- switch (FP) {
- case FramePointerKind::All:
- case FramePointerKind::NonLeaf:
- case FramePointerKind::Reserved:
- return true;
- case FramePointerKind::NonLeafNoReserve:
- return MF.getFrameInfo().hasCalls();
- case FramePointerKind::None:
- return false;
- }
- llvm_unreachable("unknown frame pointer flag");
-}
-
/// HonorSignDependentRoundingFPMath - Return true if the codegen must assume
/// that the rounding mode of the FPU can change from its default.
bool TargetOptions::HonorSignDependentRoundingFPMath() const {
diff --git a/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp b/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
index a54e7344d58f1..b41d575ec8b78 100644
--- a/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
+++ b/llvm/lib/Target/AArch64/AArch64FrameLowering.cpp
@@ -255,7 +255,6 @@
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
#include <cassert>
#include <cstdint>
#include <iterator>
@@ -586,7 +585,7 @@ bool AArch64FrameLowering::hasFPImpl(const MachineFunction &MF) const {
}
// Retain behavior of always omitting the FP for leaf functions when possible.
- if (MF.getTarget().Options.DisableFramePointerElim(MF))
+ if (MF.disableFramePointerElim())
return true;
if (MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
MFI.hasStackMap() || MFI.hasPatchPoint() ||
@@ -645,7 +644,7 @@ bool AArch64FrameLowering::isFPReserved(const MachineFunction &MF) const {
return true;
// Frontend has requested to preserve the frame pointer.
- if (TM.Options.FramePointerIsReserved(MF))
+ if (MF.framePointerIsReserved())
return true;
return false;
diff --git a/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp b/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
index 502c91fe3e531..c8e0cb289abdf 100644
--- a/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64RegisterInfo.cpp
@@ -30,7 +30,6 @@
#include "llvm/IR/DebugInfoMetadata.h"
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/Function.h"
-#include "llvm/Target/TargetOptions.h"
#include "llvm/TargetParser/Triple.h"
using namespace llvm;
@@ -792,7 +791,7 @@ bool AArch64RegisterInfo::requiresFrameIndexScavenging(
bool
AArch64RegisterInfo::cannotEliminateFrame(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- if (MF.getTarget().Options.DisableFramePointerElim(MF) && MFI.adjustsStack())
+ if (MF.disableFramePointerElim() && MFI.adjustsStack())
return true;
return MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken();
}
diff --git a/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
index 40f8232ee10e4..92fb77b1e6436 100644
--- a/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/SIFrameLowering.cpp
@@ -2482,8 +2482,7 @@ bool SIFrameLowering::hasFPImpl(const MachineFunction &MF) const {
return frameTriviallyRequiresSP(MFI) || MFI.isFrameAddressTaken() ||
MF.getSubtarget<GCNSubtarget>().getRegisterInfo()->hasStackRealignment(
MF) ||
- mayReserveScratchForCWSR(MF) ||
- MF.getTarget().Options.DisableFramePointerElim(MF);
+ mayReserveScratchForCWSR(MF) || MF.disableFramePointerElim();
}
bool SIFrameLowering::mayReserveScratchForCWSR(
diff --git a/llvm/lib/Target/ARC/ARCFrameLowering.cpp b/llvm/lib/Target/ARC/ARCFrameLowering.cpp
index 9f6a79e3210c4..fce97aa38fe0a 100644
--- a/llvm/lib/Target/ARC/ARCFrameLowering.cpp
+++ b/llvm/lib/Target/ARC/ARCFrameLowering.cpp
@@ -489,7 +489,7 @@ MachineBasicBlock::iterator ARCFrameLowering::eliminateCallFramePseudoInstr(
bool ARCFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
- bool HasFP = MF.getTarget().Options.DisableFramePointerElim(MF) ||
+ bool HasFP = MF.disableFramePointerElim() ||
MF.getFrameInfo().hasVarSizedObjects() ||
MF.getFrameInfo().isFrameAddressTaken() ||
RegInfo->hasStackRealignment(MF);
diff --git a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
index c581df8cf892b..a0bbaab3ec85e 100644
--- a/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp
@@ -43,7 +43,6 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
#include <cassert>
#include <utility>
@@ -510,7 +509,7 @@ bool ARMBaseRegisterInfo::canRealignStack(const MachineFunction &MF) const {
bool ARMBaseRegisterInfo::
cannotEliminateFrame(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- if (MF.getTarget().Options.DisableFramePointerElim(MF) && MFI.adjustsStack())
+ if (MF.disableFramePointerElim() && MFI.adjustsStack())
return true;
return MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
hasStackRealignment(MF);
diff --git a/llvm/lib/Target/ARM/ARMFrameLowering.cpp b/llvm/lib/Target/ARM/ARMFrameLowering.cpp
index 553e4ed6e03d5..b70abf55dc67e 100644
--- a/llvm/lib/Target/ARM/ARMFrameLowering.cpp
+++ b/llvm/lib/Target/ARM/ARMFrameLowering.cpp
@@ -149,7 +149,6 @@
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
#include <algorithm>
#include <cassert>
#include <cstddef>
@@ -342,7 +341,7 @@ bool ARMFrameLowering::hasFPImpl(const MachineFunction &MF) const {
return true;
// ABI-required frame pointer.
- if (MF.getTarget().Options.DisableFramePointerElim(MF))
+ if (MF.disableFramePointerElim())
return true;
// Frame pointer required for use within this function.
@@ -353,7 +352,7 @@ bool ARMFrameLowering::hasFPImpl(const MachineFunction &MF) const {
/// isFPReserved - Return true if the frame pointer register should be
/// considered a reserved register on the scope of the specified function.
bool ARMFrameLowering::isFPReserved(const MachineFunction &MF) const {
- return hasFP(MF) || MF.getTarget().Options.FramePointerIsReserved(MF);
+ return hasFP(MF) || MF.framePointerIsReserved();
}
/// hasReservedCallFrame - Under normal circumstances, when a frame pointer is
@@ -2756,7 +2755,7 @@ void ARMFrameLowering::determineCalleeSaves(MachineFunction &MF,
// is spilled in the order specified by getCalleeSavedRegs() to make it easier
// to combine multiple loads / stores.
bool CanEliminateFrame = !(requiresAAPCSFrameRecord(MF) && hasFP(MF)) &&
- !MF.getTarget().Options.DisableFramePointerElim(MF);
+ !MF.disableFramePointerElim();
bool CS1Spilled = false;
bool LRSpilled = false;
unsigned NumGPRSpills = 0;
@@ -3032,8 +3031,7 @@ void ARMFrameLowering::determineCalleeSaves(MachineFunction &MF,
SavedRegs.set(FramePtr);
// If the frame pointer is required by the ABI, also spill LR so that we
// emit a complete frame record.
- if ((requiresAAPCSFrameRecord(MF) ||
- MF.getTarget().Options.DisableFramePointerElim(MF)) &&
+ if ((requiresAAPCSFrameRecord(MF) || MF.disableFramePointerElim()) &&
!LRSpilled) {
SavedRegs.set(ARM::LR);
LRSpilled = true;
@@ -3376,7 +3374,7 @@ bool ARMFrameLowering::assignCalleeSavedSpillSlots(
CSI.insert(CSI.begin(), CalleeSavedInfo(ARM::R12));
break;
case ARMSubtarget::NoSplit:
- assert(!MF.getTarget().Options.DisableFramePointerElim(MF) &&
+ assert(!MF.disableFramePointerElim() &&
"ABI-required frame pointers need a CSR split when signing return "
"address.");
CSI.insert(find_if(CSI,
diff --git a/llvm/lib/Target/ARM/ARMSubtarget.cpp b/llvm/lib/Target/ARM/ARMSubtarget.cpp
index fb62e4e773bc0..f6c7a1393b315 100644
--- a/llvm/lib/Target/ARM/ARMSubtarget.cpp
+++ b/llvm/lib/Target/ARM/ARMSubtarget.cpp
@@ -613,8 +613,7 @@ ARMSubtarget::getPushPopSplitVariation(const MachineFunction &MF) const {
// If R7 is the frame pointer, we must split at R7 to ensure that the
// previous frame pointer (R7) and return address (LR) are adjacent on the
// stack, to form a valid frame record.
- if (getFramePointerReg() == ARM::R7 &&
- MF.getTarget().Options.FramePointerIsReserved(MF))
+ if (getFramePointerReg() == ARM::R7 && MF.framePointerIsReserved())
return SplitR7;
// Returns SplitR11WindowsSEH when the stack pointer needs to be
@@ -631,8 +630,7 @@ ARMSubtarget::getPushPopSplitVariation(const MachineFunction &MF) const {
// and LR to be adjacent on the stack, and branch signing is enabled,
// requiring R12 to be on the stack.
if (MF.getInfo<ARMFunctionInfo>()->shouldSignReturnAddress() &&
- getFramePointerReg() == ARM::R11 &&
- MF.getTarget().Options.FramePointerIsReserved(MF))
+ getFramePointerReg() == ARM::R11 && MF.framePointerIsReserved())
return SplitR11AAPCSSignRA;
return NoSplit;
}
diff --git a/llvm/lib/Target/CSKY/CSKYFrameLowering.cpp b/llvm/lib/Target/CSKY/CSKYFrameLowering.cpp
index 98798275e7979..90d19aeb63ed1 100644
--- a/llvm/lib/Target/CSKY/CSKYFrameLowering.cpp
+++ b/llvm/lib/Target/CSKY/CSKYFrameLowering.cpp
@@ -37,9 +37,8 @@ bool CSKYFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
- MFI.isFrameAddressTaken();
+ return MF.disableFramePointerElim() || RegInfo->hasStackRealignment(MF) ||
+ MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken();
}
bool CSKYFrameLowering::hasBP(const MachineFunction &MF) const {
diff --git a/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp b/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
index 1b47bba3b8a97..efb70cf54d378 100644
--- a/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonFrameLowering.cpp
@@ -54,7 +54,6 @@
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
@@ -1465,8 +1464,7 @@ bool HexagonFrameLowering::hasFPImpl(const MachineFunction &MF) const {
// gated on stack size: the user/ABI-requested frame pointer is needed
// regardless of whether the function currently has a stack frame.
// Every other target checks DisableFramePointerElim unconditionally.
- const TargetMachine &TM = MF.getTarget();
- if (TM.Options.DisableFramePointerElim(MF) || !EliminateFramePointer)
+ if (MF.disableFramePointerElim() || !EliminateFramePointer)
return true;
if (MFI.getStackSize() > 0) {
diff --git a/llvm/lib/Target/LoongArch/LoongArchFrameLowering.cpp b/llvm/lib/Target/LoongArch/LoongArchFrameLowering.cpp
index 0aba94383f546..971b2a977f523 100644
--- a/llvm/lib/Target/LoongArch/LoongArchFrameLowering.cpp
+++ b/llvm/lib/Target/LoongArch/LoongArchFrameLowering.cpp
@@ -37,9 +37,8 @@ bool LoongArchFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
- MFI.isFrameAddressTaken();
+ return MF.disableFramePointerElim() || RegInfo->hasStackRealignment(MF) ||
+ MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken();
}
bool LoongArchFrameLowering::hasBP(const MachineFunction &MF) const {
diff --git a/llvm/lib/Target/M68k/M68kFrameLowering.cpp b/llvm/lib/Target/M68k/M68kFrameLowering.cpp
index ae2bb975bc9d6..4c8ec1d98b7fd 100644
--- a/llvm/lib/Target/M68k/M68kFrameLowering.cpp
+++ b/llvm/lib/Target/M68k/M68kFrameLowering.cpp
@@ -29,7 +29,6 @@
#include "llvm/Support/Alignment.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -46,9 +45,8 @@ bool M68kFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
const TargetRegisterInfo *TRI = STI.getRegisterInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
- TRI->hasStackRealignment(MF);
+ return MF.disableFramePointerElim() || MFI.hasVarSizedObjects() ||
+ MFI.isFrameAddressTaken() || TRI->hasStackRealignment(MF);
}
// FIXME Make sure no other factors prevent us from reserving call frame
diff --git a/llvm/lib/Target/MSP430/MSP430FrameLowering.cpp b/llvm/lib/Target/MSP430/MSP430FrameLowering.cpp
index bc24b3239b43a..f4b47b3e68ce8 100644
--- a/llvm/lib/Target/MSP430/MSP430FrameLowering.cpp
+++ b/llvm/lib/Target/MSP430/MSP430FrameLowering.cpp
@@ -19,7 +19,6 @@
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -31,9 +30,8 @@ MSP430FrameLowering::MSP430FrameLowering(const MSP430Subtarget &STI)
bool MSP430FrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return (MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MF.getFrameInfo().hasVarSizedObjects() ||
- MFI.isFrameAddressTaken());
+ return (MF.disableFramePointerElim() ||
+ MF.getFrameInfo().hasVarSizedObjects() || MFI.isFrameAddressTaken());
}
bool MSP430FrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
diff --git a/llvm/lib/Target/Mips/MipsFrameLowering.cpp b/llvm/lib/Target/Mips/MipsFrameLowering.cpp
index 47d4b0b4d6e1d..d21d267b55a6d 100644
--- a/llvm/lib/Target/Mips/MipsFrameLowering.cpp
+++ b/llvm/lib/Target/Mips/MipsFrameLowering.cpp
@@ -16,7 +16,6 @@
#include "llvm/CodeGen/MachineFrameInfo.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineModuleInfo.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -88,9 +87,8 @@ bool MipsFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
const TargetRegisterInfo *TRI = STI.getRegisterInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
- TRI->hasStackRealignment(MF);
+ return MF.disableFramePointerElim() || MFI.hasVarSizedObjects() ||
+ MFI.isFrameAddressTaken() || TRI->hasStackRealignment(MF);
}
bool MipsFrameLowering::hasBP(const MachineFunction &MF) const {
diff --git a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
index 1143c3363b04a..6d8300fc8faa2 100644
--- a/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
+++ b/llvm/lib/Target/PowerPC/PPCFrameLowering.cpp
@@ -376,9 +376,8 @@ bool PPCFrameLowering::needsFP(const MachineFunction &MF) const {
if (MF.getFunction().hasFnAttribute(Attribute::Naked))
return false;
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MFI.hasVarSizedObjects() || MFI.hasStackMap() || MFI.hasPatchPoint() ||
- MF.exposesReturnsTwice() ||
+ return MF.disableFramePointerElim() || MFI.hasVarSizedObjects() ||
+ MFI.hasStackMap() || MFI.hasPatchPoint() || MF.exposesReturnsTwice() ||
(MF.getTarget().Options.GuaranteedTailCallOpt &&
MF.getInfo<PPCFunctionInfo>()->hasFastCall());
}
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
index 458cf32bf8c1b..b50a18b539555 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -493,9 +493,8 @@ bool RISCVFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
const MachineFrameInfo &MFI = MF.getFrameInfo();
- if (MF.getTarget().Options.DisableFramePointerElim(MF) ||
- RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
- MFI.isFrameAddressTaken())
+ if (MF.disableFramePointerElim() || RegInfo->hasStackRealignment(MF) ||
+ MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken())
return true;
// With large callframes around we may need to use FP to access the scavenging
diff --git a/llvm/lib/Target/RISCV/RISCVMachineFunctionInfo.cpp b/llvm/lib/Target/RISCV/RISCVMachineFunctionInfo.cpp
index 4944df1e731a8..e3bc6ec23492a 100644
--- a/llvm/lib/Target/RISCV/RISCVMachineFunctionInfo.cpp
+++ b/llvm/lib/Target/RISCV/RISCVMachineFunctionInfo.cpp
@@ -101,7 +101,7 @@ RISCVMachineFunctionInfo::getPushPopKind(const MachineFunction &MF) const {
// Zcmp is not compatible with the frame pointer convention.
if (MF.getSubtarget<RISCVSubtarget>().hasStdExtZcmp() &&
- !MF.getTarget().Options.DisableFramePointerElim(MF))
+ !MF.disableFramePointerElim())
return PushPopKind::StdExtZcmp;
// Xqccmp is Zcmp but has a push order compatible with the frame-pointer
diff --git a/llvm/lib/Target/Sparc/SparcFrameLowering.cpp b/llvm/lib/Target/Sparc/SparcFrameLowering.cpp
index fa08d4474f39e..deb9b2026baaa 100644
--- a/llvm/lib/Target/Sparc/SparcFrameLowering.cpp
+++ b/llvm/lib/Target/Sparc/SparcFrameLowering.cpp
@@ -21,7 +21,6 @@
#include "llvm/CodeGen/MachineModuleInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -202,8 +201,8 @@ bool SparcFrameLowering::hasReservedCallFrame(const MachineFunction &MF) const {
// allocas or if frame pointer elimination is disabled.
bool SparcFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken();
+ return MF.disableFramePointerElim() || MFI.hasVarSizedObjects() ||
+ MFI.isFrameAddressTaken();
}
StackOffset
diff --git a/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp b/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
index cdd2d6269ff05..14688a53c1c63 100644
--- a/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZFrameLowering.cpp
@@ -864,7 +864,7 @@ void SystemZELFFrameLowering::inlineStackProbe(
}
bool SystemZELFFrameLowering::hasFPImpl(const MachineFunction &MF) const {
- return (MF.getTarget().Options.DisableFramePointerElim(MF) ||
+ return (MF.disableFramePointerElim() ||
MF.getFrameInfo().hasVarSizedObjects());
}
diff --git a/llvm/lib/Target/VE/VEFrameLowering.cpp b/llvm/lib/Target/VE/VEFrameLowering.cpp
index 691d2ece34f38..62e171e0c047c 100644
--- a/llvm/lib/Target/VE/VEFrameLowering.cpp
+++ b/llvm/lib/Target/VE/VEFrameLowering.cpp
@@ -120,7 +120,6 @@
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/RegisterScavenging.h"
#include "llvm/Support/MathExtras.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -419,9 +418,8 @@ bool VEFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const TargetRegisterInfo *RegInfo = MF.getSubtarget().getRegisterInfo();
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- RegInfo->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
- MFI.isFrameAddressTaken();
+ return MF.disableFramePointerElim() || RegInfo->hasStackRealignment(MF) ||
+ MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken();
}
bool VEFrameLowering::hasBP(const MachineFunction &MF) const {
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp
index 2d02ac618b275..7b9f03c87ecdc 100644
--- a/llvm/lib/Target/X86/X86FrameLowering.cpp
+++ b/llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -123,9 +123,9 @@ bool X86FrameLowering::needsFrameIndexResolution(
/// allocas or if frame pointer elimination is disabled.
bool X86FrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return (MF.getTarget().Options.DisableFramePointerElim(MF) ||
- TRI->hasStackRealignment(MF) || MFI.hasVarSizedObjects() ||
- MFI.isFrameAddressTaken() || MFI.hasOpaqueSPAdjustment() ||
+ return (MF.disableFramePointerElim() || TRI->hasStackRealignment(MF) ||
+ MFI.hasVarSizedObjects() || MFI.isFrameAddressTaken() ||
+ MFI.hasOpaqueSPAdjustment() ||
MF.getInfo<X86MachineFunctionInfo>()->getForceFramePointer() ||
MF.getInfo<X86MachineFunctionInfo>()->hasPreallocatedCall() ||
MF.callsUnwindInit() || MF.hasEHFunclets() || MF.callsEHReturn() ||
diff --git a/llvm/lib/Target/X86/X86RegisterInfo.cpp b/llvm/lib/Target/X86/X86RegisterInfo.cpp
index 940825aa9b77f..8bf56a7d6bbe6 100644
--- a/llvm/lib/Target/X86/X86RegisterInfo.cpp
+++ b/llvm/lib/Target/X86/X86RegisterInfo.cpp
@@ -33,7 +33,6 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
using namespace llvm;
@@ -575,7 +574,7 @@ BitVector X86RegisterInfo::getReservedRegs(const MachineFunction &MF) const {
Reserved.set(SubReg);
// Set the frame-pointer register and its aliases as reserved if needed.
- if (TFI->hasFP(MF) || MF.getTarget().Options.FramePointerIsReserved(MF)) {
+ if (TFI->hasFP(MF) || MF.framePointerIsReserved()) {
if (MF.getInfo<X86MachineFunctionInfo>()->getFPClobberedByInvoke())
MF.getContext().reportError(
SMLoc(),
diff --git a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
index ce1875ee3be77..78d9ae628c1f2 100644
--- a/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
+++ b/llvm/lib/Target/XCore/XCoreFrameLowering.cpp
@@ -24,7 +24,6 @@
#include "llvm/CodeGen/TargetLowering.h"
#include "llvm/IR/Function.h"
#include "llvm/Support/ErrorHandling.h"
-#include "llvm/Target/TargetOptions.h"
#include <algorithm>
using namespace llvm;
@@ -215,8 +214,7 @@ XCoreFrameLowering::XCoreFrameLowering(const XCoreSubtarget &sti)
}
bool XCoreFrameLowering::hasFPImpl(const MachineFunction &MF) const {
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MF.getFrameInfo().hasVarSizedObjects();
+ return MF.disableFramePointerElim() || MF.getFrameInfo().hasVarSizedObjects();
}
void XCoreFrameLowering::emitPrologue(MachineFunction &MF,
diff --git a/llvm/lib/Target/Xtensa/XtensaFrameLowering.cpp b/llvm/lib/Target/Xtensa/XtensaFrameLowering.cpp
index 1c0dc66a46144..f7ea5f2e1720f 100644
--- a/llvm/lib/Target/Xtensa/XtensaFrameLowering.cpp
+++ b/llvm/lib/Target/Xtensa/XtensaFrameLowering.cpp
@@ -36,8 +36,7 @@ XtensaFrameLowering::XtensaFrameLowering(const XtensaSubtarget &STI)
bool XtensaFrameLowering::hasFPImpl(const MachineFunction &MF) const {
const MachineFrameInfo &MFI = MF.getFrameInfo();
- return MF.getTarget().Options.DisableFramePointerElim(MF) ||
- MFI.hasVarSizedObjects();
+ return MF.disableFramePointerElim() || MFI.hasVarSizedObjects();
}
void XtensaFrameLowering::emitPrologue(MachineFunction &MF,
More information about the llvm-commits
mailing list