aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-11-25 11:40:30 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-11-25 11:40:30 +0000
commit1af928db7cd28e28e044f45760f11e0667d3fcbc (patch)
tree35da6dcd15d6a287600401ee5543f7232896625e
parent59ec925b1199f9777d0d10be46251516f774b214 (diff)
downloadgcc-1af928db7cd28e28e044f45760f11e0667d3fcbc.zip
gcc-1af928db7cd28e28e044f45760f11e0667d3fcbc.tar.gz
gcc-1af928db7cd28e28e044f45760f11e0667d3fcbc.tar.bz2
gimple-fold.c (fold_stmt_1): Check may_propagate_copy before valueizing return stmts.
2016-11-25 Richard Biener <rguenther@suse.de> * gimple-fold.c (fold_stmt_1): Check may_propagate_copy before valueizing return stmts. From-SVN: r242873
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gimple-fold.c3
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9681566..0c0fce9 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2016-11-25 Richard Biener <rguenther@suse.de>
+
+ * gimple-fold.c (fold_stmt_1): Check may_propagate_copy
+ before valueizing return stmts.
+
2016-11-24 Richard Biener <rguenther@suse.de>
PR tree-optimization/78343
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 6842301..f586c09 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -4414,7 +4414,8 @@ fold_stmt_1 (gimple_stmt_iterator *gsi, bool inplace, tree (*valueize) (tree))
if (ret && TREE_CODE (ret) == SSA_NAME && valueize)
{
tree val = valueize (ret);
- if (val && val != ret)
+ if (val && val != ret
+ && may_propagate_copy (ret, val))
{
gimple_return_set_retval (ret_stmt, val);
changed = true;