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
...