]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent expression variable.
authorMikael Morin <mikael@gcc.gnu.org>
Fri, 4 Nov 2011 00:23:14 +0000 (00:23 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Fri, 4 Nov 2011 00:23:14 +0000 (00:23 +0000)
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent
expression variable.  Use it.

From-SVN: r180919

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c

index 01d43747388c1d62bd390f837eda06381865181c..f9bd3eb5718f20f2cd9c688ab0fb850584ecb420 100644 (file)
@@ -1,3 +1,8 @@
+2011-11-04  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * trans-intrinsic.c (gfc_conv_intrinsic_arith): Introduce parent
+       expression variable.  Use it.
+
 2011-11-04  Mikael Morin  <mikael@gcc.gnu.org>
 
        * trans-intrinsic.c (gfc_conv_intrinsic.c): Introduce current loop
index f7b10416f9862a974d22353bad8a27db3d509a35..25c54fb6db9cbc7e80e3b3adca77b3bb13b15304 100644 (file)
@@ -2574,6 +2574,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
   gfc_ss *maskss;
   gfc_se arrayse;
   gfc_se maskse;
+  gfc_se *parent_se;
   gfc_expr *arrayexpr;
   gfc_expr *maskexpr;
 
@@ -2582,6 +2583,8 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
       gfc_conv_intrinsic_funcall (se, expr);
       return;
     }
+  else
+    parent_se = NULL;
 
   type = gfc_typenode_for_spec (&expr->ts);
   /* Initialize the result.  */
@@ -2654,7 +2657,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
   /* If we have a mask, only add this element if the mask is set.  */
   if (maskexpr && maskexpr->rank > 0)
     {
-      gfc_init_se (&maskse, NULL);
+      gfc_init_se (&maskse, parent_se);
       gfc_copy_loopinfo_to_se (&maskse, ploop);
       maskse.ss = maskss;
       gfc_conv_expr_val (&maskse, maskexpr);
@@ -2666,7 +2669,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
     gfc_init_block (&block);
 
   /* Do the actual summation/product.  */
-  gfc_init_se (&arrayse, NULL);
+  gfc_init_se (&arrayse, parent_se);
   gfc_copy_loopinfo_to_se (&arrayse, ploop);
   arrayse.ss = arrayss;
   gfc_conv_expr_val (&arrayse, arrayexpr);