diff options
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
| -rw-r--r-- | gcc/fortran/trans-stmt.c | 5 | ||||
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gfortran.dg/forall_1.f90 | 3 |
4 files changed, 16 insertions, 5 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 4bd62d1..309aff1 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2005-06-13 Jakub Jelinek <jakub@redhat.com> + + PR fortran/22038 + * trans-stmt.c (gfc_trans_forall_loop): Only increment maskindex + in the innermost loop. + 2005-06-12 Richard Henderson <rth@redhat.com> * trans-array.c (gfc_conv_descriptor_data_get): Rename from @@ -18,7 +24,7 @@ * trans-array.h (gfc_conv_descriptor_data_get): Declare. (gfc_conv_descriptor_data_set, gfc_conv_descriptor_data_addr): Declare. -2005-06-11 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> +2005-06-12 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> * trans-expr.c (gfc_conv_variable): POINTER results don't need f2c calling conventions. Look at sym instead of sym->result. 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; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8fb457e..a0c560f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-06-13 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> + + PR fortran/22038 + * gfortran.dg/forall_1.f90: Un-XFAIL. + 2005-06-13 Nathan Sidwell <nathan@codesourcery.com> PR c++/21929 diff --git a/gcc/testsuite/gfortran.dg/forall_1.f90 b/gcc/testsuite/gfortran.dg/forall_1.f90 index e425c4c..35fcfdd 100644 --- a/gcc/testsuite/gfortran.dg/forall_1.f90 +++ b/gcc/testsuite/gfortran.dg/forall_1.f90 @@ -1,6 +1,5 @@ -! { dg-do run { xfail *-*-* } } +! { dg-do run } ! tests FORALL statements with a mask -! unfortunately, this is broken, PR 22038 dimension i2(15,10), i1(15) type a sequence |
