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