On 11/10/06, Howard Chu <[EMAIL PROTECTED]> 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.