aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>2005-05-10 13:19:30 -0600
committerJeff Law <law@gcc.gnu.org>2005-05-10 13:19:30 -0600
commit5fefbc7977471f39a91cc1d6a6146a5c0efd273d (patch)
treecb8ef37e713736afa97eee8efb664dc6bdb8aedf /gcc
parent0cb757cc06b093f83aff5e11525938f8db78895b (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20050510-1.c12
-rw-r--r--gcc/tree-ssa-dom.c12
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)