------- Comment #8 from belyshev at depni dot sinp dot msu dot ru 2007-10-09 18:43 ------- // Small testcase, compile with "-march=i586 -O0 -fomit-frame-pointer":
__attribute__((noreturn,noinline)) void abrt (const char *fi, const char *fu) { __builtin_abort (); } __attribute__((noinline)) int f (int k) { return k; } __attribute__((noinline)) int g (int t, int k) { int b; switch (t) { case 0: abrt (__FILE__, __FUNCTION__); case 1: b = f (k); break; case 2: b = f (k); break; case 3: b = f (k); break; case 4: b = f (k); break; default: abrt (__FILE__, __FUNCTION__); } return b; } int main (void) { if (g (3, 1337) != 1337) abrt (__FILE__, __FUNCTION__); return 0; } // Fails only with -fomit-frame-pointer and with -march <= i586. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33676