Question on GCC 4.6 and -fpermissive
Jonathan Wakely
jwakely.gcc@gmail.com
Wed Aug 10 09:32:00 GMT 2011
On 10 August 2011 09:22, Jeffrey Walton wrote:
> Hi Guys,
>
> I'm running a table drive test suite. The tables are about 250K each,
> and there are 7 of them. Each row in the table looks similar to the
> following (this particular row is consumed by a 'short'):
>
> { 0x0001, 0x0001, <some bool> };
>
> Without '-fpermissive' the code would not compile'.
Why? You might want to fix that. -fpermissive is a band-aid to work
around broken code, for backwards compatibility. You should aim to
wean yourself off it. You shouldn't write new code that relies on it.
> With
> '-fpermissive', the code compiles but produces a warning for each line
> encountered:
>
> AdditionVerify.cpp:68:1: warning: narrowing conversion of ‘65535’
> from ‘int’ to ‘short int’ inside { } [-fpermissive]
>
> GCC's 4.6 docs do not appear to have a [no]warning switch for
> permissive [1] (the docs for the switches don't even mention the word
> 'permissive').
It's listed in the options summary:
http://gcc.gnu.org/onlinedocs/gcc/Option-Summary.html
and here:
http://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Dialect-Options.html
It's not a warning option, it alters the C++ language that's
supported, to allow non-standard constructs and things that were
"traditionally" allowed (either by pre-standard C++ compilers or by
earlier versions of G++)
If you don't want -fpermissive then don't use it.
> Taking a stab in the dark, my current CXXFLAGS looks is
> below, which has not helped.
>
> CXXFLAGS += -std=c++0x -fpermissive -Wno-permissive \
> -Wno-narrow -Wno-narrowing -Wno-narrow-conversion
> -Wno-narrowing-conversion -Wno-coversion
Well no, clearly just making up options isn't going to help.
> Any ideas on how to hush the compiler for for this warning. I'm
> concerned it the volume of output might be masking more relevant
> warnings.
If you don't want warnings about narrowing then use -Wno-narrow, which
works for me. If it doesn't work for you please provide a *working*
example, not pseudocode or one that doesn't actually demonstrate your
point.
More information about the Gcc-help
mailing list