2003-12-26 Guilhem Lavaux <guilhem@kaffe.org>
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / builtin-noret-1.c
blobb8b970e5cb93f3e3c24bde9d5db1f5a246d97810
1 /* Test for builtin noreturn attributes. */
2 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */
3 /* { dg-options "-multiply_defined suppress" { target powerpc-*-darwin* } } */
4 /* { dg-do link } */
6 extern void abort (void);
7 extern void exit (int);
8 extern void _exit (int);
9 extern void _Exit (int);
11 extern void tabort (void);
12 extern void texit (void);
13 extern void t_exit (void);
14 extern void t_Exit (void);
16 extern void link_failure (void);
18 /* Some libcs have _exit and/or _Exit, and won't allow it to be re-defined,
19 so make it weak. */
20 #pragma weak _exit
21 #pragma weak _Exit
23 int
24 main (void)
26 volatile int i = 0;
27 if (i)
28 tabort ();
29 if (i)
30 texit ();
31 if (i)
32 t_exit ();
33 if (i)
34 t_Exit ();
35 exit (0);
38 void
39 tabort (void)
41 abort ();
42 link_failure ();
45 void
46 texit (void)
48 exit (1);
49 link_failure ();
52 void
53 t_exit (void)
55 _exit (1);
56 link_failure ();
59 /* Some non-Unix libcs might not have _exit. */
60 void
61 _exit (int i)
63 abort ();
66 void
67 t_Exit (void)
69 _Exit (1);
70 link_failure ();
73 /* Some libcs might not have _Exit. */
74 void
75 _Exit (int i)
77 abort ();