diff options
author | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-02 04:35:37 +0000 |
---|---|---|
committer | dberlin <dberlin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-07-02 04:35:37 +0000 |
commit | 2a922cb64a6b8698d2c226ea9b93c9a0924f9b98 (patch) | |
tree | 8decd8d5af06a9fdf15808b63a3d368421d4f5ea /gcc/tree-ssa-sccvn.c | |
parent | c5d33754e3b885a5a2f323bedaa29371f44748b3 (diff) | |
download | gcc-2a922cb64a6b8698d2c226ea9b93c9a0924f9b98.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@126186 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r-- | gcc/tree-ssa-sccvn.c | 9 |
1 files changed, 7 insertions, 2 deletions
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))) |