On 11/01/2010 02:46 PM, Gaetan Nadon wrote:
...elision by patrick ...

Sorry, I got confused. I forgot -O brings strict aliasing by default. We need one new variable for "real warnings" and one variable for -fno-strict-aliasing. Modules would typically use the new "real warnings" variable and some would pick the new "-fno-strict-aliasing " variable (the server and drivers for example). The CWARNFLAGS is untouched for backward compatibility. I hope I got it right :-)

For the server, it would be $(CFLAGS_WARNINGS) + $(CFLAGS_NO_STRICT_ALIASING)
For libXxf86vm, it would be $(CFLAGS_WARNINGS)

While it can be annoying in low level code to write the unions that let you keep strict-aliasing, it's worth it. gcc generates much better code with the unions in place EVEN without optimization turned on. It gives the compiler more information about the code that it can use to generate better code. I'd recommend to fix the

*dereferencing type-punned pointer will break strict-aliasing rules
*

**warnings generated by having -Wall turned on (or really by having -Wstrict-aliasing turned on by -Wall). Some will say, "but it's annoying", but better code is better code.

Patrick
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to