-
Notifications
You must be signed in to change notification settings - Fork 12k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[clang][FMV] Pass the '+fmv' target-feature when FMV is enabled. #87942
base: main
Are you sure you want to change the base?
Conversation
This will allow the backend to enable the corresponding subtarget feature (FeatureFMV), which in turn can be queried for llvm codegen decisions. See llvm#87939 for example.
@llvm/pr-subscribers-clang @llvm/pr-subscribers-clang-driver Author: Alexandros Lamprineas (labrinea) ChangesThis will allow the backend to enable the corresponding subtarget feature (FeatureFMV), which in turn can be queried for llvm codegen decisions. See #87939 for example. Full diff: https://github.com/llvm/llvm-project/pull/87942.diff 2 Files Affected:
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 766a9b91e3c0ad..13dbd8ab261d3d 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -7815,13 +7815,14 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
addOutlineAtomicsArgs(D, getToolChain(), Args, CmdArgs, Triple);
- if (Triple.isAArch64() &&
- (Args.hasArg(options::OPT_mno_fmv) ||
- (Triple.isAndroid() && Triple.isAndroidVersionLT(23)) ||
- getToolChain().GetRuntimeLibType(Args) != ToolChain::RLT_CompilerRT)) {
- // Disable Function Multiversioning on AArch64 target.
+ if (Triple.isAArch64()) {
CmdArgs.push_back("-target-feature");
- CmdArgs.push_back("-fmv");
+ if (Args.hasArg(options::OPT_mno_fmv) ||
+ (Triple.isAndroid() && Triple.isAndroidVersionLT(23)) ||
+ getToolChain().GetRuntimeLibType(Args) != ToolChain::RLT_CompilerRT)
+ CmdArgs.push_back("-fmv");
+ else
+ CmdArgs.push_back("+fmv");
}
if (Args.hasFlag(options::OPT_faddrsig, options::OPT_fno_addrsig,
diff --git a/clang/test/Driver/aarch64-features.c b/clang/test/Driver/aarch64-features.c
index d2075c91314a8b..4f401ea65232f2 100644
--- a/clang/test/Driver/aarch64-features.c
+++ b/clang/test/Driver/aarch64-features.c
@@ -24,6 +24,7 @@
// CHECK-FMV-OFF: "-target-feature" "-fmv"
// CHECK-FMV-NOT: "-target-feature" "-fmv"
+// CHECK-FMV: "-target-feature" "+fmv"
// Check for AArch64 out-of-line atomics default settings.
// RUN: %clang --target=aarch64-linux-android -rtlib=compiler-rt \
|
Makes sense; I was just going through some of the old prs w/ little activity to make sure we haven’t forgotten about them ;Þ |
This will allow the backend to enable the corresponding subtarget feature (FeatureFMV), which in turn can be queried for llvm codegen decisions. See #87939 for example.