re PR tree-optimization/36766 (natGC.cc:229: internal compiler error: Segmentation fault)
PR tree-optimization/36766 * tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing for already removed basic blocks. * g++.dg/tree-ssa/pr36766.C: New test. From-SVN: r139908
This commit is contained in:
parent
c83c7e7e47
commit
833ee764e7
|
@ -1,5 +1,9 @@
|
|||
2008-09-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/36766
|
||||
* tree-cfg.c (gimple_purge_all_dead_eh_edges): Do nothing
|
||||
for already removed basic blocks.
|
||||
|
||||
PR target/36332
|
||||
* real.c (real_maxval): Clear a lower bit to make real_maxval
|
||||
match get_max_float for IBM long double format.
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
2008-09-02 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR tree-optimization/36766
|
||||
* g++.dg/tree-ssa/pr36766.C: New test.
|
||||
|
||||
PR target/36332
|
||||
* gcc.c-torture/execute/ieee/pr36332.c: New test.
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
// PR tree-optimization/36766
|
||||
// { dg-do compile }
|
||||
// { dg-options "-O -fnon-call-exceptions" }
|
||||
|
||||
struct A
|
||||
{
|
||||
~A ()
|
||||
{
|
||||
int *a = this->b;
|
||||
}
|
||||
int *b;
|
||||
};
|
||||
|
||||
struct B : A
|
||||
{
|
||||
B ()
|
||||
{
|
||||
int *a = this->b;
|
||||
}
|
||||
~B ()
|
||||
{
|
||||
int *a = this->b;
|
||||
}
|
||||
};
|
||||
|
||||
void
|
||||
foo ()
|
||||
{
|
||||
B *c = new B;
|
||||
delete c;
|
||||
}
|
|
@ -6560,7 +6560,13 @@ gimple_purge_all_dead_eh_edges (const_bitmap blocks)
|
|||
|
||||
EXECUTE_IF_SET_IN_BITMAP (blocks, 0, i, bi)
|
||||
{
|
||||
changed |= gimple_purge_dead_eh_edges (BASIC_BLOCK (i));
|
||||
basic_block bb = BASIC_BLOCK (i);
|
||||
|
||||
/* Earlier gimple_purge_dead_eh_edges could have removed
|
||||
this basic block already. */
|
||||
gcc_assert (bb || changed);
|
||||
if (bb != NULL)
|
||||
changed |= gimple_purge_dead_eh_edges (bb);
|
||||
}
|
||||
|
||||
return changed;
|
||||
|
|
Loading…
Reference in New Issue