-
Notifications
You must be signed in to change notification settings - Fork 14.1k
Check for unsupported target options even with -Qunused-arguments #141698
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
Check for unsupported target options even with -Qunused-arguments #141698
Conversation
@llvm/pr-subscribers-clang-driver Author: Matthias Braun (MatzeB) ChangesFix clang accidentally skipping checks for Full diff: https://github.com/llvm/llvm-project/pull/141698.diff 2 Files Affected:
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index a5a0393ad7912..8d16d3aeeefb6 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -5362,12 +5362,6 @@ void Driver::BuildJobs(Compilation &C) const {
});
}
- // If the user passed -Qunused-arguments or there were errors, don't warn
- // about any unused arguments.
- if (Diags.hasErrorOccurred() ||
- C.getArgs().hasArg(options::OPT_Qunused_arguments))
- return;
-
// Claim -fdriver-only here.
(void)C.getArgs().hasArg(options::OPT_fdriver_only);
// Claim -### here.
@@ -5420,7 +5414,10 @@ void Driver::BuildJobs(Compilation &C) const {
!C.getActions().empty()) {
Diag(diag::err_drv_unsupported_opt_for_target)
<< A->getSpelling() << getTargetTriple();
- } else {
+ } else if (!Diags.hasErrorOccurred() &&
+ !C.getArgs().hasArg(options::OPT_Qunused_arguments)) {
+ // If the user passed -Qunused-arguments or there were errors, don't
+ // warn about any unused arguments.
Diag(clang::diag::warn_drv_unused_argument)
<< A->getAsString(C.getArgs());
}
diff --git a/clang/test/Driver/unsupported-option.c b/clang/test/Driver/unsupported-option.c
index af836cf003374..f996772702abc 100644
--- a/clang/test/Driver/unsupported-option.c
+++ b/clang/test/Driver/unsupported-option.c
@@ -27,3 +27,10 @@
// RUN: not %clang --target=x86_64 -### -mhtm -lc %s 2>&1 \
// RUN: | FileCheck %s -check-prefix=UNSUP_OPT
// UNSUP_OPT: error: unsupported option
+
+
+// RUN: not %clang -c --target=aarch64-- -mfpu=crypto-neon-fp-armv8 %s 2>&1 | \
+// RUN: FileCheck %s --check-prefix=AARCH64
+// RUN: not %clang -c -Qunused-arguments --target=aarch64-- -mfpu=crypto-neon-fp-armv8 %s 2>&1 | \
+// RUN: FileCheck %s --check-prefix=AARCH64
+// AARCH64: error: unsupported option '-mfpu=' for target 'aarch64--'
|
@llvm/pr-subscribers-clang Author: Matthias Braun (MatzeB) ChangesFix clang accidentally skipping checks for Full diff: https://github.com/llvm/llvm-project/pull/141698.diff 2 Files Affected:
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
index a5a0393ad7912..8d16d3aeeefb6 100644
--- a/clang/lib/Driver/Driver.cpp
+++ b/clang/lib/Driver/Driver.cpp
@@ -5362,12 +5362,6 @@ void Driver::BuildJobs(Compilation &C) const {
});
}
- // If the user passed -Qunused-arguments or there were errors, don't warn
- // about any unused arguments.
- if (Diags.hasErrorOccurred() ||
- C.getArgs().hasArg(options::OPT_Qunused_arguments))
- return;
-
// Claim -fdriver-only here.
(void)C.getArgs().hasArg(options::OPT_fdriver_only);
// Claim -### here.
@@ -5420,7 +5414,10 @@ void Driver::BuildJobs(Compilation &C) const {
!C.getActions().empty()) {
Diag(diag::err_drv_unsupported_opt_for_target)
<< A->getSpelling() << getTargetTriple();
- } else {
+ } else if (!Diags.hasErrorOccurred() &&
+ !C.getArgs().hasArg(options::OPT_Qunused_arguments)) {
+ // If the user passed -Qunused-arguments or there were errors, don't
+ // warn about any unused arguments.
Diag(clang::diag::warn_drv_unused_argument)
<< A->getAsString(C.getArgs());
}
diff --git a/clang/test/Driver/unsupported-option.c b/clang/test/Driver/unsupported-option.c
index af836cf003374..f996772702abc 100644
--- a/clang/test/Driver/unsupported-option.c
+++ b/clang/test/Driver/unsupported-option.c
@@ -27,3 +27,10 @@
// RUN: not %clang --target=x86_64 -### -mhtm -lc %s 2>&1 \
// RUN: | FileCheck %s -check-prefix=UNSUP_OPT
// UNSUP_OPT: error: unsupported option
+
+
+// RUN: not %clang -c --target=aarch64-- -mfpu=crypto-neon-fp-armv8 %s 2>&1 | \
+// RUN: FileCheck %s --check-prefix=AARCH64
+// RUN: not %clang -c -Qunused-arguments --target=aarch64-- -mfpu=crypto-neon-fp-armv8 %s 2>&1 | \
+// RUN: FileCheck %s --check-prefix=AARCH64
+// AARCH64: error: unsupported option '-mfpu=' for target 'aarch64--'
|
- Address review feedback - Change logic to check for `HasError()` before the loop again to be closer to the original behavior; fixes `x86-target-features.c`.
…vm#141698) Fix clang accidentally skipping checks for `err_drv_unsupported_opt_for_target` when `-Qunused-arguments` was active.
Fix clang accidentally skipping checks for
err_drv_unsupported_opt_for_target
when-Qunused-arguments
was active.