(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
uninit-pr101494.c
       1  /* PR middle-end/101494 - bogus -Wmaybe-uninitialized on memrchr of size 0
       2     { dg-do compile }
       3     { dg-options "-O2 -Wall" }
       4     { dg-require-effective-target alloca } */
       5  
       6  typedef __SIZE_TYPE__ size_t;
       7  
       8  void* alloca (size_t);
       9  
      10  __attribute__ ((malloc, alloc_size (1))) void* alloc (size_t);
      11  
      12  __attribute__ ((access (read_only, 1, 2))) void* sink (void*, size_t);
      13  
      14  void test_alloca_zero (size_t i)
      15  {
      16    char *p = alloca (0);
      17    sink (p, 0);      // { dg-bogus "\\\[-Wuninitialized" }
      18  }
      19  
      20  void test_alloca_zero_pi (size_t i)
      21  {
      22    char *p = alloca (0);
      23    sink (p + i, 0);
      24  }
      25  
      26  void test_alloca_cst (void)
      27  {
      28    char *p = alloca (7);
      29    sink (p, 0);      // { dg-bogus "\\\[-Wuninitialized" }
      30  }
      31  
      32  void test_alloca_cst_p1 (void)
      33  {
      34    char *p = alloca (7);
      35    sink (p + 1, 0);  // { dg-bogus "\\\[-Wuninitialized" }
      36  }
      37  
      38  void test_alloca_cst_p7 (void)
      39  {
      40    char *p = alloca (7);
      41    sink (p + 7, 0);  // { dg-bogus "\\\[-Wuninitialized" }
      42  }
      43  
      44  void test_alloca_var (size_t n)
      45  {
      46    char *p = alloca (n);
      47    sink (p, 0);      // { dg-bogus "\\\[-Wuninitialized" }
      48  }
      49  
      50  void test_alloca_var_p1 (size_t n)
      51  {
      52    char *p = alloca (n);
      53    sink (p + 1, 0);  // { dg-bogus "\\\[-Wuninitialized" }
      54  }
      55  
      56  void test_alloca_var_pn (size_t n)
      57  {
      58    char *p = alloca (n);
      59    sink (p + n, 0);  // { dg-bogus "\\\[-Wuninitialized" }
      60  }
      61