This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Fix PR61969


This fixes an invalid NRV optimization done for returning a
non-automatic var.

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2014-10-08  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/61969
	* tree-nrv.c (pass_nrv::execute): Properly test for automatic
	variables.

Index: gcc/tree-nrv.c
===================================================================
--- gcc/tree-nrv.c	(revision 215917)
+++ gcc/tree-nrv.c	(working copy)
@@ -216,8 +216,7 @@ pass_nrv::execute (function *fun)
 		 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,


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]