The info manual says:

`-Winit-self (C, C++, Objective-C and Objective-C++ only)'
     Warn about uninitialized variables which are initialized with
     themselves.  Note this option can only be used with the
     `-Wuninitialized' option, which in turn only works with `-O1' and
     above.

     For example, GCC will warn about `i' being uninitialized in the
     following snippet only when `-Winit-self' has been specified:
          int f()
          {
            int i = i;
            return i;
          }

However, trying that exact example, I get:

$ g++-4.2 -O -Wuninitialized -c warnings.cc 
warnings.cc: In function ‘int f()’:
warnings.cc:3: warning: ‘i’ is used uninitialised in this function
$ g++-4.2 -O -Wuninitialized -Wno-init-self -c warnings.cc 
warnings.cc: In function ‘int f()’:
warnings.cc:3: warning: ‘i’ is used uninitialised in this function

Compiling the same code as C:

$ gcc-4.2 -x c -O -Wuninitialized -c warnings.cc 
$ gcc-4.2 -x c -O -Wuninitialized -Winit-self -c warnings.cc
warnings.cc: In function ‘f’:
warnings.cc:3: warning: ‘i’ is used uninitialised in this function
$

So it appears that g++ simply ignores the -Winit-self setting and always warns
about such code, contrary to what the documentation states (and gcc works as
documented).  ObjC seems to handle this as C does (as documented).  ObjC++
seems to handle it as C++ does (contrary to documentation).

This could be viewed as a documentation bug, though it seems more useful for
this to work for C++ (and ObjC++) as is currently documented.

It looks like -Winit-self was new in GCC 3.4, and I can the same behaviour for
C++ with g++ 3.4.4, so I don't think this is a regression.


-- 
           Summary: -Winit-self ignored when compiling C++ (and ObjC++)
           Product: gcc
           Version: 4.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: olly at survex dot com


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

Reply via email to