This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Fix PR51903
- From: Richard Guenther <rguenther at suse dot de>
- To: gcc-patches at gcc dot gnu dot org
- Date: Fri, 20 Jan 2012 11:06:12 +0100 (CET)
- Subject: [PATCH] Fix PR51903
This fixes PR51903, bootstrapped and tested on x86_64-unknown-linnux-gnu,
installed.
Richard.
2012-01-20 Richard Guenther <rguenther@suse.de>
PR tree-optimization/51903
* tree-ssa-pre.c (eliminate): Properly purging of EH edges
when removing stmts.
* g++.dg/torture/pr51903.C: New testcase.
Index: gcc/tree-ssa-pre.c
===================================================================
*** gcc/tree-ssa-pre.c (revision 183296)
--- gcc/tree-ssa-pre.c (working copy)
*************** eliminate (void)
*** 4541,4548 ****
gsi = gsi_for_stmt (stmt);
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
! if (gimple_purge_dead_eh_edges (bb))
! todo |= TODO_cleanup_cfg;
if (TREE_CODE (lhs) == SSA_NAME)
bitmap_clear_bit (inserted_exprs, SSA_NAME_VERSION (lhs));
release_defs (stmt);
--- 4541,4550 ----
gsi = gsi_for_stmt (stmt);
unlink_stmt_vdef (stmt);
gsi_remove (&gsi, true);
! /* ??? gsi_remove doesn't tell us whether the stmt was
! in EH tables and thus whether we need to purge EH edges.
! Simply schedule the block for a cleanup. */
! bitmap_set_bit (need_eh_cleanup, bb->index);
if (TREE_CODE (lhs) == SSA_NAME)
bitmap_clear_bit (inserted_exprs, SSA_NAME_VERSION (lhs));
release_defs (stmt);
Index: gcc/testsuite/g++.dg/torture/pr51903.C
===================================================================
*** gcc/testsuite/g++.dg/torture/pr51903.C (revision 0)
--- gcc/testsuite/g++.dg/torture/pr51903.C (revision 0)
***************
*** 0 ****
--- 1,9 ----
+ // { dg-do compile }
+ // { dg-options "-O2 -fnon-call-exceptions -fno-guess-branch-probability" }
+
+ #include <vector>
+
+ void foo ()
+ {
+ std::vector < std::vector< int > > (20000);
+ }