[llvm] [Target] Remove `Target::resetTargetOptions` (PR #201825)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 5 05:26:38 PDT 2026
https://github.com/paperchalice created https://github.com/llvm/llvm-project/pull/201825
This function shouldn't exist., now it is an empty function, remove it.
>From 92c0191cc687efdc41bd93ac1f846f5467e7b494 Mon Sep 17 00:00:00 2001
From: PaperChalice <liujunchang97 at outlook.com>
Date: Fri, 5 Jun 2026 20:09:05 +0800
Subject: [PATCH] [Target] Remove `Target::resetTargetOptions`
---
llvm/include/llvm/Target/TargetMachine.h | 7 +------
.../lib/Target/AArch64/AArch64TargetMachine.cpp | 4 ----
llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp | 4 ----
llvm/lib/Target/AMDGPU/R600TargetMachine.cpp | 7 +------
llvm/lib/Target/ARM/ARMTargetMachine.cpp | 4 ----
llvm/lib/Target/CSKY/CSKYTargetMachine.cpp | 4 ----
.../lib/Target/Hexagon/HexagonTargetMachine.cpp | 7 +------
.../Target/LoongArch/LoongArchTargetMachine.cpp | 4 ----
llvm/lib/Target/M68k/M68kTargetMachine.cpp | 7 +------
llvm/lib/Target/Mips/MipsTargetMachine.cpp | 4 ----
llvm/lib/Target/PowerPC/PPCTargetMachine.cpp | 4 ----
llvm/lib/Target/RISCV/RISCVTargetMachine.cpp | 4 ----
llvm/lib/Target/Sparc/SparcTargetMachine.cpp | 7 +------
.../lib/Target/SystemZ/SystemZTargetMachine.cpp | 4 ----
llvm/lib/Target/TargetMachine.cpp | 17 -----------------
.../WebAssembly/WebAssemblyTargetMachine.cpp | 5 -----
llvm/lib/Target/X86/X86TargetMachine.cpp | 4 ----
llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp | 7 +------
18 files changed, 6 insertions(+), 98 deletions(-)
diff --git a/llvm/include/llvm/Target/TargetMachine.h b/llvm/include/llvm/Target/TargetMachine.h
index b5d804d8fe942..8f5721a031aed 100644
--- a/llvm/include/llvm/Target/TargetMachine.h
+++ b/llvm/include/llvm/Target/TargetMachine.h
@@ -121,7 +121,7 @@ class LLVM_ABI TargetMachine {
std::optional<PGOOptions> PGOOption;
public:
- mutable TargetOptions Options;
+ TargetOptions Options;
TargetMachine(const TargetMachine &) = delete;
void operator=(const TargetMachine &) = delete;
@@ -231,11 +231,6 @@ class LLVM_ABI TargetMachine {
return DL.getPointerSize(DL.getAllocaAddrSpace());
}
- /// Reset the target options based on the function's attributes.
- // FIXME: Remove TargetOptions that affect per-function code generation
- // from TargetMachine.
- void resetTargetOptions(const Function &F) const;
-
/// Return target specific asm information.
const MCAsmInfo &getMCAsmInfo() const { return *AsmInfo; }
diff --git a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
index b8cc69f7569d6..f65bdb0737fef 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp
@@ -491,10 +491,6 @@ AArch64TargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<AArch64Subtarget>(
TargetTriple, CPU, TuneCPU, FS, *this, isLittle, MinSVEVectorSize,
MaxSVEVectorSize, IsStreaming, IsStreamingCompatible, HasMinSize,
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
index b572e47ce0f21..b078e0835a90e 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp
@@ -1281,10 +1281,6 @@ GCNTargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[SubtargetKey];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<GCNSubtarget>(TargetTriple, GPU, FS, *this, BufRelaxed,
TBufRelaxed);
}
diff --git a/llvm/lib/Target/AMDGPU/R600TargetMachine.cpp b/llvm/lib/Target/AMDGPU/R600TargetMachine.cpp
index f6b5e049c41e4..2d7dd12a94a56 100644
--- a/llvm/lib/Target/AMDGPU/R600TargetMachine.cpp
+++ b/llvm/lib/Target/AMDGPU/R600TargetMachine.cpp
@@ -92,13 +92,8 @@ R600TargetMachine::getSubtargetImpl(const Function &F) const {
SubtargetKey.append(FS);
auto &I = SubtargetMap[SubtargetKey];
- if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
+ if (!I)
I = std::make_unique<R600Subtarget>(TargetTriple, GPU, FS, *this);
- }
return I.get();
}
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
index 2df33f4da5d27..ad6ceacb9933e 100644
--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
@@ -237,10 +237,6 @@ ARMBaseTargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<ARMSubtarget>(TargetTriple, CPU, FS, *this, isLittle,
F.hasMinSize(), DM);
diff --git a/llvm/lib/Target/CSKY/CSKYTargetMachine.cpp b/llvm/lib/Target/CSKY/CSKYTargetMachine.cpp
index d0058b9af14be..326dedfa08328 100644
--- a/llvm/lib/Target/CSKY/CSKYTargetMachine.cpp
+++ b/llvm/lib/Target/CSKY/CSKYTargetMachine.cpp
@@ -62,10 +62,6 @@ CSKYTargetMachine::getSubtargetImpl(const Function &F) const {
std::string Key = CPU + TuneCPU + FS;
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<CSKYSubtarget>(TargetTriple, CPU, TuneCPU, FS, *this);
if (I->useHardFloat() && !I->hasAnyFloatExt())
errs() << "Hard-float can't be used with current CPU,"
diff --git a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
index e42fb0b9866b3..5c72b6cb20883 100644
--- a/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonTargetMachine.cpp
@@ -262,13 +262,8 @@ HexagonTargetMachine::getSubtargetImpl(const Function &F) const {
FSAttr.isValid() ? FSAttr.getValueAsString().str() : TargetFS;
auto &I = SubtargetMap[CPU + FS];
- if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
+ if (!I)
I = std::make_unique<HexagonSubtarget>(TargetTriple, CPU, FS, *this);
- }
return I.get();
}
diff --git a/llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp b/llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp
index 10fb0d39481b1..fb0053b7077e4 100644
--- a/llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp
+++ b/llvm/lib/Target/LoongArch/LoongArchTargetMachine.cpp
@@ -121,10 +121,6 @@ LoongArchTargetMachine::getSubtargetImpl(const Function &F) const {
std::string Key = CPU + TuneCPU + FS;
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
auto ABIName = Options.MCOptions.getABIName();
if (const MDString *ModuleTargetABI = dyn_cast_or_null<MDString>(
F.getParent()->getModuleFlag("target-abi"))) {
diff --git a/llvm/lib/Target/M68k/M68kTargetMachine.cpp b/llvm/lib/Target/M68k/M68kTargetMachine.cpp
index f525d43dea41c..72f476298a02f 100644
--- a/llvm/lib/Target/M68k/M68kTargetMachine.cpp
+++ b/llvm/lib/Target/M68k/M68kTargetMachine.cpp
@@ -87,13 +87,8 @@ M68kTargetMachine::getSubtargetImpl(const Function &F) const {
auto FS = FSAttr.isValid() ? FSAttr.getValueAsString().str() : TargetFS;
auto &I = SubtargetMap[CPU + FS];
- if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
+ if (!I)
I = std::make_unique<M68kSubtarget>(TargetTriple, CPU, FS, *this);
- }
return I.get();
}
diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.cpp b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
index 9e605d165e705..17b9555b16a52 100644
--- a/llvm/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
@@ -171,10 +171,6 @@ MipsTargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[CPU + FS];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<MipsSubtarget>(
TargetTriple, CPU, FS, isLittle, *this,
MaybeAlign(F.getParent()->getOverrideStackAlignment()));
diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
index 915ca5fc44db1..de06683fd31cf 100644
--- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
+++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp
@@ -340,10 +340,6 @@ PPCTargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[CPU + TuneCPU + FS];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<PPCSubtarget>(
TargetTriple, CPU, TuneCPU,
// FIXME: It would be good to have the subtarget additions here
diff --git a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
index 3d47a27a9628c..c0de8fe473ae1 100644
--- a/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
+++ b/llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
@@ -251,10 +251,6 @@ RISCVTargetMachine::getSubtargetImpl(const Function &F) const {
<< CPU << TuneCPU << FS;
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
auto ABIName = Options.MCOptions.getABIName();
if (const MDString *ModuleTargetABI = dyn_cast_or_null<MDString>(
F.getParent()->getModuleFlag("target-abi"))) {
diff --git a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
index b9f1ad5331d4b..f92f173e689dd 100644
--- a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
+++ b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp
@@ -112,13 +112,8 @@ SparcTargetMachine::getSubtargetImpl(const Function &F) const {
FS += FS.empty() ? "+soft-float" : ",+soft-float";
auto &I = SubtargetMap[CPU + FS];
- if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
+ if (!I)
I = std::make_unique<SparcSubtarget>(CPU, TuneCPU, FS, *this);
- }
return I.get();
}
diff --git a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
index 110ba5b46fe60..5158077716d9f 100644
--- a/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
+++ b/llvm/lib/Target/SystemZ/SystemZTargetMachine.cpp
@@ -162,10 +162,6 @@ SystemZTargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[CPU + TuneCPU + FS];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<SystemZSubtarget>(TargetTriple, CPU, TuneCPU, FS,
*this);
}
diff --git a/llvm/lib/Target/TargetMachine.cpp b/llvm/lib/Target/TargetMachine.cpp
index 9243cdad43e1e..9ec10b5be0fd4 100644
--- a/llvm/lib/Target/TargetMachine.cpp
+++ b/llvm/lib/Target/TargetMachine.cpp
@@ -144,23 +144,6 @@ bool TargetMachine::isPositionIndependent() const {
return getRelocationModel() == Reloc::PIC_;
}
-/// Reset the target options based on the function's attributes.
-/// setFunctionAttributes should have made the raw attribute value consistent
-/// with the command line flag if used.
-//
-// FIXME: This function needs to go away for a number of reasons:
-// a) global state on the TargetMachine is terrible in general,
-// b) these target options should be passed only on the function
-// and not on the TargetMachine (via TargetOptions) at all.
-void TargetMachine::resetTargetOptions(const Function &F) const {
-#define RESET_OPTION(X, Y) \
- do { \
- Options.X = F.getFnAttribute(Y).getValueAsBool(); \
- } while (0)
-
- RESET_OPTION(NoSignedZerosFPMath, "no-signed-zeros-fp-math");
-}
-
/// Returns the code generation relocation model. The choices are static, PIC,
/// and dynamic-no-pic.
Reloc::Model TargetMachine::getRelocationModel() const { return RM; }
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
index 1361dd99b7072..886ea0a8ab574 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyTargetMachine.cpp
@@ -250,11 +250,6 @@ WebAssemblyTargetMachine::getSubtargetImpl(const Function &F) const {
std::string FS =
FSAttr.isValid() ? FSAttr.getValueAsString().str() : TargetFS;
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
-
return getSubtargetImpl(CPU, FS);
}
diff --git a/llvm/lib/Target/X86/X86TargetMachine.cpp b/llvm/lib/Target/X86/X86TargetMachine.cpp
index 924c20e48c672..5e729b89ad630 100644
--- a/llvm/lib/Target/X86/X86TargetMachine.cpp
+++ b/llvm/lib/Target/X86/X86TargetMachine.cpp
@@ -290,10 +290,6 @@ X86TargetMachine::getSubtargetImpl(const Function &F) const {
auto &I = SubtargetMap[Key];
if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
I = std::make_unique<X86Subtarget>(
TargetTriple, CPU, TuneCPU, FS, *this,
MaybeAlign(F.getParent()->getOverrideStackAlignment()),
diff --git a/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp b/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp
index 72cb61b5e864e..b523678cca14e 100644
--- a/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp
+++ b/llvm/lib/Target/Xtensa/XtensaTargetMachine.cpp
@@ -70,13 +70,8 @@ XtensaTargetMachine::getSubtargetImpl(const Function &F) const {
auto FS = FSAttr.isValid() ? FSAttr.getValueAsString().str() : TargetFS;
auto &I = SubtargetMap[CPU + FS];
- if (!I) {
- // This needs to be done before we create a new subtarget since any
- // creation will depend on the TM and the code generation flags on the
- // function that reside in TargetOptions.
- resetTargetOptions(F);
+ if (!I)
I = std::make_unique<XtensaSubtarget>(TargetTriple, CPU, FS, *this);
- }
return I.get();
}
More information about the llvm-commits
mailing list