/* { dg-do compile { target { i?86-*-* x86_64-*-* } } } */ /* { dg-options "-march=opteron-sse3 -Ofast --param l1-cache-line-size=3 -Wdisabled-optimization" } */ /* { dg-require-effective-target indirect_jumps } */ #include extern void abort (void); jmp_buf buf; void raise0(void) { __builtin_longjmp (buf, 1); } int execute(int cmd) /* { dg-warning "'l1-cache-size' parameter is not a power of two 3" } */ { int last = 0; if (__builtin_setjmp (buf) == 0) while (1) { last = 1; raise0 (); } if (last == 0) return 0; else return cmd; } int execute2(int cmd, int cmd2) { int last = 0; if (__builtin_setjmp (buf) == 0) while (1) { last = 1; raise0 (); } if (last == 0) return 0; else return cmd; } int main(void) { if (execute (1) == 0) abort (); if (execute2 (1, 2) == 0) abort (); return 0; }