(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
attr-returns-nonnull.c
       1  /* Verify that attribute returns_nonnull on global and local function
       2     declarations is merged.
       3     { dg-do compile }
       4     { dg-options "-Wall -fdump-tree-optimized -fdelete-null-pointer-checks" } */
       5  
       6  void foo (void);
       7  
       8  
       9  void frnn_local_local (void)
      10  {
      11    __attribute__ ((returns_nonnull)) void* frnn1 (void);
      12  
      13    if (!frnn1 ())
      14      foo ();
      15  }
      16  
      17  void gnr_local_local (void)
      18  {
      19    void* frnn1 (void);
      20  
      21    if (!frnn1 ())
      22      foo ();
      23  }
      24  
      25  void frnn_local_global (void)
      26  {
      27    __attribute__ ((returns_nonnull)) void* frnn2 (void);
      28  
      29    if (!frnn2 ())
      30      foo ();
      31  }
      32  
      33  void* frnn2 (void);
      34  
      35  void gnr_local_global (void)
      36  {
      37    if (!frnn2 ())
      38      foo ();
      39  }
      40  
      41  __attribute__ ((returns_nonnull)) void* frnn3 (void);
      42  
      43  void frnn_global_local (void)
      44  {
      45    if (!frnn3 ())
      46      foo ();
      47  }
      48  
      49  void gnr_global_local (void)
      50  {
      51    void* frnn3 (void);
      52  
      53    if (!frnn3 ())
      54      foo ();
      55  }
      56  
      57  
      58  /* { dg-final { scan-tree-dump-not "foo" "optimized" } } */