(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
uninit-9.c
       1  /* Spurious uninitialized variable warnings.  Slight variant on the
       2     documented case, inspired by reg-stack.c:record_asm_reg_life.  */
       3  
       4  /* { dg-do compile } */
       5  /* { dg-options "-O -Wuninitialized" } */
       6  /* { dg-require-effective-target alloca } */
       7  
       8  struct foo
       9  {
      10      int type;
      11      struct foo *car;
      12      struct foo *cdr;
      13      char *data;
      14      int data2;
      15  };
      16  
      17  extern void use(struct foo *);
      18  
      19  #define CLOBBER 6
      20  #define PARALLEL 3
      21  
      22  void
      23  func(struct foo *list, int count)
      24  {
      25      int n_clobbers = 0;
      26      int i;
      27      struct foo **clob_list;   /* { dg-bogus "clob_list" "uninitialized variable warning" } */
      28  
      29      if(list[0].type == PARALLEL)
      30      {
      31  	clob_list = __builtin_alloca(count * sizeof(struct foo *));
      32  	
      33  	for(i = 1; i < count; i++)
      34  	{
      35  	    if(list[i].type == CLOBBER)
      36  		clob_list[n_clobbers++] = &list[i];
      37  	}
      38      }
      39  
      40      for(i = 0; i < n_clobbers; i++)
      41  	use(clob_list[i]);
      42  }