On Tue, Feb 5, 2013 at 9:04 PM, Duncan Sands <span dir="ltr"><<a href="mailto:baldrick@free.fr" target="_blank">baldrick@free.fr</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Richard,<div class="im"><br>
<br>
On 31/01/13 23:19, Richard Smith wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: rsmith<br>
Date: Thu Jan 31 16:19:12 2013<br>
New Revision: 174103<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=174103&view=rev" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project?rev=174103&view=rev</a><br>
Log:<br>
Add -Wno-nested-anon-types to -pedantic builds of LLVM. This Clang warning<br>
catches uses of an extremely minor and widely-available C++ extension (which<br>
every C++ compiler I could find supports, but EDG and Clang reject in strict<br>
mode).<br>
</blockquote>
<br></div>
this broke some build bots, for example<br>
<br>
<a href="http://lab.llvm.org:8011/builders/dragonegg-x86_64-linux-gcc-4.6-test/builds/1249/steps/compile.llvm/logs/stdio" target="_blank">http://lab.llvm.org:8011/<u></u>builders/dragonegg-x86_64-<u></u>linux-gcc-4.6-test/builds/<u></u>1249/steps/compile.llvm/logs/<u></u>stdio</a><br>

<br>
At global scope:<br>
cc1plus: error: unrecognized command line option "-Wno-nested-anon-types"<br>
make[3]: *** [/home/baldrick/osuosl/slave/<u></u>dragonegg-x86_64-linux-gcc-4.<u></u>6-test/llvm.obj/lib/<u></u>Transforms/InstCombine/<u></u>Release+Debug+Asserts/<u></u>InstCombineCalls.o] Error 1<br>
<br>
This is: gcc version 4.3.2 (Debian 4.3.2-1.1)<br></blockquote><div><br></div><div><div>Sorry for the delay!</div><div><br></div><div>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!</div>
</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Best wishes, Duncan.<div class="HOEnZb"><div class="h5"><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
The diagnosed code pattern looks like this:<br>
<br>
struct X {<br>
   union {<br>
     struct {<br>
       int a;<br>
       int b;<br>
     } S;<br>
   };<br>
};<br>
<br>
Modified:<br>
     llvm/trunk/<a href="http://Makefile.config.in" target="_blank">Makefile.config.in</a><br>
     llvm/trunk/Makefile.rules<br>
     llvm/trunk/autoconf/<a href="http://configure.ac" target="_blank">configure.<u></u>ac</a><br>
     llvm/trunk/cmake/modules/<u></u>HandleLLVMOptions.cmake<br>
     llvm/trunk/configure<br>
<br>
Modified: llvm/trunk/<a href="http://Makefile.config.in" target="_blank">Makefile.config.in</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.config.in?rev=174103&r1=174102&r2=174103&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/Makefile.<u></u>config.in?rev=174103&r1=<u></u>174102&r2=174103&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/<a href="http://Makefile.config.in" target="_blank">Makefile.config.in</a> (original)<br>
+++ llvm/trunk/<a href="http://Makefile.config.in" target="_blank">Makefile.config.in</a> Thu Jan 31 16:19:12 2013<br>
@@ -366,6 +366,8 @@ COVERED_SWITCH_DEFAULT = @COVERED_SWITCH<br>
  NO_UNINITIALIZED = @NO_UNINITIALIZED@<br>
  # -Wno-maybe-uninitialized<br>
  NO_MAYBE_UNINITIALIZED = @NO_MAYBE_UNINITIALIZED@<br>
+# -Wno-nested-anon-types<br>
+NO_NESTED_ANON_TYPES = @NO_NESTED_ANON_TYPES@<br>
<br>
  # Was polly found in tools/polly?<br>
  LLVM_HAS_POLLY = @LLVM_HAS_POLLY@<br>
