diff options
author | Jeff Law <law@gcc.gnu.org> | 2005-05-10 13:19:30 -0600 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 2005-05-10 13:19:30 -0600 |
commit | 5fefbc7977471f39a91cc1d6a6146a5c0efd273d (patch) | |
tree | cb8ef37e713736afa97eee8efb664dc6bdb8aedf /gcc | |
parent | 0cb757cc06b093f83aff5e11525938f8db78895b (diff) | |
download | gcc-5fefbc7977471f39a91cc1d6a6146a5c0efd273d.zip gcc-5fefbc7977471f39a91cc1d6a6146a5c0efd273d.tar.gz gcc-5fefbc7977471f39a91cc1d6a6146a5c0efd273d.tar.bz2 |
tree-ssa-dom.c (dom_opt_finalize_block): Do not call thread_across_edge for any abnormal edges.
* tree-ssa-dom.c (dom_opt_finalize_block): Do not call
thread_across_edge for any abnormal edges.
* gcc.c-torture/compile/20050510-1.c: New test.
From-SVN: r99536
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/20050510-1.c | 12 | ||||
-rw-r--r-- | gcc/tree-ssa-dom.c | 12 |
4 files changed, 21 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2442881..f6825db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-05-10 Jeff Law <law@redhat.com> + + * tree-ssa-dom.c (dom_opt_finalize_block): Do not call + thread_across_edge for any abnormal edges. + 2005-05-10 Richard Henderson <rth@redhat.com> * config/ia64/ia64.c (ia64_expand_atomic_op): New. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52a0e37..55363ea 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-05-10 Diego Novillo <dnovillo@redhat.com> + + * gcc.c-torture/compile/20050510-1.c: New test. + 2005-05-10 Mark Mitchell <mark@codesourcery.com> * gcc.dg/arm-vfp1.c: Remove test for fnegs. diff --git a/gcc/testsuite/gcc.c-torture/compile/20050510-1.c b/gcc/testsuite/gcc.c-torture/compile/20050510-1.c new file mode 100644 index 0000000..3570f4f --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/20050510-1.c @@ -0,0 +1,12 @@ +void bar (int k) +{ + void *label = (k) ? &&x : &&y; + if (k) + goto *label; + +x: + if (k) + dont_remove (); +y: + return; +} diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index fa8e7d6..541ad4c 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -986,18 +986,6 @@ dom_opt_finalize_block (struct dom_walk_data *walk_data, basic_block bb) thread_across_edge (walk_data, single_succ_edge (bb)); } else if ((last = last_stmt (bb)) - && TREE_CODE (last) == GOTO_EXPR - && TREE_CODE (TREE_OPERAND (last, 0)) == SSA_NAME) - { - edge_iterator ei; - edge e; - - FOR_EACH_EDGE (e, ei, bb->succs) - { - thread_across_edge (walk_data, e); - } - } - else if ((last = last_stmt (bb)) && TREE_CODE (last) == COND_EXPR && (COMPARISON_CLASS_P (COND_EXPR_COND (last)) || TREE_CODE (COND_EXPR_COND (last)) == SSA_NAME) |