[clang] [Clang][Driver] Valid `-march` value is not mandatory in AArch64 multilib (PR #151103)
Victor Campos via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 29 04:11:57 PDT 2025
https://github.com/vhscampos updated https://github.com/llvm/llvm-project/pull/151103
>From badaaa958a664ee01eeead1b9dc1e6d6c99d7c82 Mon Sep 17 00:00:00 2001
From: Victor Campos <victor.campos at arm.com>
Date: Tue, 29 Jul 2025 09:15:06 +0100
Subject: [PATCH 1/2] [Clang][Driver] Valid `-march` value is not mandatory in
AArch64 multilib
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.
---
clang/lib/Driver/ToolChain.cpp | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
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);
>From c86958733f6746e7ac9777ed3eb68813f9050b18 Mon Sep 17 00:00:00 2001
From: Victor Campos <victor.campos at arm.com>
Date: Tue, 29 Jul 2025 12:10:36 +0100
Subject: [PATCH 2/2] Add test
---
clang/test/Driver/arm-aarch64-multilib-invalid-arch.c | 2 ++
1 file changed, 2 insertions(+)
create mode 100644 clang/test/Driver/arm-aarch64-multilib-invalid-arch.c
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