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

Duncan Sands baldrick at free.fr
Sat Feb 9 03:22:42 PST 2013


Hi Richard, that fixed it, thanks a lot.

Ciao, Duncan.

PS: Nice solution!

On 08/02/13 23:58, Richard Smith wrote:
> On Tue, Feb 5, 2013 at 9:04 PM, Duncan Sands <baldrick at free.fr
> <mailto: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 <http://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 <http://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 <http://Makefile.config.in> (original)
>         +++ llvm/trunk/Makefile.config.in <http://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 <mailto: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 <mailto:llvm-commits at cs.uiuc.edu>
>     http://lists.cs.uiuc.edu/__mailman/listinfo/llvm-commits
>     <http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits>
>
>




More information about the llvm-commits mailing list