Re: Setting -Werror in CFLAGS - Mailing list pgsql-hackers

From Peter Eisentraut
Subject Re: Setting -Werror in CFLAGS
Date
Msg-id 1326915047.9180.12.camel@vanquo.pezone.net
Whole thread Raw
In response to Setting -Werror in CFLAGS  (Peter Geoghegan <peter@2ndquadrant.com>)
List pgsql-hackers
On ons, 2012-01-04 at 00:39 +0000, Peter Geoghegan wrote:
> This should work:
> 
> ./configure --prefix=/home/peter/pgsql CFLAGS="-Werror
> -Wno-error=unused-but-set-variable"
> 
> However, it does not (with or without the -Wno-error):
> 
> checking whether getpwuid_r takes a fifth argument... no
> checking whether strerror_r returns int... no
> checking test program... ok
> checking whether long int is 64 bits... no
> checking whether long long int is 64 bits... no
> configure: error: Cannot find a working 64-bit integer type.
> 
> Obviously it breaks this one configure test. However, I got it to work
> in 2 minutes by hacking up config.log. It would be nice if someone
> could fix the test (and possibly later ones) so that it doesn't
> produce a warning/error when invoking the compiler, and it finds a
> 64-bit int type as expected.

I've tried this in the past, it's pretty difficult to make this work
throughout.  I think and easier approach would be to filter out -Werror
out of CFLAGS early in configure and put it back at the end.

> That way, it could sort of become folk wisdom that you should build
> Postgres with those flags during
> development, and maybe even, on some limited basis, on the build farm,
> and we'd all be sightly better off.

I think in practice many developers do this anyway, so you do get that
level of testing already.

> There is an entry in the parser Makefile to support this sort of use,
> which makes it look like my -Wno-error=unused-but-set-variable use
> would be redundant if it worked:
> 
> # Latest flex causes warnings in this file.
> ifeq ($(GCC),yes)
> gram.o: CFLAGS += -Wno-error
> endif
> 
> (although we could discriminate better within the parse here by using my flag).

The -Wno-error=something flag doesn't work in older versions of GCC.
But feel free to research which ones.

> As if to prove my point, I found this warning which I didn't
> previously notice, just from 5 minutes of playing around:
> 
> hashovfl.c: In function ‘_hash_freeovflpage’:
> hashovfl.c:394:10: error: variable ‘bucket’ set but not used
> [-Werror=unused-but-set-variable]
> cc1: all warnings being treated as errors
> 
> (plus others)

See thread "[HACKERS] lots of unused variable warnings in assert-free
builds" for the reason.




pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: Command Triggers
Next
From: Tom Lane
Date:
Subject: Re: Command Triggers