[Mesa-dev] [PATCH] mesa: Remove C++11 narrowing warnings

Kenneth Graunke kenneth at whitecape.org
Fri Aug 10 08:01:05 PDT 2012


On 08/10/2012 07:51 AM, Chad Versace wrote:
> On 08/09/2012 01:22 PM, Kenneth Graunke wrote:
>> On 08/09/2012 01:10 PM, Chad Versace wrote:
>>> Add -Wno-narrowing to CXXFLAGS for gcc.
>>>
>>> This removes warnings of the form
>>>     warning: narrowing conversion of X from 'int' to 'float' inside { } is
>>>     ill-formed in C++11 [-Wnarrowing]
>>> in ff_fragment_shader.cpp and gen6_blorp.cpp of the form.  When building
>>> i965, I observed no other difference in the build output.
>>>
>>> CC: Kenneth Graunke <kenneth at whitecape.org>
>>> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
>>> ---
>>>  configure.ac | 3 +++
>>>  1 file changed, 3 insertions(+)
>>>
>>> diff --git a/configure.ac b/configure.ac
>>> index 89686b4..fa4fd71 100644
>>> --- a/configure.ac
>>> +++ b/configure.ac
>>> @@ -228,6 +228,9 @@ if test "x$GXX" = xyes; then
>>>      # gcc's builtin memcmp is slower than glibc's
>>>      # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43052
>>>      CXXFLAGS="$CXXFLAGS -fno-builtin-memcmp"
>>> +
>>> +    # Silence C++11 warnings that we don't care about.
>>> +    CXXFLAGS="$CXXFLAGS -Wno-narrowing"
>>>  fi
>>>  
>>>  dnl even if the compiler appears to support it, using visibility attributes isn't
>>
>> Nak.  I believe this will break the build if using a g++ too old to
>> recognize -Wno-narrowing.  You'd need to do the whole rigamarole used in
>> the compiler flag checks a bit earlier.  Or import the handy m4 macro
>> from xorg-util-macros which does all the rigamarole in one line.
> 
> It's safe to do this. If an old gcc encounters a -Wno option that it does not
> recognize, then it will usually silently ignore it. I verified this by building
> with -Wno-whatever, and the option was silently ignored, as expected.
> 
> From the GCC Manual [http://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html],
> emphasis mine:
> 
> When an unrecognized warning option is requested (e.g., -Wunknown-warning), GCC
> emits a diagnostic stating that the option is not recognized. However, if the
> -Wno- form is used, the behavior is slightly different: no diagnostic is
> produced for -Wno-unknown-warning unless other diagnostics are being produced.
> ***This allows the use of new -Wno- options with old compilers***, but if
> something goes wrong, the compiler warns that an unrecognized option is present.

Oh cool! :D

I had no idea it did that.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>



More information about the mesa-dev mailing list