]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions.
authorMikael Morin <mikael@gcc.gnu.org>
Fri, 4 Nov 2011 00:17:07 +0000 (00:17 +0000)
committerMikael Morin <mikael@gcc.gnu.org>
Fri, 4 Nov 2011 00:17:07 +0000 (00:17 +0000)
* trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions.

From-SVN: r180913

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

index 6fca42978c2b77b26cb11bad6db24ba6588a7fa9..be67d8d0032c9f6fa1ea885e7e94a165aed92142 100644 (file)
@@ -1,3 +1,7 @@
+2011-11-04  Mikael Morin  <mikael@gcc.gnu.org>
+
+       * trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions.
+
 2011-11-04  Mikael Morin  <mikael@gcc.gnu.org>
 
        * frontend-passes.c (cfe_register_funcs): Return early in the case
index 3cdc1e0970aa4f787a60c96e50572a0bb1cb2a6e..342d2cb4ec40f571d191740c747bb2d22198dd13 100644 (file)
@@ -2624,7 +2624,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
       maskexpr = actual->expr;
     }
 
-  if (maskexpr && maskexpr->rank != 0)
+  if (maskexpr && maskexpr->rank > 0)
     {
       maskss = gfc_walk_expr (maskexpr);
       gcc_assert (maskss != gfc_ss_terminator);
@@ -2635,7 +2635,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
   /* Initialize the scalarizer.  */
   gfc_init_loopinfo (&loop);
   gfc_add_ss_to_loop (&loop, arrayss);
-  if (maskss)
+  if (maskexpr && maskexpr->rank > 0)
     gfc_add_ss_to_loop (&loop, maskss);
 
   /* Initialize the loop.  */
@@ -2643,13 +2643,13 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
   gfc_conv_loop_setup (&loop, &expr->where);
 
   gfc_mark_ss_chain_used (arrayss, 1);
-  if (maskss)
+  if (maskexpr && maskexpr->rank > 0)
     gfc_mark_ss_chain_used (maskss, 1);
   /* Generate the loop body.  */
   gfc_start_scalarized_body (&loop, &body);
 
   /* If we have a mask, only add this element if the mask is set.  */
-  if (maskss)
+  if (maskexpr && maskexpr->rank > 0)
     {
       gfc_init_se (&maskse, NULL);
       gfc_copy_loopinfo_to_se (&maskse, &loop);
@@ -2740,7 +2740,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
 
   gfc_add_block_to_block (&block, &arrayse.post);
 
-  if (maskss)
+  if (maskexpr && maskexpr->rank > 0)
     {
       /* We enclose the above in if (mask) {...} .  */
 
@@ -2755,7 +2755,7 @@ gfc_conv_intrinsic_arith (gfc_se * se, gfc_expr * expr, enum tree_code op,
   gfc_trans_scalarizing_loops (&loop, &body);
 
   /* For a scalar mask, enclose the loop in an if statement.  */
-  if (maskexpr && maskss == NULL)
+  if (maskexpr && maskexpr->rank == 0)
     {
       gfc_init_se (&maskse, NULL);
       gfc_conv_expr_val (&maskse, maskexpr);