------- Comment #4 from pinskia at gcc dot gnu dot org 2008-10-16 19:08 ------- In this case since x and y are empty structs there are no real uses of them. If I change the code to: struct X {int i;};
int main() { int i = i; X x = x; X y(y); return i+x.i+y.i; } --- CUT --- And turn on optimization, I get the following warnings: t.c: In function 'int main()': t.c:5: warning: 'i' is used uninitialized in this function t.c:8: warning: 'x.X::i' is used uninitialized in this function t.c:8: warning: 'y.X::i' is used uninitialized in this function Note all of the above warnings should only happen with -Winit-self (which works correctly with the C front-end and is PR 34772 ). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37854