| /* Spurious uninitialized variable warnings, from gdb */ | |
| /* { dg-do compile } */ | |
| /* { dg-options "-O2 -Wuninitialized" } */ | |
| struct os { struct o *o; }; | |
| struct o { struct o *next; struct os *se; }; | |
| void f(struct o *o){ | |
| struct os *s; | |
| if(o) s = o->se; | |
| while(o && s == o->se){ | |
| s++; // here `o' is non-zero and thus s is initialized | |
| s == o->se // `?' is essential, `if' does not trigger the warning | |
| ? (o = o->next, o ? s = o->se : 0) | |
| : 0; | |
| } | |
| } | |