This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug fortran/30404] Wrong FORALL result



------- Comment #5 from sayle at gcc dot gnu dot org  2007-01-16 18:15 -------
Subject: Bug 30404

Author: sayle
Date: Tue Jan 16 18:15:19 2007
New Revision: 120829

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=120829
Log:
2007-01-16  Roger Sayle  <roger@eyesopen.com>

        PR fortran/30404
        * trans-stmt.c (forall_info): Remove pmask field.
        (gfc_trans_forall_loop): Remove NVAR argument, instead assume that
        NVAR covers all the interation variables in the current forall_info.
        Add an extra OUTER parameter, which specified the loop header in
        which to place mask index initializations.
        (gfc_trans_nested_forall_loop): Remove NEST_FLAG argument.
        Change the semantics of MASK_FLAG to only control the mask in the
        innermost loop.
        (compute_overall_iter_number): Optimize the trivial case of a
        top-level loop having a constant number of iterations.  Update
        call to gfc_trans_nested_forall_loop.  Calculate the number of
        times the inner loop will be executed, not to size of the 
        iteration space.
        (allocate_temp_for_forall_nest_1): Reuse SIZE as BYTESIZE when
        sizeof(type) == 1.  Tidy up.
        (gfc_trans_assign_need_temp): Remove NEST_FLAG argument from calls
        to gfc_trans_nested_forall_loop.
        (gfc_trans_pointer_assign_need_temp): Likewise.
        (gfc_trans_forall_1): Remove unused BYTESIZE, TMPVAR, SIZEVAR and
        LENVAR local variables.  Split mask allocation into a separate
        hunk/pass from mask population.  Use allocate_temp_for_forall_nest
        to allocate the FORALL mask with the correct size.  Update calls
        to gfc_trans_nested_forall_loop.
        (gfc_evaluate_where_mask): Update call to
        gfc_trans_nested_forall_loop.
        (gfc_trans_where_2): Likewise.

        * gfortran.dg/forall_6.f90: New test case.
        * gfortran.dg/dependency_8.f90: Update test to find "temp" array.
        * gfortran.dg/dependency_13.f90: Likewise.


Added:
    trunk/gcc/testsuite/gfortran.dg/forall_6.f90
Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-stmt.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gfortran.dg/dependency_13.f90
    trunk/gcc/testsuite/gfortran.dg/dependency_8.f90


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]