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 "-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 func(struct foo * list,int count)23func(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 } 43