2015-05-04 Sandra Loosemore <sandra@codesourcery.com>
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / builtin-noret-2.c
bloba8feb4ca83471cc1c0b73b17ecfa6743b5cae94c
1 /* Test for builtin noreturn attributes when the visible declarations
2 are function-local. Modified from builtin-noret-1.c by Zack Weinberg
3 <zack@codesourcery.com>. */
4 /* { dg-options "-multiply_defined suppress" { target powerpc-*-darwin* } } */
5 /* { dg-do link } */
6 /* { dg-require-weak "" } */
7 /* { dg-prune-output "recognized" } */
8 /* { dg-prune-output "ld: 0711-768 WARNING" } */
10 extern void tabort (void);
11 extern void texit (void);
12 extern void t_exit (void);
13 extern void t_Exit (void);
15 extern void link_failure (void);
17 int
18 main (void)
20 volatile int i = 0;
21 extern void exit (int);
22 if (i)
23 tabort ();
24 if (i)
25 texit ();
26 if (i)
27 t_exit ();
28 if (i)
29 t_Exit ();
30 exit (0);
33 void
34 tabort (void)
36 extern void abort (void);
37 abort ();
38 link_failure ();
41 void
42 texit (void)
44 extern void exit (int);
45 exit (1);
46 link_failure ();
49 void
50 t_exit (void)
52 extern void _exit (int);
53 /* Some non-Unix libcs have _exit, and won't allow it to be re-defined,
54 so make it weak. */
55 #pragma weak _exit
56 _exit (1);
57 link_failure ();
60 /* Some non-Unix libcs might not have _exit. */
61 /* Some non-Unix libcs have _exit, and won't allow it to be re-defined,
62 so make it weak. */
63 #pragma weak _exit
64 void
65 _exit (int i)
67 extern void abort (void);
68 abort ();
71 void
72 t_Exit (void)
74 extern void _Exit (int);
75 /* Some libcs have _Exit, and won't allow it to be re-defined,
76 so make it weak. */
77 #pragma weak _Exit
78 _Exit (1);
79 link_failure ();
82 /* Some libcs might not have _Exit. */
83 /* Some libcs have _Exit, and won't allow it to be re-defined,
84 so make it weak. */
85 #pragma weak _Exit
86 void
87 _Exit (int i)
89 extern void abort (void);
90 abort ();