1/* Spurious uninitialized variable warnings, from gdb */
2/* { dg-do compile } */
3/* { dg-options "-O2 -Wuninitialized" } */
4struct os { struct o *o; };
5struct o { struct o *next; struct os *se; };
6void f(struct o *o){
7  struct os *s;
8  if(o) s = o->se;
9  while(o && s == o->se){
10    s++; // here `o' is non-zero and thus s is initialized
11    s == o->se  // `?' is essential, `if' does not trigger the warning
12      ? (o = o->next, o ? s = o->se : 0)
13      : 0;
14  }
15}
16
17
18
19