/* { dg-do compile } */ /* { dg-options "-O2" } */ int do_something_evil (void); inline __attribute__ ((always_inline)) void q2(void) /* { dg-error "recursive inlining" } */ { if (do_something_evil ()) return; q2(); /* { dg-error "called from here" } */ q2(); /* With -O2 we don't warn here, it is eliminated by tail recursion. */ }