[clang] 9d63a09 - [Driver] Improve error message for -Wa,-x=unknown
Fangrui Song via cfe-commits
cfe-commits at lists.llvm.org
Thu Aug 15 17:04:47 PDT 2024
Author: Fangrui Song
Date: 2024-08-15T17:04:41-07:00
New Revision: 9d63a09b452b641e3cc5d88066464b8250bd2bf7
URL: https://github.com/llvm/llvm-project/commit/9d63a09b452b641e3cc5d88066464b8250bd2bf7
DIFF: https://github.com/llvm/llvm-project/commit/9d63a09b452b641e3cc5d88066464b8250bd2bf7.diff
LOG: [Driver] Improve error message for -Wa,-x=unknown
Added:
Modified:
clang/lib/Driver/ToolChains/Clang.cpp
clang/test/Driver/arm-target-as-mimplicit-it.s
clang/test/Driver/relax.c
Removed:
################################################################################
diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index c26ebd1ba56ba..2b7241964a345 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -2621,6 +2621,11 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
continue; // LLVM handles bigobj automatically
auto Equal = Value.split('=');
+ auto checkArg = [&](std::initializer_list<const char *> Set) {
+ if (!llvm::is_contained(Set, Equal.second))
+ D.Diag(diag::err_drv_unsupported_option_argument)
+ << (Twine("-Wa,") + Equal.first + "=").str() << Equal.second;
+ };
switch (C.getDefaultToolChain().getArch()) {
default:
break;
@@ -2629,8 +2634,8 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
if (Equal.first == "-mrelax-relocations" ||
Equal.first == "--mrelax-relocations") {
UseRelaxRelocations = Equal.second == "yes";
- if (llvm::is_contained({"yes", "no"}, Equal.second))
- continue;
+ checkArg({"yes", "no"});
+ continue;
}
if (Value == "-msse2avx") {
CmdArgs.push_back("-msse2avx");
@@ -2651,8 +2656,8 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
if (Equal.first == "-mimplicit-it") {
// Only store the value; the last value set takes effect.
ImplicitIt = Equal.second;
- if (CheckARMImplicitITArg(Equal.second))
- continue;
+ checkArg({"always", "never", "arm", "thumb"});
+ continue;
}
if (Value == "-mthumb")
// -mthumb has already been processed in ComputeLLVMTriple()
diff --git a/clang/test/Driver/arm-target-as-mimplicit-it.s b/clang/test/Driver/arm-target-as-mimplicit-it.s
index d30433ab374d5..e40206dfc3a29 100644
--- a/clang/test/Driver/arm-target-as-mimplicit-it.s
+++ b/clang/test/Driver/arm-target-as-mimplicit-it.s
@@ -30,7 +30,7 @@
/// Test invalid input.
// RUN: not %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
-// RUN: not %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=XINVALID
+// RUN: not %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
// RUN: not %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always -Wa,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
// RUN: not %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
@@ -47,5 +47,4 @@
// NEVER-NOT: "-arm-implicit-it={{.*}}"
// ARM: "-mllvm" "-arm-implicit-it=arm"
// THUMB: "-mllvm" "-arm-implicit-it=thumb"
-// INVALID: error: unsupported argument '-mimplicit-it=foo' to option '-Wa,'
-// XINVALID: error: unsupported argument '-mimplicit-it=foo' to option '-Xassembler'
+// INVALID: error: unsupported argument 'foo' to option '-Wa,-mimplicit-it='
diff --git a/clang/test/Driver/relax.c b/clang/test/Driver/relax.c
index 4771b9e3af111..9315a0045f1f4 100644
--- a/clang/test/Driver/relax.c
+++ b/clang/test/Driver/relax.c
@@ -4,7 +4,7 @@
// CHECK: "-mrelax-relocations=no"
// RUN: not %clang -### --target=x86_64 -c -Wa,-mrelax-relocations=x %s 2>&1 | FileCheck %s --check-prefix=ERR
-// ERR: error: unsupported argument '-mrelax-relocations=x' to option '-Wa,'
+// ERR: error: unsupported argument 'x' to option '-Wa,-mrelax-relocations='
// RUN: not %clang -### --target=aarch64 -c -Wa,-mrelax-relocations=no %s 2>&1 | FileCheck %s --check-prefix=ERR2
// ERR2: error: unsupported argument '-mrelax-relocations=no' to option '-Wa,'
More information about the cfe-commits
mailing list