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