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