From 8b0a512570d45a1d42195c588ccf4c669d0e57d8 Mon Sep 17 00:00:00 2001 From: Daniel Berlin Date: Mon, 2 Jul 2007 04:35:37 +0000 Subject: [PATCH] re PR tree-optimization/32571 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:1011) 2007-07-01 Daniel Berlin Fix PR tree-optimization/32571 * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid simplifying them. From-SVN: r126186 --- gcc/ChangeLog | 6 ++++++ gcc/tree-ssa-sccvn.c | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5a83eed8ac..8c642d7c879 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-07-01 Daniel Berlin + + Fix PR tree-optimization/32571 + * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid + simplifying them. + 2007-07-01 Daniel Berlin * tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index 45ebe08dfc7..b0db122368d 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -1545,6 +1545,13 @@ visit_use (tree use) STRIP_USELESS_TYPE_CONVERSION (rhs); + /* Shortcut for copies. Simplifying copies is pointless, + since we copy the expression and value they represent. */ + if (TREE_CODE (rhs) == SSA_NAME && TREE_CODE (lhs) == SSA_NAME) + { + changed = visit_copy (lhs, rhs); + goto done; + } simplified = try_to_simplify (stmt, rhs); if (simplified && simplified != rhs) { @@ -1623,8 +1630,6 @@ visit_use (tree use) VN_INFO (lhs)->expr = rhs; changed = set_ssa_val_to (lhs, rhs); } - else if (TREE_CODE (rhs) == SSA_NAME) - changed = visit_copy (lhs, rhs); else { switch (TREE_CODE_CLASS (TREE_CODE (rhs)))