<br>
Modified: llvm/trunk/Makefile.rules<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/Makefile.rules?rev=174103&r1=174102&r2=174103&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/Makefile.<u></u>rules?rev=174103&r1=174102&r2=<u></u>174103&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/Makefile.rules (original)<br>
+++ llvm/trunk/Makefile.rules Thu Jan 31 16:19:12 2013<br>
@@ -665,7 +665,7 @@ LD.Flags += $(EXTRA_LD_OPTIONS)<br>
  endif<br>
<br>
  ifndef NO_PEDANTIC<br>
-CompileCommonOpts += -pedantic -Wno-long-long<br>
+CompileCommonOpts += -pedantic -Wno-long-long $(NO_NESTED_ANON_TYPES)<br>
  endif<br>
  CompileCommonOpts += -Wall -W -Wno-unused-parameter -Wwrite-strings \<br>
                       $(EXTRA_OPTIONS) $(COVERED_SWITCH_DEFAULT) \<br>
<br>
Modified: llvm/trunk/autoconf/<a href="http://configure.ac" target="_blank">configure.<u></u>ac</a><br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/autoconf/configure.ac?rev=174103&r1=174102&r2=174103&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/autoconf/<u></u>configure.ac?rev=174103&r1=<u></u>174102&r2=174103&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/autoconf/<a href="http://configure.ac" target="_blank">configure.<u></u>ac</a> (original)<br>
+++ llvm/trunk/autoconf/<a href="http://configure.ac" target="_blank">configure.<u></u>ac</a> Thu Jan 31 16:19:12 2013<br>
@@ -1264,6 +1264,7 @@ dnl Check optional compiler flags.<br>
  AC_MSG_CHECKING([optional compiler flags])<br>
  CXX_FLAG_CHECK(NO_VARIADIC_<u></u>MACROS, [-Wno-variadic-macros])<br>
  CXX_FLAG_CHECK(NO_MISSING_<u></u>FIELD_INITIALIZERS, [-Wno-missing-field-<u></u>initializers])<br>
+CXX_FLAG_CHECK(NO_NESTED_<u></u>ANON_TYPES, [-Wno-nested-anon-types])<br>
  CXX_FLAG_CHECK(COVERED_SWITCH_<u></u>DEFAULT, [-Wcovered-switch-default])<br>
  dnl GCC's potential uninitialized use analysis is weak and presents lots of<br>
  dnl false positives, so disable it.<br>
@@ -1299,7 +1300,7 @@ else<br>
    NO_UNINITIALIZED=<br>
    NO_MAYBE_UNINITIALIZED=<br>
  fi<br>
