[llvm] r174103 - Add -Wno-nested-anon-types to -pedantic builds of LLVM. This Clang warning

Richard Smith richard at metafoo.co.uk
Fri Feb 8 14:58:35 PST 2013


On Tue, Feb 5, 2013 at 9:04 PM, Duncan Sands <baldrick at free.fr> wrote:

> Hi Richard,
>
>
> On 31/01/13 23:19, Richard Smith wrote:
>
>> Author: rsmith
>> Date: Thu Jan 31 16:19:12 2013
>> New Revision: 174103
>>
>> URL: http://llvm.org/viewvc/llvm-**project?rev=174103&view=rev<http://llvm.org/viewvc/llvm-project?rev=174103&view=rev>
>> Log:
>> Add -Wno-nested-anon-types to -pedantic builds of LLVM. This Clang warning
>> catches uses of an extremely minor and widely-available C++ extension
>> (which
>> every C++ compiler I could find supports, but EDG and Clang reject in
>> strict
>> mode).
>>
>
> this broke some build bots, for example
>
> http://lab.llvm.org:8011/**builders/dragonegg-x86_64-**
> linux-gcc-4.6-test/builds/**1249/steps/compile.llvm/logs/**stdio<http://lab.llvm.org:8011/builders/dragonegg-x86_64-linux-gcc-4.6-test/builds/1249/steps/compile.llvm/logs/stdio>
>
> At global scope:
> cc1plus: error: unrecognized command line option "-Wno-nested-anon-types"
> make[3]: *** [/home/baldrick/osuosl/slave/**dragonegg-x86_64-linux-gcc-4.*
> *6-test/llvm.obj/lib/**Transforms/InstCombine/**Release+Debug+Asserts/**InstCombineCalls.o]
> Error 1
>
> This is: gcc version 4.3.2 (Debian 4.3.2-1.1)
>

Sorry for the delay!

So... some versions of GCC have this weird behavior, where they silently
accept unknown -Wno-foo flags if the compile otherwise produces no
diagnostics (and thus pass our configure checks), but issue an *error* if
the compile produces any warnings. Should be worked around in r174770.
Please let me know if not, and sorry for the breakage!


> Best wishes, Duncan.
>
>
>
>> The diagnosed code pattern looks like this:
>>
>> struct X {
>>    union {
>>      struct {
>>        int a;
>>        int b;
>>      } S;
>>    };
>> };
>>
>> Modified:
>>      llvm/trunk/Makefile.config.in
>>      llvm/trunk/Makefile.rules
>>      llvm/trunk/autoconf/configure.**ac <http://configure.ac>
>>      llvm/trunk/cmake/modules/**HandleLLVMOptions.cmake
>>      llvm/trunk/configure
>>
>> Modified: llvm/trunk/Makefile.config.in
>> URL: http://llvm.org/viewvc/llvm-**project/llvm/trunk/Makefile.**
>> config.in?rev=174103&r1=**174102&r2=174103&view=diff<http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=174103&r1=174102&r2=174103&view=diff>
>> ==============================**==============================**
>> ==================
>> --- llvm/trunk/Makefile.config.in (original)
>> +++ llvm/trunk/Makefile.config.in Thu Jan 31 16:19:12 2013
>> @@ -366,6 +366,8 @@ COVERED_SWITCH_DEFAULT = @COVERED_SWITCH
>>   NO_UNINITIALIZED = @NO_UNINITIALIZED@
>>   # -Wno-maybe-uninitialized
>>   NO_MAYBE_UNINITIALIZED = @NO_MAYBE_UNINITIALIZED@
>> +# -Wno-nested-anon-types
>> +NO_NESTED_ANON_TYPES = @NO_NESTED_ANON_TYPES@
>>
>>   # Was polly found in tools/polly?
>>   LLVM_HAS_POLLY = @LLVM_HAS_POLLY@
>>
>> Modified: llvm/trunk/Makefile.rules
>> URL: http://llvm.org/viewvc/llvm-**project/llvm/trunk/Makefile.**
>> rules?rev=174103&r1=174102&r2=**174103&view=diff<http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=174103&r1=174102&r2=174103&view=diff>
>> ==============================**==============================**
>> ==================
>> --- llvm/trunk/Makefile.rules (original)
>> +++ llvm/trunk/Makefile.rules Thu Jan 31 16:19:12 2013
>> @@ -665,7 +665,7 @@ LD.Flags += $(EXTRA_LD_OPTIONS)
>>   endif
>>
>>   ifndef NO_PEDANTIC
>> -CompileCommonOpts += -pedantic -Wno-long-long
>> +CompileCommonOpts += -pedantic -Wno-long-long $(NO_NESTED_ANON_TYPES)
>>   endif
>>   CompileCommonOpts += -Wall -W -Wno-unused-parameter -Wwrite-strings \
>>                        $(EXTRA_OPTIONS) $(COVERED_SWITCH_DEFAULT) \
>>
>> Modified: llvm/trunk/autoconf/configure.**ac <http://configure.ac>
>> URL: http://llvm.org/viewvc/llvm-**project/llvm/trunk/autoconf/**
>> configure.ac?rev=174103&r1=**174102&r2=174103&view=diff<http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=174103&r1=174102&r2=174103&view=diff>
>> ==============================**==============================**
>> ==================
>> --- llvm/trunk/autoconf/configure.**ac <http://configure.ac> (original)
>> +++ llvm/trunk/autoconf/configure.**ac <http://configure.ac> Thu Jan 31
>> 16:19:12 2013
>> @@ -1264,6 +1264,7 @@ dnl Check optional compiler flags.
>>   AC_MSG_CHECKING([optional compiler flags])
>>   CXX_FLAG_CHECK(NO_VARIADIC_**MACROS, [-Wno-variadic-macros])
>>   CXX_FLAG_CHECK(NO_MISSING_**FIELD_INITIALIZERS, [-Wno-missing-field-**
>> initializers])
>> +CXX_FLAG_CHECK(NO_NESTED_**ANON_TYPES, [-Wno-nested-anon-types])
>>   CXX_FLAG_CHECK(COVERED_SWITCH_**DEFAULT, [-Wcovered-switch-default])
>>   dnl GCC's potential uninitialized use analysis is weak and presents
>> lots of
>>   dnl false positives, so disable it.
>> @@ -1299,7 +1300,7 @@ else
>>     NO_UNINITIALIZED=
>>     NO_MAYBE_UNINITIALIZED=
>>   fi
>> -AC_MSG_RESULT([$NO_VARIADIC_**MACROS $NO_MISSING_FIELD_INITIALIZERS
>> $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])
>> +AC_MSG_RESULT([$NO_VARIADIC_**MACROS $NO_MISSING_FIELD_INITIALIZERS
>> $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED
>> $NO_MAYBE_UNINITIALIZED])
>>
>>   AC_ARG_WITH([python],
>>               [AS_HELP_STRING([--with-**python], [path to python])],
>>
>> Modified: llvm/trunk/cmake/modules/**HandleLLVMOptions.cmake
>> URL: http://llvm.org/viewvc/llvm-**project/llvm/trunk/cmake/**
>> modules/HandleLLVMOptions.**cmake?rev=174103&r1=174102&r2=**
>> 174103&view=diff<http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=174103&r1=174102&r2=174103&view=diff>
>> ==============================**==============================**
>> ==================
>> --- llvm/trunk/cmake/modules/**HandleLLVMOptions.cmake (original)
>> +++ llvm/trunk/cmake/modules/**HandleLLVMOptions.cmake Thu Jan 31
>> 16:19:12 2013
>> @@ -193,6 +193,10 @@ elseif( LLVM_COMPILER_IS_GCC_**COMPATIBLE
>>
>>       if (LLVM_ENABLE_PEDANTIC)
>>         add_llvm_definitions( -pedantic -Wno-long-long )
>> +      check_cxx_compiler_flag("-**Werror -Wnested-anon-types"
>> CXX_SUPPORTS_NO_NESTED_ANON_**TYPES_FLAG)
>> +      if( CXX_SUPPORTS_NO_NESTED_ANON_**TYPES_FLAG )
>> +        set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nested-anon-types"
>> )
>> +      endif()
>>       endif (LLVM_ENABLE_PEDANTIC)
>>       check_cxx_compiler_flag("-**Werror -Wcovered-switch-default"
>> CXX_SUPPORTS_COVERED_SWITCH_**DEFAULT_FLAG)
>>       if( CXX_SUPPORTS_COVERED_SWITCH_**DEFAULT_FLAG )
>>
>> Modified: llvm/trunk/configure
>> URL: http://llvm.org/viewvc/llvm-**project/llvm/trunk/configure?**
>> rev=174103&r1=174102&r2=**174103&view=diff<http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=174103&r1=174102&r2=174103&view=diff>
>> ==============================**==============================**
>> ==================
>> --- llvm/trunk/configure (original)
>> +++ llvm/trunk/configure Thu Jan 31 16:19:12 2013
>> @@ -766,6 +766,7 @@ CONVENIENCE_LTDL_FALSE
>>   LIBADD_DL
>>   NO_VARIADIC_MACROS
>>   NO_MISSING_FIELD_INITIALIZERS
>> +NO_NESTED_ANON_TYPES
>>   COVERED_SWITCH_DEFAULT
>>   NO_MAYBE_UNINITIALIZED
>>   NO_UNINITIALIZED
>> @@ -12260,6 +12261,8 @@ NO_VARIADIC_MACROS=`$CXX -Werror -Wno-va
>>
>>   NO_MISSING_FIELD_INITIALIZERS=**`$CXX -Werror -Wno-missing-field-**initializers
>> -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-missing-field-**
>> initializers`
>>
>> +NO_NESTED_ANON_TYPES=`$CXX -Werror -Wno-nested-anon-types -fsyntax-only
>> -xc /dev/null 2>/dev/null && echo -Wno-nested-anon-types`
>> +
>>   COVERED_SWITCH_DEFAULT=`$CXX -Werror -Wcovered-switch-default
>> -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wcovered-switch-default`
>>
>>   if test "$GXX" = "yes"
>> @@ -12289,8 +12292,8 @@ else
>>     NO_UNINITIALIZED=
>>     NO_MAYBE_UNINITIALIZED=
>>   fi
>> -{ echo "$as_me:$LINENO: result: $NO_VARIADIC_MACROS
>> $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED
>> $NO_MAYBE_UNINITIALIZED" >&5
>> -echo "${ECHO_T}$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS
>> $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED" >&6; }
>> +{ echo "$as_me:$LINENO: result: $NO_VARIADIC_MACROS
>> $NO_MISSING_FIELD_INITIALIZERS $NO_NESTED_ANON_TYPES
>> $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED" >&5
>> +echo "${ECHO_T}$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS
>> $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED
>> $NO_MAYBE_UNINITIALIZED" >&6; }
>>
>>
>>   # Check whether --with-python was given.
>> @@ -22478,6 +22481,7 @@ CONVENIENCE_LTDL_FALSE!$**CONVENIENCE_LTDL
>>   LIBADD_DL!$LIBADD_DL$ac_delim
>>   NO_VARIADIC_MACROS!$NO_**VARIADIC_MACROS$ac_delim
>>   NO_MISSING_FIELD_INITIALIZERS!**$NO_MISSING_FIELD_**
>> INITIALIZERS$ac_delim
>> +NO_NESTED_ANON_TYPES!$NO_**NESTED_ANON_TYPES$ac_delim
>>   COVERED_SWITCH_DEFAULT!$**COVERED_SWITCH_DEFAULT$ac_**delim
>>   NO_MAYBE_UNINITIALIZED!$NO_**MAYBE_UNINITIALIZED$ac_delim
>>   NO_UNINITIALIZED!$NO_**UNINITIALIZED$ac_delim
>>
>>
>> ______________________________**_________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/**mailman/listinfo/llvm-commits<http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>>
>>
> ______________________________**_________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/**mailman/listinfo/llvm-commits<http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130208/b2855d30/attachment.html>


More information about the llvm-commits mailing list