OpenMP/Fortran: Partially fix non-rect loop nests [PR107424]
This patch ensures that loop bounds depending on outer loop vars use the proper TREE_VEC format. It additionally gives a sorry if such an outer var has a non-one/non-minus-one increment as currently a count variable is used in this case (see PR). Finally, it avoids 'count' and just uses a local loop variable if the step increment is +/-1. PR fortran/107424 gcc/fortran/ChangeLog: * trans-openmp.cc (struct dovar_init_d): Add 'sym' and 'non_unit_incr' members. (gfc_nonrect_loop_expr): New. (gfc_trans_omp_do): Call it; use normal loop bounds for unit stride - and only create local loop var. libgomp/ChangeLog: * testsuite/libgomp.fortran/non-rectangular-loop-1.f90: New test. * testsuite/libgomp.fortran/non-rectangular-loop-1a.f90: New test. * testsuite/libgomp.fortran/non-rectangular-loop-2.f90: New test. * testsuite/libgomp.fortran/non-rectangular-loop-3.f90: New test. * testsuite/libgomp.fortran/non-rectangular-loop-4.f90: New test. * testsuite/libgomp.fortran/non-rectangular-loop-5.f90: New test. gcc/testsuite/ChangeLog: * gfortran.dg/goacc/privatization-1-compute-loop.f90: Update dg-note. * gfortran.dg/goacc/privatization-1-routine_gang-loop.f90: Likewise.
Showing
- gcc/fortran/trans-openmp.cc 195 additions, 46 deletionsgcc/fortran/trans-openmp.cc
- gcc/testsuite/gfortran.dg/goacc/privatization-1-compute-loop.f90 4 additions, 2 deletions...tsuite/gfortran.dg/goacc/privatization-1-compute-loop.f90
- gcc/testsuite/gfortran.dg/goacc/privatization-1-routine_gang-loop.f90 2 additions, 1 deletion...e/gfortran.dg/goacc/privatization-1-routine_gang-loop.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-1.f90 668 additions, 0 deletionslibgomp/testsuite/libgomp.fortran/non-rectangular-loop-1.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-1a.f90 374 additions, 0 deletions...omp/testsuite/libgomp.fortran/non-rectangular-loop-1a.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-2.f90 243 additions, 0 deletionslibgomp/testsuite/libgomp.fortran/non-rectangular-loop-2.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-3.f90 212 additions, 0 deletionslibgomp/testsuite/libgomp.fortran/non-rectangular-loop-3.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-4.f90 215 additions, 0 deletionslibgomp/testsuite/libgomp.fortran/non-rectangular-loop-4.f90
- libgomp/testsuite/libgomp.fortran/non-rectangular-loop-5.f90 28 additions, 0 deletionslibgomp/testsuite/libgomp.fortran/non-rectangular-loop-5.f90
Loading
Please register or sign in to comment