------- Comment #15 from rguenth at gcc dot gnu dot org 2010-05-05 13:56 ------- Testcase that does not violate strict aliasing rules (and thus should not be miscompiled at -O2 or -Os either):
extern char B[256 * sizeof(void *)]; typedef void *FILE; typedef struct globals { int c; FILE **l; } __attribute__((may_alias)) T; void* xrealloc(void *vector, unsigned sizeof_and_shift, int idx); void add_input_file(FILE *file) { (*(T*)&B).l = xrealloc(((*(T*)&B).l), (sizeof(((*(T*)&B).l)[0]) << 8) + (2), ((*(T*)&B).c)); (*(T*)&B).l[(*(T*)&B).c++] = file; } I have a patch. Workaround for 4.5.0: -fno-pta. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43987