diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-29 06:59:35 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-06-29 06:59:35 +0000 |
commit | 35c15734e84896f65e212c1263ea47c19acd42a0 (patch) | |
tree | 017eaae88bfa95da2ee42be01673c3b4ea54a1c2 /gcc/tree-ssa-ccp.c | |
parent | cbf596b8cad9e18f4ebfa83d65d8f7efc72e77ec (diff) | |
download | ppe42-gcc-35c15734e84896f65e212c1263ea47c19acd42a0.tar.gz ppe42-gcc-35c15734e84896f65e212c1263ea47c19acd42a0.zip |
* tree-cfg.c (verify_stmt): Add last_in_block parameter. Verify
that eh stmts can throw.
(verify_stmts): Update verify_stmt call.
(tree_purge_dead_eh_edges, tree_purge_all_dead_eh_edges): New.
* tree-eh.c (remove_stmt_from_eh_region): New.
(lower_eh_constructs): Fix throw_stmt_table delete routine.
(tree_could_trap_p): Match may_trap_p.
(maybe_clean_eh_stmt): New.
* tree-flow.h: Update decls.
* tree-ssa-ccp.c (pass_ccp): Add TODO_verify_stmts.
(substitute_and_fold): Clean eh edges.
* tree-ssa-dce.c (mark_control_dependent_edges_necessary): Handle
empty basic blocks.
* tree-ssa-dom.c (need_eh_cleanup): New.
(tree_ssa_dominator_optimize): Allocate it. Cleanup eh edges.
(optimize_stmt): Cleanup eh stmts; set need_eh_cleanup.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@83843 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-ccp.c')
-rw-r--r-- | gcc/tree-ssa-ccp.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c index ef0c12be378..559f19b0765 100644 --- a/gcc/tree-ssa-ccp.c +++ b/gcc/tree-ssa-ccp.c @@ -248,7 +248,8 @@ struct tree_opt_pass pass_ccp = 0, /* properties_destroyed */ 0, /* todo_flags_start */ TODO_dump_func | TODO_rename_vars - | TODO_ggc_collect | TODO_verify_ssa /* todo_flags_finish */ + | TODO_ggc_collect | TODO_verify_ssa + | TODO_verify_stmts /* todo_flags_finish */ }; @@ -427,7 +428,11 @@ substitute_and_fold (void) /* If we folded a builtin function, we'll likely need to rename VDEFs. */ if (replaced_address || changed) - mark_new_vars_to_rename (stmt, vars_to_rename); + { + mark_new_vars_to_rename (stmt, vars_to_rename); + if (maybe_clean_eh_stmt (stmt)) + tree_purge_dead_eh_edges (bb); + } } if (dump_file && (dump_flags & TDF_DETAILS)) |