http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47444
--- Comment #5 from Manuel López-Ibáñez <manu at gcc dot gnu.org> 2011-01-25 12:58:12 UTC --- (In reply to comment #4) > Well. You might argue that the wording should be 'may be' in all cases > where the offending statement might not be executed (which is certainly > undecidable as you can't know whether the function is executed at all). > But it also isn't the way we handle other warnings (in particular the > uninitialized variable uses). This is strange. We *precisely* says "is uninitialized" when it can be proved that it happens and "may be uninitialized" when it is just some code-paths or we cannot prove that it doesn't happen. And we certainly (or used to, I haven't been following these bugs lately) classify as bugs when the wrong message is printed. > Thus I think we should not fix this bug (and it is a non-bug, as certainly > the code in question isn't obviously dead). > > Interprocedual analysis could see that we call the function with a boolean > value (thus, either 0 or 1). > > That said - we can't suit everyone with this kind of warnings. Then I guess we should just point out people to static analysis tools, like http://clang-analyzer.llvm.org/, which are more suited for this task than GCC.