http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58711
Bug ID: 58711 Summary: Missing "uninitialized" warning in loop condition (when compiling without optimization) Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: mimomorin at gmail dot com In the following code, `cond` is uninitialized in `while (cond)`. However, the "uninitialized" warning (i.e. "variable 'cond' is uninitialized when used here") does not emit when compiling without optimization. (If we compile it with optimization option, the warning is properly emitted.) Tested on gcc 4.4-4.8, 4.9 (trunk). int main(int argc, char* argv[]) { int cond; // Missing "uninitialized" warning while (cond != 0) { // `(void)` is used to avoid "unused-value" warning (void)&cond; } return 0; } Clang has the same issue, but it's fixed recently. ( http://llvm.org/bugs/show_bug.cgi?id=16054 )