diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 832c0edf2f2..68199d0396f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-02-22 Devang Patel + + PR 19952 + * tree-if-conv.c (process_phi_nodes): Use bsi_after_labels and skip + all labels + 2005-02-22 David Edelsohn * config/rs6000/aix.h (WINT_TYPE): Define. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 86857d2aa20..1a64436cebb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-02-22 Devang Patel + + PR 19952 + * g++.dg/tree-ssa/pr19952.C: New test. + 2005-02-22 Mark Mitchell PR c++/19883 diff --git a/gcc/testsuite/g++.dg/tree-ssa/pr19952.C b/gcc/testsuite/g++.dg/tree-ssa/pr19952.C new file mode 100644 index 00000000000..92d669c1415 --- /dev/null +++ b/gcc/testsuite/g++.dg/tree-ssa/pr19952.C @@ -0,0 +1,24 @@ +/* PR 19952 */ +/* { dg-compile } */ +/* { dg-options "-ftree-vectorize -O2" } */ + +int i; + +struct A +{ + ~A() { ++i; } +}; + +struct B +{ + A a; +}; + +void foo() +{ + for (int i=0; i<2; ++i) + { + B *p; + if (p) p->~B(); + } +} diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index 73fba3fb499..52bcfba69fb 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -830,7 +830,7 @@ process_phi_nodes (struct loop *loop) continue; phi = phi_nodes (bb); - bsi = bsi_start (bb); + bsi = bsi_after_labels (bb); /* BB has two predecessors. Using predecessor's aux field, set appropriate condition for the PHI node replacement. */