diff options
author | Tobias Burnus <tobias@codesourcery.com> | 2023-02-09 15:51:13 +0100 |
---|---|---|
committer | Tobias Burnus <tobias@codesourcery.com> | 2023-02-09 15:51:13 +0100 |
commit | ac2949574da9a668daad421d7edb79f172f73c6f (patch) | |
tree | 7dae635bd8b000f7850ad18f9df63110474bab98 /gcc/fortran/intrinsic.cc | |
parent | 1189d1b38e2b9507488ea294cda771c79e972c1d (diff) | |
download | gcc-ac2949574da9a668daad421d7edb79f172f73c6f.zip gcc-ac2949574da9a668daad421d7edb79f172f73c6f.tar.gz gcc-ac2949574da9a668daad421d7edb79f172f73c6f.tar.bz2 |
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.
Diffstat (limited to 'gcc/fortran/intrinsic.cc')
0 files changed, 0 insertions, 0 deletions