(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
torture/
builtin-noret-1.c
       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 } */
       5  /* { dg-require-weak "" } */
       6  /* { dg-prune-output "recognized" } */
       7  /* { dg-prune-output "ld: 0711-768 WARNING" } */
       8  
       9  extern void abort (void);
      10  extern void exit (int);
      11  extern void _exit (int);
      12  extern void _Exit (int);
      13  
      14  extern void tabort (void);
      15  extern void texit (void);
      16  extern void t_exit (void);
      17  extern void t_Exit (void);
      18  
      19  extern void link_failure (void);
      20  
      21  /* Some libcs have _exit and/or _Exit, and won't allow it to be re-defined,
      22     so make it weak.  */
      23  #pragma weak _exit
      24  #pragma weak _Exit
      25  
      26  int
      27  main (void)
      28  {
      29    volatile int i = 0;
      30    if (i)
      31      tabort ();
      32    if (i)
      33      texit ();
      34    if (i)
      35      t_exit ();
      36    if (i)
      37      t_Exit ();
      38    exit (0);
      39  }
      40  
      41  void
      42  tabort (void)
      43  {
      44    abort ();
      45    link_failure ();
      46  }
      47  
      48  void
      49  texit (void)
      50  {
      51    exit (1);
      52    link_failure ();
      53  }
      54  
      55  void
      56  t_exit (void)
      57  {
      58    _exit (1);
      59    link_failure ();
      60  }
      61  
      62  /* Some non-Unix libcs might not have _exit.  */
      63  void
      64  _exit (int i)
      65  {
      66    abort ();
      67  }
      68  
      69  void
      70  t_Exit (void)
      71  {
      72    _Exit (1);
      73    link_failure ();
      74  }
      75  
      76  /* Some libcs might not have _Exit.  */
      77  void
      78  _Exit (int i)
      79  {
      80    abort ();
      81  }