commit:     ab8fe14ae2e9110faa85ca1c4528b470c0be1535
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 20 22:28:19 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Fri Mar 20 22:33:36 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ab8fe14a

flag-o-matic.eclass: don't use -Werror in test-flag-PROG(), bug #712488

-Werror filters out too much (everything) if used compiler happens
to always generate warnings. Let's drop cosmetic stripping of
ignored flags until we really need it. Then we can consider more
selective filtering by using more targeted -Werror= options.

Reported-by: Anton Gubarkov
Closes: https://bugs.gentoo.org/712488
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/flag-o-matic.eclass   | 19 ++++++++-----------
 eclass/tests/flag-o-matic.sh | 10 ++++++----
 2 files changed, 14 insertions(+), 15 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 9ef9ac3685e..d8111fb9e38 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -487,11 +487,15 @@ test-flag-PROG() {
 
        printf "%s\n" "${in_src}" > "${test_in}" || die "Failed to create 
'${test_in}'"
 
+       # Don't set -Werror as there are cases when benign
+       # always-on warnings filter out all flags like bug #712488.
+       # We'll have to live with potential '-Wunused-command-line-argument'.
+       # flags.
+       #
+       # We can add more selective detection of no-op flags via
+       # '-Werror=ignored-optimization-argument' and similar error options.
        local cmdline=(
                "${comp[@]}"
-               # Clang will warn about unknown gcc flags but exit 0.
-               # Need -Werror to force it to exit non-zero.
-               -Werror
                "$@"
                # -x<lang> options need to go before first source file
                "${cmdline_extra[@]}"
@@ -499,14 +503,7 @@ test-flag-PROG() {
                "${test_in}" -o "${test_out}"
        )
 
-       if ! "${cmdline[@]}" &>/dev/null; then
-               # -Werror makes clang bail out on unused arguments as well;
-               # try to add -Qunused-arguments to work-around that
-               # other compilers don't support it but then, it's failure like
-               # any other
-               cmdline+=( -Qunused-arguments )
-               "${cmdline[@]}" &>/dev/null
-       fi
+       "${cmdline[@]}" &>/dev/null
 }
 
 # @FUNCTION: test-flag-CC

diff --git a/eclass/tests/flag-o-matic.sh b/eclass/tests/flag-o-matic.sh
index 229dff52af9..6dfacb04c07 100755
--- a/eclass/tests/flag-o-matic.sh
+++ b/eclass/tests/flag-o-matic.sh
@@ -161,10 +161,12 @@ out=$(CC=clang test-flags-CC -finvalid-flag)
 [[ $? -ne 0 && -z ${out} ]]
 ftend
 
-tbegin "test-flags-CC (gcc-valid but clang-invalid flags)"
-out=$(CC=clang test-flags-CC -finline-limit=1200)
-[[ $? -ne 0 && -z ${out} ]]
-ftend
+### '-finline-limit=1200' is 'ignored' flag, not invalid.
+### We don't filter out ignored flags currently, bug #712488
+#tbegin "test-flags-CC (gcc-valid but clang-invalid flags)"
+#out=$(CC=clang test-flags-CC -finline-limit=1200)
+#[[ $? -ne 0 && -z ${out} ]]
+#ftend
 
 tbegin "test-flags-CC (unused flags w/clang)"
 out=$(CC=clang test-flags-CC -Wl,-O1)

Reply via email to