[clang] 910f6ad - [Clang][Driver] Valid `-march` value is not mandatory in AArch64 multilib (#151103)

via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 29 06:43:15 PDT 2025


Author: Victor Campos
Date: 2025-07-29T14:43:11+01:00
New Revision: 910f6ad15abd0c812ba5df73232215bc7533f7d1

URL: https://github.com/llvm/llvm-project/commit/910f6ad15abd0c812ba5df73232215bc7533f7d1
DIFF: https://github.com/llvm/llvm-project/commit/910f6ad15abd0c812ba5df73232215bc7533f7d1.diff

LOG: [Clang][Driver] Valid `-march` value is not mandatory in AArch64 multilib (#151103)

If a user passed an invalid value to `-march`, an assertion failure
happened in the AArch64 multilib logic.

But an invalid `-march` value is an expected case that should be handled
via error messages.

This patch removes the requirement that the `-march` value must be
valid.

Added: 
    clang/test/Driver/arm-aarch64-multilib-invalid-arch.c

Modified: 
    clang/lib/Driver/ToolChain.cpp

Removed: 
    


################################################################################
diff  --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 1d7dad0d7d12b..496c0dc1780e4 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -191,9 +191,10 @@ static void getAArch64MultilibFlags(const Driver &D,
   for (const auto &ArchInfo : AArch64::ArchInfos)
     if (FeatureSet.contains(ArchInfo->ArchFeature))
       ArchName = ArchInfo->Name;
-  assert(!ArchName.empty() && "at least one architecture should be found");
-  MArch.insert(MArch.begin(), ("-march=" + ArchName).str());
-  Result.push_back(llvm::join(MArch, "+"));
+  if (!ArchName.empty()) {
+    MArch.insert(MArch.begin(), ("-march=" + ArchName).str());
+    Result.push_back(llvm::join(MArch, "+"));
+  }
 
   const Arg *BranchProtectionArg =
       Args.getLastArgNoClaim(options::OPT_mbranch_protection_EQ);

diff  --git a/clang/test/Driver/arm-aarch64-multilib-invalid-arch.c b/clang/test/Driver/arm-aarch64-multilib-invalid-arch.c
new file mode 100644
index 0000000000000..2ef27add04975
--- /dev/null
+++ b/clang/test/Driver/arm-aarch64-multilib-invalid-arch.c
@@ -0,0 +1,2 @@
+// RUN: not %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml --target=arm-none-eabi -march=invalid
+// RUN: not %clang -multi-lib-config=%S/Inputs/multilib/empty.yaml --target=aarch64-none-elf -march=invalid


        


More information about the cfe-commits mailing list