summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-09 10:50:43 +0000
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>2014-10-09 10:50:43 +0000
commit3653e6b108a5f41ff3f0db6d0fa073795bf262cb (patch)
treebb35efd363190a946eca81413b98aaaf4cacab4d
parent349ed45df1491d5453e21e12bae44db1964cfcc6 (diff)
downloadppe42-gcc-3653e6b108a5f41ff3f0db6d0fa073795bf262cb.tar.gz
ppe42-gcc-3653e6b108a5f41ff3f0db6d0fa073795bf262cb.zip
2014-10-09 Richard Biener <rguenther@suse.de>
PR tree-optimization/61969 * tree-nrv.c (pass_nrv::execute): Properly test for automatic variables. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_9-branch@216037 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-nrv.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2ef97b2a1dd..4c05cf4c3b8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-10-09 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/61969
+ * tree-nrv.c (pass_nrv::execute): Properly test for automatic
+ variables.
+
2014-10-09 Uros Bizjak <ubizjak@gmail.com>
Backport from mainline
diff --git a/gcc/tree-nrv.c b/gcc/tree-nrv.c
index b443388a2a9..028ac9af7c2 100644
--- a/gcc/tree-nrv.c
+++ b/gcc/tree-nrv.c
@@ -187,8 +187,7 @@ tree_nrv (void)
same type and alignment as the function's result. */
if (TREE_CODE (found) != VAR_DECL
|| TREE_THIS_VOLATILE (found)
- || DECL_CONTEXT (found) != current_function_decl
- || TREE_STATIC (found)
+ || !auto_var_in_fn_p (found, current_function_decl)
|| TREE_ADDRESSABLE (found)
|| DECL_ALIGN (found) > DECL_ALIGN (result)
|| !useless_type_conversion_p (result_type,
OpenPOWER on IntegriCloud