commit:     a5003d48705fa9b501022d4e6326c8f516a2eec0
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Thu Mar 26 07:49:07 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Thu Mar 26 07:50:41 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a5003d48

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

This reverts commit ab8fe14ae2e9110faa85ca1c4528b470c0be1535.
Triggers build failures on sys-libs/compiler-rt-sanitizers.

Reported-by: Craig Andrews
Bug: https://bugs.gentoo.org/714742
Bug: 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, 15 insertions(+), 14 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index d8111fb9e38..9ef9ac3685e 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -487,15 +487,11 @@ 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[@]}"
@@ -503,7 +499,14 @@ test-flag-PROG() {
                "${test_in}" -o "${test_out}"
        )
 
-       "${cmdline[@]}" &>/dev/null
+       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
 }
 
 # @FUNCTION: test-flag-CC

diff --git a/eclass/tests/flag-o-matic.sh b/eclass/tests/flag-o-matic.sh
index 6dfacb04c07..229dff52af9 100755
--- a/eclass/tests/flag-o-matic.sh
+++ b/eclass/tests/flag-o-matic.sh
@@ -161,12 +161,10 @@ out=$(CC=clang test-flags-CC -finvalid-flag)
 [[ $? -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 (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