http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57359
--- Comment #8 from Dara Hazeghi <dhazeghi at yahoo dot com> --- Okay, here is I think a more clear example. However, from what Jakub says above, this is probably undefined. int printf(const char *, ...); union { int i; long long ll; } u; long long *pll = &u.ll; int *pi = &u.i; int a = 1, *pa = &a; void foo () { int i = 0; for (; i <= 1; i++) { *pll = a; *pi = 0; a = *pa; } } int main () { foo (); printf ("%d\n", u.i); return 0; }