http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57018
Jakub Jelinek <jakub at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2013-04-22 CC| |jakub at gcc dot gnu.org Target Milestone|--- |4.8.1 Summary|Miscompilation of bison |[4.8/4.9 Regression] |2.7.1 under "-Os |Miscompilation of bison |-fomit-frame-pointer" |2.7.1 under "-Os | |-fomit-frame-pointer" Ever Confirmed|0 |1 --- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-04-22 07:07:00 UTC --- Somewhat reduced testcase: /* { dg-do run } */ /* { dg-options "-Os -fomit-frame-pointer -fno-asynchronous-unwind-tables" } */ /* { dg-additional-options "-march=i686" { target ia32 } } */ struct A { char a[16]; } a; int f; void __attribute__((noinline, noclone)) foo (int x, struct A y) { (void) x; (void) y.a[0]; asm volatile ("" : : : "memory"); } static void bar (struct A b) { foo (0, b); if (f) f = 0; } void __attribute__((noinline, noclone)) baz (struct A b) { bar (a); a = b; } void bar1 (struct A b) { bar (b); } void bar2 (struct A b) { bar (b); } int main () { struct A b = { "\0\1\2\3\4\5\6\7\10\11\12\13\14\15\16\17" }; baz (b); if (__builtin_memcmp (a.a, b.a, 12)) __builtin_abort (); return 0; }