From 94990acabef602556014d47c9bd6b83e4e1b8637 Mon Sep 17 00:00:00 2001
From: Richard Guenther <rguenther@suse.de>
Date: Mon, 19 Oct 2009 08:45:43 +0000
Subject: [PATCH] re PR fortran/41494 (temp and memcpy used when zeroing array)

2009-10-18  Richard Guenther  <rguenther@suse.de>

	PR fortran/41494
	* trans-expr.c (gfc_trans_scalar_assign): Do not call
	gfc_evaluate_now.

From-SVN: r152973
---
 gcc/fortran/ChangeLog    | 6 ++++++
 gcc/fortran/trans-expr.c | 3 +--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 24e83e645a33..b90f9c583c4e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2009-10-19  Richard Guenther  <rguenther@suse.de>
+
+	PR fortran/41494
+	* trans-expr.c (gfc_trans_scalar_assign): Do not call
+	gfc_evaluate_now.
+
 2009-10-17  Janus Weil  <janus@gcc.gnu.org>
 	    Paul Thomas  <pault@gcc.gnu.org>
 
diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c
index 331ca6a4ee45..dc58dbf943da 100644
--- a/gcc/fortran/trans-expr.c
+++ b/gcc/fortran/trans-expr.c
@@ -4664,8 +4664,7 @@ gfc_trans_scalar_assign (gfc_se * lse, gfc_se * rse, gfc_typespec ts,
     {
       gfc_add_block_to_block (&block, &lse->pre);
       gfc_add_block_to_block (&block, &rse->pre);
-      tmp = gfc_evaluate_now (rse->expr, &block);
-      tmp = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (lse->expr), tmp);
+      tmp = fold_build1 (VIEW_CONVERT_EXPR, TREE_TYPE (lse->expr), rse->expr);
       gfc_add_modify (&block, lse->expr, tmp);
     }
   else
-- 
GitLab