1/* Test for builtin noreturn attributes.  */
2/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
3
4extern void abort (void);
5extern void exit (int);
6extern void _exit (int);
7extern void _Exit (int);
8
9extern void tabort (void);
10extern void texit (void);
11extern void t_exit (void);
12extern void t_Exit (void);
13
14extern void link_failure (void);
15
16int
17main (void)
18{
19  volatile int i = 0;
20  /* The real test here is that the program links.  */
21  if (i)
22    tabort ();
23  if (i)
24    texit ();
25  if (i)
26    t_exit ();
27  if (i)
28    t_Exit ();
29  exit (0);
30}
31
32void
33tabort (void)
34{
35  abort ();
36  link_failure ();
37}
38
39void
40texit (void)
41{
42  exit (1);
43  link_failure ();
44}
45
46void
47t_exit (void)
48{
49  _exit (1);
50  link_failure ();
51}
52
53/* Some non-Unix libcs might not have _exit.  This version should never
54   get called.  */
55static void
56_exit (int i)
57{
58  abort ();
59}
60
61void
62t_Exit (void)
63{
64  _Exit (1);
65  link_failure ();
66}
67
68/* Some libcs might not have _Exit.  This version should never get called.  */
69static void
70_Exit (int i)
71{
72  abort ();
73}
74
75/* When optimizing, no calls to link_failure should remain.  In any case,
76   link_failure should not be called.  */
77
78#ifndef __OPTIMIZE__
79void
80link_failure (void)
81{
82  abort ();
83}
84#endif
85