https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61869
Bug ID: 61869 Summary: Spurious uninitialized warning Product: gcc Version: 4.10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: y.gribov at samsung dot com CC: jakub at gcc dot gnu.org Host: x86_64-unknown-linux-gnu Target: x86_64-unknown-linux-gnu Created attachment 33167 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33167&action=edit Reprocase Current gcc reports spurious warning on attached code (based upon gcc/asan.c with some local changes): $ g++ repro.i -c -Wmaybe-uninitialized -O2 /home/ygribov/repro.i: In function ‘void f(list*)’: /home/ygribov/repro.i:30:12: warning: ‘i’ may be used uninitialized in this function [-Wmaybe-uninitialized] iterator i; ^ /home/ygribov/repro.i:30:12: warning: ‘*((void*)& i +8)’ may be used uninitialized in this function [-Wmaybe-uninitialized] It looks like lim1 pass exploits conditional NULL dereference in start() and introduces read of uninitialized variable.