http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55253
--- Comment #1 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-11-11 09:22:12 UTC --- Reduced: markus@x4 /tmp % cat test.i struct { int mallocFailed; } *a; struct StrAccum { int useMalloc; } b, c; static void fn1 (struct StrAccum *p1, int p2) { if (p2 == 0) return; if (p1->useMalloc) a->mallocFailed = 0; } void fn2 (struct StrAccum *p1) { fn1 (p1, 1); } void fn3 (struct StrAccum *p1) { fn1 (p1, 1); } void fn4 () { c.useMalloc = 1; fn1 (&c, 0); } int main () { fn3 (&b); return 0; } markus@x4 /tmp % gcc -Os test.i && ./a.out [1] 25665 segmentation fault ./a.out markus@x4 /tmp % gcc -O2 test.i && ./a.out markus@x4 /tmp %