re PR tree-optimization/25315 (testsuite failure:27_io/basic_ostream/inserters_character/char/9555-oc.cc wchar_t/9555-oc.cc exec)

2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>
            Daniel Berlin  <dberlin@dberlin.org>

        PR tree-opt/25315
        PR tree-opt/25857
        * tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
        return from the function.

2006-01-23  Andrew Pinski  <pinskia@physics.uc.edu>

        PR tree-opt/25857
        * g++.dg/opt/pr25857.C: New test.


Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>

From-SVN: r110127
This commit is contained in:
Andrew Pinski 2006-01-23 15:19:29 +00:00 committed by Andrew Pinski
parent 6e7a4706fd
commit e9901f8b56
4 changed files with 35 additions and 0 deletions

View File

@ -1,3 +1,11 @@
2006-01-23 Andrew Pinski <pinskia@physics.uc.edu>
Daniel Berlin <dberlin@dberlin.org>
PR tree-opt/25315
PR tree-opt/25857
* tree-ssa-pre.c (insert_extra_phis): If an incomming edge is abnormal
return from the function.
2006-01-22 Zack Weinberg <zackw@panix.com>
* rtl.def (match_code): Add second argument.

View File

@ -1,3 +1,8 @@
2006-01-23 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/25857
* g++.dg/opt/pr25857.C: New test.
2006-01-23 Steven Bosscher <stevenb.gcc@gmail.com>
Jan Hubicka <jh@suse.cz>
Richard Guenther <rguenther@suse.de>

View File

@ -0,0 +1,18 @@
/* { dg-do compile } */
/* { dg-options "-O2" } */
int foo();
int i;
struct A
{
~A() { if (this != (A*)(&i)) foo(); }
};
struct B
{
A a1, a2, a3, a4;
~B() { foo(); }
};
B b;

View File

@ -2745,6 +2745,10 @@ insert_extra_phis (basic_block block, basic_block dom)
FOR_EACH_EDGE (e, ei, block->preds)
{
/* We cannot handle abnormal incomming edges correctly. */
if (e->flags & EDGE_ABNORMAL)
return;
if (first)
{
bitmap_set_copy (tempset, AVAIL_OUT (e->src));