From a8e12e4d7509326a298a3ddd39fb0d2746811ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tobias=20Schl=C3=BCter?= Date: Mon, 13 Jun 2005 20:23:46 +0200 Subject: re PR fortran/22038 (Forall with mask broken) fortran/ 2005-06-13 Jakub Jelinek PR fortran/22038 * trans-stmt.c (gfc_trans_forall_loop): Only increment maskindex in the innermost loop. testsuite/ 2005-06-13 Tobias Schl"uter PR fortran/22038 * gfortran.dg/forall_1.f90: Un-XFAIL. From-SVN: r100887 --- gcc/fortran/trans-stmt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'gcc/fortran/trans-stmt.c') diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 46a69d4..6670f54 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -1364,8 +1364,9 @@ gfc_trans_forall_loop (forall_info *forall_tmp, int nvar, tree body, int mask_fl tmp = build2 (PLUS_EXPR, TREE_TYPE (var), var, step); gfc_add_modify_expr (&block, var, tmp); - /* Advance to the next mask element. */ - if (mask_flag) + /* Advance to the next mask element. Only do this for the + innermost loop. */ + if (n == 0 && mask_flag) { mask = forall_tmp->mask; maskindex = forall_tmp->maskindex; -- cgit v1.1