/* { dg-options "-O2" } */ __attribute__((noreturn)) void (*fn) (void); volatile int v; __attribute__((noreturn)) void fn0 (void) { __builtin_exit (0); } __attribute__((noreturn)) void fn1 (void) { __builtin_exit (1); } __attribute__((noinline, noclone)) void setfn (__attribute__((noreturn)) void (*x) (void)) { fn = x; } int main () { int i; if (v < 1) setfn (fn0); else setfn (fn1); fn (); }