http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55501



--- Comment #7 from janus at gcc dot gnu.org 2012-11-28 10:50:28 UTC ---

I think the following variant makes even more sense:



Index: gcc/fortran/simplify.c

===================================================================

--- gcc/fortran/simplify.c    (revision 193810)

+++ gcc/fortran/simplify.c    (working copy)

@@ -3973,9 +3973,7 @@ gfc_simplify_maskl (gfc_expr *i, gfc_expr *kind_ar

 gfc_expr *

 gfc_simplify_merge (gfc_expr *tsource, gfc_expr *fsource, gfc_expr *mask)

 {

-  if (tsource->expr_type != EXPR_CONSTANT

-      || fsource->expr_type != EXPR_CONSTANT

-      || mask->expr_type != EXPR_CONSTANT)

+  if (mask->expr_type != EXPR_CONSTANT)

     return NULL;



   return gfc_copy_expr (mask->value.logical ? tsource : fsource);





In order to simplify a MERGE expression, we don't need to rely on the TSOURCE

and FSOURCE arguments being constant. It's sufficient that the MASK is.

Reply via email to