text: /* Spurious uninitialized variable warnings, case 1.
     Taken from cppfiles.c (merge_include_chains) */
  /* { dg-do compile } */
  /* { dg-options "-O -Wuninitialized" } */
  
  struct list
  {
    struct list *next;
    int id;
  };
  
  extern void free (void *);
  
  void remove_dupes (struct list *el)
  {
    struct list *p, *q, *r;  /* { dg-bogus "r" "uninitialized variable warning" } */
  
    for (p = el; p; p = p->next)
    {
      for (q = el; q != p; q = q->next)
        if (q->id == p->id)
        {
  	r->next = p->next;
  	free (p);
  	p = r;
  	break;
        }
      r = p;
    }
  }
  