From: Jeff Law Date: Tue, 10 May 2005 19:19:30 +0000 (-0600) Subject: tree-ssa-dom.c (dom_opt_finalize_block): Do not call thread_across_edge for any abnor... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5fefbc7977471f39a91cc1d6a6146a5c0efd273d;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 24428811ca2..f6825dbc3f0 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-05-10 Jeff Law + + * tree-ssa-dom.c (dom_opt_finalize_block): Do not call + thread_across_edge for any abnormal edges. + 2005-05-10 Richard Henderson * config/ia64/ia64.c (ia64_expand_atomic_op): New. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 52a0e37b6ff..55363eaada1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-05-10 Diego Novillo + + * gcc.c-torture/compile/20050510-1.c: New test. + 2005-05-10 Mark Mitchell * 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 00000000000..3570f4f35b4 --- /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 fa8e7d6f422..541ad4cea62 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -985,18 +985,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))