PR ipa/61602
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / pr42363.c
blob9c9da1373dd49498705fcef8f87739fce228fc77
1 /* PR middle-end/pr42363, extended from the test for PR middle-end/37913. */
2 /* { dg-do compile } */
3 /* { dg-options "-g" } */
5 void foo (void) __attribute__ ((noreturn));
7 static int __attribute__ ((noreturn))
8 bar (void)
10 foo ();
13 int
14 baz (void)
16 int i = bar ();
17 return i + 1;
20 int fooz (void) __attribute__ ((noreturn));
22 static int __attribute__ ((noreturn))
23 bart (void)
25 return fooz (); /* { dg-warning "noreturn" } */
28 int bazr (void)
30 int i = bart ();
31 return i + 1;
34 static inline int
35 bard (void)
37 return fooz ();
40 int bizr (void)
42 int i, j;
44 i = j = bard ();
46 return i + 1;
49 /* This might be regarded as pure and folded, rather than inlined.
50 It's pure evil. */
51 static int __attribute__ ((pure, const, noreturn))
52 barf (void)
54 } /* { dg-warning "does return" } */
56 static int __attribute__ ((pure, const))
57 bark (void)
59 barf ();
62 int buzr (void)
64 int i, j;
66 i = j = bark () + bark ();
68 return i + 1;
71 int buzt (void)
73 int i, j;
75 i = j = barf () + barf ();
77 return i + 1;
80 void bust (void)
82 while (barf ())