Patchwork configure: Disable (clang) initializer-overrides warnings

login
register
mail settings
Submitter Stefan Weil
Date Oct. 16, 2012, 8:20 p.m.
Message ID <507DC189.4060107@weilnetz.de>
Download mbox | patch
Permalink /patch/191889/
State Under Review
Headers show

Comments

Stefan Weil - Oct. 16, 2012, 8:20 p.m.
Am 14.10.2012 22:24, schrieb Peter Maydell:
> On 14 October 2012 21:15, Blue Swirl<blauwirbel@gmail.com>  wrote:
>> On Sun, Oct 14, 2012 at 8:00 PM, Peter Maydell<peter.maydell@linaro.org>  wrote:
>>> Blue Swirl previously submitted a patch which enabled this flag
>>> (among others):
>>> http://lists.gnu.org/archive/html/qemu-devel/2012-07/msg04203.html
>>
>> In my version, Clang flags were separate from GCC flags. I think it
>> would be better to run different tests for each compiler in the
>> future, that lets GCC avoid Clang flag -ffoobar which does not have
>> desirable effect to GCC and vice versa.
>
> Mmm, but at the moment it's entirely fine to pass both compilers
> the same flags, and moreover we actually pass all these flags
> to the compiler without checking if it's gcc or not; we just
> ask if the compiler will run OK with the flag passed. (I'm not
> even sure how you'd determine whether your compiler was gcc
> or clang or gcc-llvm or whatever...)
>
>> I'd also like to handle flags for sparse checker the same way.
>
> I agree that those bits of configure could be cleaner.
>
> -- PMM
>

Hi Peter, hi Blue,

gcc uses a different flag -Wno-override-init to disable initializer 
override warnings.

I tested the following patch which uses -Wextra with gcc-4.4 and gcc-4.7.
It allows compilation of QEMU without warnings.

A test with those flags and clang still has to be done.

Regards

Stefan W.


$QEMU_CFLAGS"
  QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/fpu"
  if test "$debug_info" = "yes"; then
Peter Maydell - Oct. 16, 2012, 9:19 p.m.
On 16 October 2012 21:20, Stefan Weil <sw@weilnetz.de> wrote:
> Hi Peter, hi Blue,
>
> gcc uses a different flag -Wno-override-init to disable initializer override
> warnings.
>
> I tested the following patch which uses -Wextra with gcc-4.4 and gcc-4.7.
> It allows compilation of QEMU without warnings.
>
> A test with those flags and clang still has to be done.

For clang the options have to be ordered so that -Wextra comes before
the -Wno-* options that disable bits of -Wextra, as clang processes
the options in comandline order. (See this clang bug
http://llvm.org/bugs/show_bug.cgi?id=13077 pointing out the difference
between clang and gcc and closed as "expected behaviour" :-( )
Alternatively, rather than enabling 12 warnings with -Wextra
and then disabling 4 with -Wno-*, we could just enable the
8 warnings we want.

clang still needs -Wno-initializer-overrides in any case, so this
is distinct from my patch.

I also note that you've put your options in a different bit of
configure from the part my patch touched. I think it would
probably be clearer if all the warning options went in the "try
this and use if compiler accepts it" list, even for ones that
presumably have worked for every gcc ever. (ie move some of the
options currently in the 'always use this' list).

-- PMM

Patch

diff --git a/configure b/configure
index 359e453..0818eda 100755
--- a/configure
+++ b/configure
@@ -267,6 +267,8 @@  sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
  QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
  QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes 
$QEMU_CFLAGS"
  QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
+QEMU_CFLAGS="-Wextra -Wno-missing-field-initializers $QEMU_CFLAGS"
+QEMU_CFLAGS="-Wno-override-init -Wno-sign-compare -Wno-unused-parameter 
$QEMU_CFLAGS"
  QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE