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 )