Hi!
On 2022-02-15T11:26:12+0100, Tobias Burnus <[email protected]> wrote:
> As found by Marcel, the 'depend' clause was differently handled in
> 'omp depobj(...) depend(...)' and in 'omp task depend(...)'.
(Cross-referencing GCC PR104545 "[OpenMP & Fortran] Pointers issue in
combination of depobj construct and depend clause with depobj
dependence-type".)
> The attached patch [...]
> gcc/fortran/trans-openmp.cc | 45 ++++-
> gcc/testsuite/gfortran.dg/gomp/depend-4.f90 | 240
> +++++++++++++++++++++++++
> libgomp/testsuite/libgomp.fortran/depend-4.f90 | 107 +++++++++++
The actual commit r12-7242-g3939c1b11279dc950d2f160eb940dd791f7b40f1
"Fortran/OpenMP: Fix depend-clause handling" also has:
| gcc/testsuite/gfortran.dg/gomp/depend-5.f90 | 82 +++++++++
... (yay for more test cases!), and that one I see partially FAIL in
x86_64 '-m32'/'-mx32' testing:
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=16\\)\\[0:\\] \\*
restrict\\) aaa.data\\)\\[aaa.offset \\+ 2\\]\\)" 1
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=16\\)\\[0:\\] \\*
restrict\\) daaa->data\\)\\[daaa->offset \\+ 2\\]\\)" 1
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=16\\)\\[0:\\] \\*
restrict\\) doaaa->data\\)\\[doaaa->offset \\+ 2\\]\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\(\\*daa\\)\\[1\\]\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\(\\*doaa\\)\\[1\\]\\)" 1
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=16\\) \\*\\) \\(aap.data
\\+ \\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\[0\\].stride \\* 2\\) \\*
aap.span\\)\\)\\)" 1
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=16\\) \\*\\)
\\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\[0\\].stride
\\* 2\\) \\* daap->span\\)\\)\\)" 1
FAIL: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=16\\) \\*\\)
\\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+
doaap->dim\\[0\\].stride \\* 2\\) \\* doaap->span\\)\\)\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\*dosa\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\*dosp\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\*dsa\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*\\*dsp\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*doss\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*dss\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*sa\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:\\*sp\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:aa\\[1\\]\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O scan-tree-dump-times original
"#pragma omp task depend\\(depobj:ss\\)" 1
PASS: gfortran.dg/gomp/depend-5.f90 -O (test for excess errors)
Grüße
Thomas
-----------------
Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634
München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas
Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht
München, HRB 106955