| /* { dg-do compile } */ | |
| /* { dg-options "-Os -Wuninitialized" } */ | |
| void bail(void) __attribute__((noreturn)); | |
| unsigned once(void); | |
| int pr(char**argv) | |
| { | |
| char *bug; | |
| unsigned check = once(); | |
| if (check) { | |
| if (*argv) | |
| bug = *++argv; | |
| } else { | |
| bug = *argv++; | |
| if (!*argv) | |
| bail(); | |
| } | |
| /* now bug is set except if (check && !*argv) */ | |
| if (check) { | |
| if (!*argv) | |
| return 0; | |
| } | |
| /* if we ever get here then bug is set */ | |
| return *bug != 'X'; | |
| } | |