From 190c9d73cdfbf28d14152d2f9fe55db3e2f0b215 Mon Sep 17 00:00:00 2001 From: mikael Date: Fri, 4 Nov 2011 00:17:07 +0000 Subject: * trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180913 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 4 ++++ gcc/fortran/trans-intrinsic.c | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6fca42978c2..be67d8d0032 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,7 @@ +2011-11-04 Mikael Morin + + * trans-intrinsic.c (gfc_conv_intrinsic_arith): Update conditions. + 2011-11-04 Mikael Morin * frontend-passes.c (cfe_register_funcs): Return early in the case diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 3cdc1e0970a..342d2cb4ec4 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -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); -- cgit v1.2.1