[Bug c++/18016] Warn about member variables initialized with itself

2011-06-27 Thread ejb at ql dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18016

--- Comment #14 from ejb at ql dot org 2011-06-27 18:06:15 UTC ---
Very nice to see this bug fixed. :-)


[Bug c/18017] -Winit-self should automatically turn on -Wuninitialized

2004-10-15 Thread ejb at ql dot org

--- Additional Comments From ejb at ql dot org  2004-10-15 20:40 ---
In other words, instead of saying:

Note this option can only be used with the`-Wuninitialized' option, which in
turn only works with `-O1' and above.

say

Note this option automatically implies -Wunitialized, which only works with
`-O1' and above.

-- 


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


[Bug c/18017] -Winit-self should automatically turn on -Wuninitialized

2004-10-15 Thread ejb at ql dot org

--- Additional Comments From ejb at ql dot org  2004-10-15 20:34 ---
I think you misunderstood.  I'm not suggesting -Wunitialized should turn on
-Winit-self; I'm suggesting the other way around.  Since -Winit-self doesn't
work without -Wunitialized, it's pointless to have it without -Wunitialized. 
-Wunitialized by itself should do what it does.  -Winit-self by itself should do
what -Winit-self -Wunitialized does now.  I hope that clarifies my request. :-)

-- 
   What|Removed |Added

 Status|RESOLVED|UNCONFIRMED
 Resolution|WONTFIX |


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


[Bug c/18017] New: -Winit-self should automatically turn on -Wuninitialized

2004-10-15 Thread ejb at ql dot org
The documentation clearly states that -Winit-self doesn't work without
-Wuninitialized.  I think it would be a lot better if it just automatically
turned on -Wuninitialized instead.  For example, compiling the example in bug
18016 with -Winit-self but not -Wuninitialized doesn't generate any warnings at
all, which is  as expected based on the documentation, but is still somewhat
counter-intuitive.

-- 
   Summary: -Winit-self should automatically turn on -Wuninitialized
   Product: gcc
   Version: 3.4.2
Status: UNCONFIRMED
  Severity: minor
  Priority: P2
 Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ejb at ql dot org
        CC: ejb at ql dot org,gcc-bugs at gcc dot gnu dot org
 GCC build triplet: any
  GCC host triplet: any
GCC target triplet: any


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


[Bug c++/18016] -Winit-self misses member variables initialized after : in ctor

2004-10-15 Thread ejb at ql dot org

--- Additional Comments From ejb at ql dot org  2004-10-15 16:46 ---
Created an attachment (id=7358)
 --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=7358&action=view)
source file that reproduces problem

This attachment contains the code that is also inlined in the bug report.

-- 


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


[Bug c++/18016] New: -Winit-self misses member variables initialized after : in ctor

2004-10-15 Thread ejb at ql dot org
First, my gcc version information:

% gcc -v
Reading specs from /usr/lib/gcc/i486-linux/3.4.2/specs
Configured with: ../src/configure -v
--enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr
--libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4
--enable-shared --with-system-zlib --enable-nls --without-included-gettext
--program-suffix=-3.4 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt
--enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm
--enable-java-awt=gtk --disable-werror i486-linux
Thread model: posix
gcc version 3.4.2 (Debian 3.4.2-2)

This is the gcc-3.4 package in debian, FYI, but this bug is not likely to be
debian-specific.

I'm excited to see the -Winit-self warning, but it fails to catch a common
problem, as illustrated by this code fragment (which I will include inline and
also as an attachment for convenience).  This code has two cases of variables
initialized with themselves: one trivial int b = b case, and one more subtle A()
: a(a) case.  g++ warns for one but not the other.  Use this command:

g++-3.4 -c -Winit-self -Wuninitialized -O1 a.cc

on this file:
class A
{
  public:
A() : a(a)  // <-- should generate a warning
{
}
int getA()
{
int b = b;  // <-- generates warning as it should
return this->a + b;
}

  private:
int a;
};

int main()
{
A a;
return a.getA();
}


generates this output:

a.cc: In function `int main()':
a.cc:9: warning: 'b' might be used uninitialized in this function

It fails to warn for A::a being initialized with itself in the constructor.

One might also consider it to be a problem that A::getA's being inlined causes
the warning message to mention main() rather than getA() -- this problem is not
present if getA is not inlined.  Anyway, the line number is okay, so this seems
pretty unimportant though still worthy of mention.

It would also be nice if -Winit-self would automatically add -Wuninitialized
instead of just not doing anything unless -Wuninitialized was also specified. 
I'll mention that in a separate bug report.

-- 
   Summary: -Winit-self misses member variables initialized after :
in ctor
   Product: gcc
   Version: 3.4.2
Status: UNCONFIRMED
  Severity: normal
  Priority: P2
 Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: ejb at ql dot org
CC: ejb at ql dot org,gcc-bugs at gcc dot gnu dot org
 GCC build triplet: i486-linux
  GCC host triplet: i486-linux
GCC target triplet: i486-linux


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