The man page of gcc states:

       -Wuninitialized
           Warn if an automatic variable is used without first being initial-
           ized or if a variable may be clobbered by a "setjmp" call.

           These warnings are possible only in optimizing compilation, because
           they require data flow information that is computed only when opti-
           mizing.  If you don't specify -O, you simply won't get these warn-
           ings.

This limitation, while understandable from the implementation standpoint, has a
nasty consequence:
one cannot use -Wunitialized and debug at the same time, because the -O very
efficiently destroys
information that is needed for debugging (such as being able to display local
variables).

The above triplets are for Apple's gcc 4.0.0, but that is irrelevant, the same
thing happens on every gcc
platform.  In effect, this means that one needs to do two separate compiles
while debugging a program: 
a "warnings" compile and a "debugging" compile.

Suggestion: if the -Wunitialized is specified (and no -O), do just enough data
flow analysis to perform
the analysis required for the -Wunitialized, but abstain from doing anything
that breaks debuggability.


-- 
           Summary: do not require -O for -Wunitialized
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: jhi at iki dot fi
 GCC build triplet: powerpc-apple-darwin8
  GCC host triplet: powerpc-apple-darwin8
GCC target triplet: powerpc-apple-darwin8


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29199

Reply via email to