1*c87b03e5Sespie /* Spurious uninitialized variable warnings, case 1. 2*c87b03e5Sespie Taken from cppfiles.c (merge_include_chains) */ 3*c87b03e5Sespie /* { dg-do compile } */ 4*c87b03e5Sespie /* { dg-options "-O -Wuninitialized" } */ 5*c87b03e5Sespie 6*c87b03e5Sespie struct list 7*c87b03e5Sespie { 8*c87b03e5Sespie struct list *next; 9*c87b03e5Sespie int id; 10*c87b03e5Sespie }; 11*c87b03e5Sespie 12*c87b03e5Sespie extern void free (void *); 13*c87b03e5Sespie remove_dupes(struct list * el)14*c87b03e5Sespievoid remove_dupes (struct list *el) 15*c87b03e5Sespie { 16*c87b03e5Sespie struct list *p, *q, *r; /* { dg-bogus "r" "uninitialized variable warning" { xfail *-*-* } } */ 17*c87b03e5Sespie 18*c87b03e5Sespie for (p = el; p; p = p->next) 19*c87b03e5Sespie { 20*c87b03e5Sespie for (q = el; q != p; q = q->next) 21*c87b03e5Sespie if (q->id == p->id) 22*c87b03e5Sespie { 23*c87b03e5Sespie r->next = p->next; 24*c87b03e5Sespie free (p); 25*c87b03e5Sespie p = r; 26*c87b03e5Sespie break; 27*c87b03e5Sespie } 28*c87b03e5Sespie r = p; 29*c87b03e5Sespie } 30*c87b03e5Sespie } 31