(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
pr20000.c
       1  /* PR c/20000 We only want to warn if the function returns
       2     explicitly. We do not care about the return type.  */
       3  /* { dg-do compile } */
       4  /* { dg-options "" } */
       5  
       6  int g(void) __attribute__((noreturn)); 
       7  int g2(void) __attribute__((noreturn)); /* { dg-bogus ".noreturn. function returns non-void value" } */
       8  void h(void) __attribute__((noreturn));
       9  
      10  
      11  int g(void) {
      12    return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "has return" } */
      13  }           /* { dg-warning "'noreturn' function does return" "does return" { target *-*-* } .-1 } */
      14  
      15  int g2(void) {
      16    h();
      17  }
      18  
      19  typedef int ft(void);
      20  volatile ft vg;
      21  volatile ft vg2;
      22  
      23  int vg(void); 
      24  int vg2(void); /* { dg-bogus ".noreturn. function returns non-void value" } */
      25  
      26  int vg(void) {
      27    return 1; /* { dg-warning "function declared 'noreturn' has a 'return' statement" "has return" { target c } } */
      28  }           /* { dg-warning "'noreturn' function does return" "does return" { target c } .-1 } */
      29  
      30  int vg2(void) {
      31    h();
      32  }