LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / noreturn-7.c
blob1a60bf94a0eee06f62e34708bde074a50ff8d70d
1 /* PR optimization/13394 */
2 /* Origin: Carlo Wood <carlo@gcc.gnu.org> */
4 /* Verify that a bogus "function does return" warning is not issued
5 in presence of tail recursion within a noreturn function. */
7 /* { dg-do compile } */
8 /* { dg-options "-O2 -Wreturn-type -Wmissing-noreturn -fno-ipa-icf" } */
11 void f(void) __attribute__ ((__noreturn__));
12 void _exit(int status) __attribute__ ((__noreturn__));
14 int z = 0;
16 void g() /* { dg-warning "might be candidate" } */
18 if (++z > 10)
19 _exit(0);
20 g();
23 void f()
25 if (++z > 10)
26 _exit(0);
27 f();
28 } /* { dg-bogus "does return" } */
30 int h() /* { dg-warning "might be candidate" } */
32 if (++z > 10)
33 _exit(0);
34 return h();
35 } /* { dg-bogus "end of non-void function" } */
37 int k() /* { dg-warning "might be candidate" } */
39 if (++z > 10)
40 _exit(0);
41 k();
42 } /* { dg-warning "control reaches" } */