re PR fortran/15080 (Forall bounds not calculated correctly (forall_3.f90))
authorJakub Jelinek <jakub@redhat.com>
Tue, 17 May 2005 06:31:51 +0000 (08:31 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 17 May 2005 06:31:51 +0000 (08:31 +0200)
commit8de1f441bb72de63213667ce2af8152e3d2ce801
treec579da660c53114a5f26494b5bf7b0ce3668ce55
parent2b5bf0e27e0b77a48f0f8a046cb6a56280137054
re PR fortran/15080 (Forall bounds not calculated correctly (forall_3.f90))

PR fortran/15080
* trans-stmt.c (generate_loop_for_temp_to_lhs): Remove SIZE and COUNT2
arguments.  If LSS is gfc_ss_terminator, increment COUNT1 by 1, instead
of incrementing COUNT2 and using COUNT1+COUNT2 increment COUNT1 and use
just that as index.
(generate_loop_for_rhs_to_temp): Likewise.
(compute_overall_iter_number): Add INNER_SIZE_BODY argument.
It non-NULL, add it to body.
(allocate_temp_for_forall_nest_1): New function, split from
allocate_temp_for_forall_nest.
(allocate_temp_for_forall_nest): Add INNER_SIZE_BODY argument,
propagate it down to compute_overall_iter_number.  Use
allocate_temp_for_forall_nest_1.
(gfc_trans_assign_need_temp): Remove COUNT2.  Call
compute_inner_temp_size into a new stmtblock_t.  Adjust calls to
allocate_temp_for_forall_nest, generate_loop_for_rhs_to_temp
and generate_loop_for_temp_to_lhs.
(gfc_trans_pointer_assign_need_temp): Adjust calls to
allocate_temp_for_forall_nest.
(gfc_evaluate_where_mask): Call compute_inner_temp_size into a new
stmtblock_t.  Call compute_overall_iter_number just once, then
allocate_temp_for_forall_nest_1 twice with the same size.
Initialize mask indexes if nested_forall_info != NULL.
(gfc_trans_where_2): Initialize mask indexes before calling
gfc_trans_nested_forall_loop.

* gfortran.fortran-torture/execute/forall_3.f90: Remove comment
about the test failing.
* gfortran.fortran-torture/execute/where_7.f90: New test.
* gfortran.fortran-torture/execute/where_8.f90: New test.

From-SVN: r99812
gcc/fortran/ChangeLog
gcc/fortran/trans-stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/forall_3.f90
gcc/testsuite/gfortran.fortran-torture/execute/where_7.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.fortran-torture/execute/where_8.f90 [new file with mode: 0644]