From 17e11d9970b013170df4dba613cfa35aa324b144 Mon Sep 17 00:00:00 2001
From: dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sat, 14 Oct 2006 03:03:23 +0000
Subject: [PATCH] 2006-10-13  David Edelsohn  <edelsohn@gnu.org>            
 Ian Lance Taylor  <ian@airs.com>

        PR middle-end/29250
        * expr.c (expand_expr_real_1) <NON_LVALUE_EXPR, NOP_EXPR,
        CONVERT_EXPR>: Change EXPAND_SUM modifier to EXPAND_NORMAL when
        recursing.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117724 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog | 8 ++++++++
 gcc/expr.c    | 3 ++-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d4af4e1bd3ac..6c9fa11ccf8d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2006-10-13  David Edelsohn  <edelsohn@gnu.org>
+	    Ian Lance Taylor  <ian@airs.com>
+
+	PR middle-end/29250
+	* expr.c (expand_expr_real_1) <NON_LVALUE_EXPR, NOP_EXPR,
+	CONVERT_EXPR>: Change EXPAND_SUM modifier to EXPAND_NORMAL when
+	recursing.
+
 2006-10-14  Kazu Hirata  <kazu@codesourcery.com>
 
 	* config/score/score.c, config/score/score.h: Fix comment
diff --git a/gcc/expr.c b/gcc/expr.c
index a0dc9c360f08..50564b650720 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -7739,7 +7739,8 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
 	  return REDUCE_BIT_FIELD (op0);
 	}
 
-      op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, mode, modifier);
+      op0 = expand_expr (TREE_OPERAND (exp, 0), NULL_RTX, mode,
+			 modifier == EXPAND_SUM ? EXPAND_NORMAL : modifier);
       if (GET_MODE (op0) == mode)
 	;
 
-- 
GitLab