OSDN Git Service

tree-optimization/18501
[pf3gnuchains/gcc-fork.git] / 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
7 struct foo
8 {
9     int type;
10     struct foo *car;
11     struct foo *cdr;
12     char *data;
13     int data2;
14 };
15
16 extern void use(struct foo *);
17
18 #define CLOBBER 6
19 #define PARALLEL 3
20
21 void
22 func(struct foo *list, int count)
23 {
24     int n_clobbers = 0;
25     int i;
26     struct foo **clob_list;   /* { dg-bogus "clob_list" "uninitialized variable warning" { xfail *-*-* } } */
27
28     if(list[0].type == PARALLEL)
29     {
30         clob_list = __builtin_alloca(count * sizeof(struct foo *));
31         
32         for(i = 1; i < count; i++)
33         {
34             if(list[i].type == CLOBBER)
35                 clob_list[n_clobbers++] = &list[i];
36         }
37     }
38
39     for(i = 0; i < n_clobbers; i++)
40         use(clob_list[i]);
41 }