diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d29668a7ff4e1367170867dbfc49c95e8cf82994..7b385034640376acdb9a44369f9e53fc49a0df9a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-10  Richard Guenther  <rguenther@suse.de>
+
+	PR middle-end/39127
+	* gimplify.c (gimple_regimplify_operands): Always look if
+	we need to create a temporary.
+
 2009-02-10  Richard Guenther  <rguenther@suse.de>
 
 	PR tree-optimization/39132
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index be0c1ac00e5574c9448c4c473c6002dcf830f8a8..6f88ec547d72c4f459253f393cb35afe97574971 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -7459,9 +7459,9 @@ gimple_regimplify_operands (gimple stmt, gimple_stmt_iterator *gsi_p)
 	}
 
       lhs = gimple_get_lhs (stmt);
-      /* If regimplification of the LHS changed it in a way that requires
-	 a simple RHS, create temporary.  */
-      if (orig_lhs != lhs && !is_gimple_formal_tmp_var (lhs))
+      /* If the LHS changed it in a way that requires a simple RHS,
+	 create temporary.  */
+      if (lhs && !is_gimple_formal_tmp_var (lhs))
 	{
 	  bool need_temp = false;