1 /* Spurious uninitialized variable warnings, from gdb */ 2 /* { dg-do compile } */ 3 /* { dg-options "-O2 -Wuninitialized" } */ 4 struct os { struct o *o; }; 5 struct o { struct o *next; struct os *se; }; f(struct o * o)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