aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Berlin <dberlin@dberlin.org>2007-07-02 04:35:37 +0000
committerDaniel Berlin <dberlin@gcc.gnu.org>2007-07-02 04:35:37 +0000
commit8b0a512570d45a1d42195c588ccf4c669d0e57d8 (patch)
tree8decd8d5af06a9fdf15808b63a3d368421d4f5ea
parenta8b3b0b633eb1f33d41c8f49a77641d4f767cd01 (diff)
downloadgcc-8b0a512570d45a1d42195c588ccf4c669d0e57d8.zip
gcc-8b0a512570d45a1d42195c588ccf4c669d0e57d8.tar.gz
gcc-8b0a512570d45a1d42195c588ccf4c669d0e57d8.tar.bz2
re PR tree-optimization/32571 (ICE in set_ssa_val_to, at tree-ssa-sccvn.c:1011)
2007-07-01 Daniel Berlin <dberlin@dberlin.org> Fix PR tree-optimization/32571 * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid simplifying them. From-SVN: r126186
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-sccvn.c9
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a5a83ee..8c642d7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2007-07-01 Daniel Berlin <dberlin@dberlin.org>
+ Fix PR tree-optimization/32571
+ * tree-ssa-sccvn.c (visit_use): Shortcut copies to avoid
+ simplifying them.
+
+2007-07-01 Daniel Berlin <dberlin@dberlin.org>
+
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle constants
and other expected operations explicitly, change default to
gcc_unreachable.
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 45ebe08..b0db122 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)))