strict aliasing question
Richard Guenther
richard.guenther@gmail.com
Fri Nov 10 12:28:00 GMT 2006
On 11/10/06, Howard Chu <hyc@highlandsun.com> wrote:
> I see a lot of APIs (e.g. Cyrus SASL) that have accessor functions
> returning values through a void ** argument. As far as I can tell, this
> doesn't actually cause any problems, but gcc 4.1 with -Wstrict-aliasing
> will complain. For example, take these two separate source files:
>
> alias1.c
> ####
>
> #include <stdio.h>
>
> extern void getit( void **arg );
>
> main() {
> int *foo;
>
> getit( (void **)&foo);
> printf("foo: %x\n", *foo);
> }
> ####
>
>
> alias2.c
> ####
> static short x[] = {16,16};
>
> void getit( void **arg ) {
> *arg = x;
> }
> ####
>
> gcc -O3 -fstrict-aliasing -Wstrict-aliasing *.c -o alias
>
> The program prints the expected result with both strict-aliasing and
> no-strict-aliasing on my x86_64 box. As such, when/why would I need to
> worry about this warning?
If you compile with -O3 -combine *.c -o alias it will break.
Richard.
More information about the Gcc
mailing list