-AC_MSG_RESULT([$NO_VARIADIC_<u></u>MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])<br>
+AC_MSG_RESULT([$NO_VARIADIC_<u></u>MACROS $NO_MISSING_FIELD_INITIALIZERS $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED])<br>
<br>
  AC_ARG_WITH([python],<br>
              [AS_HELP_STRING([--with-<u></u>python], [path to python])],<br>
<br>
Modified: llvm/trunk/cmake/modules/<u></u>HandleLLVMOptions.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/HandleLLVMOptions.cmake?rev=174103&r1=174102&r2=174103&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/cmake/<u></u>modules/HandleLLVMOptions.<u></u>cmake?rev=174103&r1=174102&r2=<u></u>174103&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/cmake/modules/<u></u>HandleLLVMOptions.cmake (original)<br>
+++ llvm/trunk/cmake/modules/<u></u>HandleLLVMOptions.cmake Thu Jan 31 16:19:12 2013<br>
@@ -193,6 +193,10 @@ elseif( LLVM_COMPILER_IS_GCC_<u></u>COMPATIBLE<br>
<br>
      if (LLVM_ENABLE_PEDANTIC)<br>
        add_llvm_definitions( -pedantic -Wno-long-long )<br>
+      check_cxx_compiler_flag("-<u></u>Werror -Wnested-anon-types" CXX_SUPPORTS_NO_NESTED_ANON_<u></u>TYPES_FLAG)<br>
+      if( CXX_SUPPORTS_NO_NESTED_ANON_<u></u>TYPES_FLAG )<br>
+        set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-nested-anon-types" )<br>
+      endif()<br>
      endif (LLVM_ENABLE_PEDANTIC)<br>
      check_cxx_compiler_flag("-<u></u>Werror -Wcovered-switch-default" CXX_SUPPORTS_COVERED_SWITCH_<u></u>DEFAULT_FLAG)<br>
      if( CXX_SUPPORTS_COVERED_SWITCH_<u></u>DEFAULT_FLAG )<br>
<br>
Modified: llvm/trunk/configure<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/configure?rev=174103&r1=174102&r2=174103&view=diff" target="_blank">http://llvm.org/viewvc/llvm-<u></u>project/llvm/trunk/configure?<u></u>rev=174103&r1=174102&r2=<u></u>174103&view=diff</a><br>

==============================<u></u>==============================<u></u>==================<br>
--- llvm/trunk/configure (original)<br>
+++ llvm/trunk/configure Thu Jan 31 16:19:12 2013<br>
@@ -766,6 +766,7 @@ CONVENIENCE_LTDL_FALSE<br>
  LIBADD_DL<br>
  NO_VARIADIC_MACROS<br>
  NO_MISSING_FIELD_INITIALIZERS<br>
+NO_NESTED_ANON_TYPES<br>
  COVERED_SWITCH_DEFAULT<br>
  NO_MAYBE_UNINITIALIZED<br>
  NO_UNINITIALIZED<br>
@@ -12260,6 +12261,8 @@ NO_VARIADIC_MACROS=`$CXX -Werror -Wno-va<br>
<br>
  NO_MISSING_FIELD_INITIALIZERS=<u></u>`$CXX -Werror -Wno-missing-field-<u></u>initializers -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-missing-field-<u></u>initializers`<br>
<br>
+NO_NESTED_ANON_TYPES=`$CXX -Werror -Wno-nested-anon-types -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wno-nested-anon-types`<br>
+<br>
  COVERED_SWITCH_DEFAULT=`$CXX -Werror -Wcovered-switch-default -fsyntax-only -xc /dev/null 2>/dev/null && echo -Wcovered-switch-default`<br>
<br>
  if test "$GXX" = "yes"<br>
@@ -12289,8 +12292,8 @@ else<br>
    NO_UNINITIALIZED=<br>
    NO_MAYBE_UNINITIALIZED=<br>
  fi<br>
-{ echo "$as_me:$LINENO: result: $NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED" >&5<br>
-echo "${ECHO_T}$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED" >&6; }<br>
+{ 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<br>
+echo "${ECHO_T}$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS $NO_NESTED_ANON_TYPES $COVERED_SWITCH_DEFAULT $NO_UNINITIALIZED $NO_MAYBE_UNINITIALIZED" >&6; }<br>
<br>
<br>
  # Check whether --with-python was given.<br>
@@ -22478,6 +22481,7 @@ CONVENIENCE_LTDL_FALSE!$<u></u>CONVENIENCE_LTDL<br>
  LIBADD_DL!$LIBADD_DL$ac_delim<br>
  NO_VARIADIC_MACROS!$NO_<u></u>VARIADIC_MACROS$ac_delim<br>
  NO_MISSING_FIELD_INITIALIZERS!<u></u>$NO_MISSING_FIELD_<u></u>INITIALIZERS$ac_delim<br>
+NO_NESTED_ANON_TYPES!$NO_<u></u>NESTED_ANON_TYPES$ac_delim<br>
  COVERED_SWITCH_DEFAULT!$<u></u>COVERED_SWITCH_DEFAULT$ac_<u></u>delim<br>
  NO_MAYBE_UNINITIALIZED!$NO_<u></u>MAYBE_UNINITIALIZED$ac_delim<br>
  NO_UNINITIALIZED!$NO_<u></u>UNINITIALIZED$ac_delim<br>
<br>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
<br>
</blockquote>
<br>
______________________________<u></u>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/<u></u>mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br>