diff options
author | Jakub Jelinek <jakub@redhat.com> | 2004-09-29 11:04:21 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2004-09-29 11:04:21 +0200 |
commit | a7d6ba24118dc4ee5f4afc7c84bd52a0d5097f67 (patch) | |
tree | 2f7b3eee225a84af9a25b3a0d6f9d54711a3bb94 /gcc/tree-ssa-ccp.c | |
parent | ac973acecf15e6c8830ce30c9a66f5c229417a2a (diff) | |
download | gcc-a7d6ba24118dc4ee5f4afc7c84bd52a0d5097f67.zip gcc-a7d6ba24118dc4ee5f4afc7c84bd52a0d5097f67.tar.gz gcc-a7d6ba24118dc4ee5f4afc7c84bd52a0d5097f67.tar.bz2 |
re PR tree-optimization/17697 (ICE: Statement marked for throw, but doesn't - verify_stmts failed)
PR tree-optimization/17697
* tree-ssa-ccp.c (execute_fold_all_builtins): Update eh and cleanup
cfg if needed.
* g++.dg/opt/pr17697-1.C: New test.
* g++.dg/opt/pr17697-2.C: New test.
* g++.dg/opt/pr17697-3.C: New test.
From-SVN: r88277
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r-- | gcc/tree-ssa-ccp.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index d3ad956..3e8fa7b 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -2143,6 +2143,7 @@ convert_to_gimple_builtin (block_stmt_iterator *si_p, tree expr) static void execute_fold_all_builtins (void) { + bool cfg_changed = false; basic_block bb; FOR_EACH_BB (bb) { @@ -2187,6 +2188,9 @@ execute_fold_all_builtins (void) abort (); } modify_stmt (*stmtp); + if (maybe_clean_eh_stmt (*stmtp) + && tree_purge_dead_eh_edges (bb)) + cfg_changed = true; if (dump_file && (dump_flags & TDF_DETAILS)) { @@ -2196,6 +2200,10 @@ execute_fold_all_builtins (void) } } } + + /* Delete unreachable blocks. */ + if (cfg_changed) + cleanup_tree_cfg (); } |