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 )

Reply via email to