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

Reply via email to