http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50672
--- Comment #15 from Markus Trippelsdorf <markus at trippelsdorf dot de> 2012-08-01 20:11:15 UTC --- markus@x4 tmp % cat test.ii struct A { bool isHint(); }; class B { void makeLine( int *) const; void drawLine() const; A* to() const; void _print() const; }; A a; void B::makeLine(int *p1) const { if (a.isHint() && to()->isHint()) ; else { if (p1) B::drawLine(); else B::_print(); return; } if (p1) B::drawLine(); else B::_print(); } markus@x4 tmp % gdb g++ Reading symbols from /usr/bin/g++...(no debugging symbols found)...done. (gdb) run -c -O2 test.ii Starting program: /usr/bin/g++ -c -O2 test.ii process 7858 is executing new program: /usr/x86_64-pc-linux-gnu/gcc-bin/4.8.0/g++ [New process 7861] process 7861 is executing new program: /usr/libexec/gcc/x86_64-pc-linux-gnu/4.8.0/cc1plus Program received signal SIGSEGV, Segmentation fault. [Switching to process 7861] walk_aliased_vdefs_1 (ref=ref@entry=0x0, vdef=0x7ffff73f4870, walker=0x896fe0 <mark_all_reaching_defs_necessary_1>, data=0x0, visited=0x101e040, cnt=0) at ../../gcc/gcc/tree-ssa-alias.c:2182 2182 if (gimple_nop_p (def_stmt)) (gdb) bt #0 walk_aliased_vdefs_1 (ref=ref@entry=0x0, vdef=0x7ffff73f4870, walker=0x896fe0 <mark_all_reaching_defs_necessary_1>, data=0x0, visited=0x101e040, cnt=0) at ../../gcc/gcc/tree-ssa-alias.c:2182 #1 0x000000000088ce8e in walk_aliased_vdefs (ref=ref@entry=0x0, vdef=<optimized out>, walker=walker@entry=0x896fe0 <mark_all_reaching_defs_necessary_1>, data=data@entry=0x0, visited=visited@entry=0x101e040) at ../../gcc/gcc/tree-ssa-alias.c:2217 #2 0x0000000000896e25 in mark_all_reaching_defs_necessary (stmt=stmt@entry=0x7ffff73e5e40) at ../../gcc/gcc/tree-ssa-dce.c:664 #3 0x0000000000898a44 in propagate_necessity (el=el@entry=0x10ea0e0) at ../../gcc/gcc/tree-ssa-dce.c:909 ...