Skip to content

Conversation

labrinea
Copy link
Collaborator

@labrinea labrinea commented Apr 7, 2024

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.

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.
@labrinea labrinea requested a review from ilinpv April 7, 2024 20:53
@llvmbot llvmbot added clang Clang issues not falling into any other category clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' labels Apr 7, 2024
@labrinea labrinea requested a review from jroelofs April 7, 2024 20:53
@llvmbot
Copy link
Member

llvmbot commented Apr 7, 2024

@llvm/pr-subscribers-clang

@llvm/pr-subscribers-clang-driver

Author: Alexandros Lamprineas (labrinea)

Changes

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.


Full diff: https://github.com/llvm/llvm-project/pull/87942.diff

2 Files Affected:

  • (modified) clang/lib/Driver/ToolChains/Clang.cpp (+7-6)
  • (modified) clang/test/Driver/aarch64-features.c (+1)
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 \

@Sirraide
Copy link
Member

@labrinea @jroelofs Is there anything that still needs to be done here or can this be merged?

@labrinea
Copy link
Collaborator Author

@labrinea @jroelofs Is there anything that still needs to be done here or can this be merged?

Currently the dependent PR #87939 is on hold. Unless it moves forward this PR is not needed.

@Sirraide
Copy link
Member

Makes sense; I was just going through some of the old prs w/ little activity to make sure we haven’t forgotten about them ;Þ

@labrinea
Copy link
Collaborator Author

Closing in favor of #116028

@labrinea labrinea closed this Nov 13, 2024
@labrinea labrinea deleted the fmv-target-feature branch November 25, 2024 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants