1 /* Test for builtin noreturn attributes. */ 2 /* Origin: Joseph Myers <jsm28@cam.ac.uk> */ 3 4 extern void abort (void); 5 extern void exit (int); 6 extern void _exit (int); 7 extern void _Exit (int); 8 9 extern void tabort (void); 10 extern void texit (void); 11 extern void t_exit (void); 12 extern void t_Exit (void); 13 14 extern void link_failure (void); 15 16 int main(void)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 32 void tabort(void)33tabort (void) 34 { 35 abort (); 36 link_failure (); 37 } 38 39 void texit(void)40texit (void) 41 { 42 exit (1); 43 link_failure (); 44 } 45 46 void t_exit(void)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. */ 55 static void _exit(int i)56_exit (int i) 57 { 58 abort (); 59 } 60 61 void t_Exit(void)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. */ 69 static void _Exit(int i)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__ 79 void link_failure(void)80link_failure (void) 81 { 82 abort (); 83 } 84 #endif 85