diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog.omp | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-array.cc | 18 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog.omp | 8 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90 | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/depend-4.f90 | 74 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/depend-5.f90 | 13 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/depend-6.f90 | 72 |
7 files changed, 105 insertions, 92 deletions
diff --git a/gcc/fortran/ChangeLog.omp b/gcc/fortran/ChangeLog.omp index 7c43ca8..139e8f8 100644 --- a/gcc/fortran/ChangeLog.omp +++ b/gcc/fortran/ChangeLog.omp @@ -1,3 +1,9 @@ +2022-10-19 Tobias Burnus <tobias@codesourcery.com> + + * trans-array.cc (non_negative_strides_array_p): Fix handling + of GFC_DECL_SAVED_DESCRIPTOR. + (gfc_conv_array_ref): Use ARRAY_REF again when possible. + 2022-09-28 Paul-Antoine Arras <pa@codesourcery.com> * parse.cc (gfc_ascii_statement): Missing $ in !$OMP END METADIRECTIVE. diff --git a/gcc/fortran/trans-array.cc b/gcc/fortran/trans-array.cc index bb85d04..7632b10 100644 --- a/gcc/fortran/trans-array.cc +++ b/gcc/fortran/trans-array.cc @@ -3754,11 +3754,16 @@ non_negative_strides_array_p (tree expr) /* If the array was originally a dummy with a descriptor, strides can be negative. */ - if (DECL_P (expr) - && DECL_LANG_SPECIFIC (expr) - && GFC_DECL_SAVED_DESCRIPTOR (expr) - && GFC_DECL_SAVED_DESCRIPTOR (expr) != expr) - return non_negative_strides_array_p (GFC_DECL_SAVED_DESCRIPTOR (expr)); + tree decl = expr; + STRIP_NOPS (decl); + if (TREE_CODE (decl) == INDIRECT_REF) + decl = TREE_OPERAND (decl, 0); + + if (DECL_P (decl) + && DECL_LANG_SPECIFIC (decl) + && GFC_DECL_SAVED_DESCRIPTOR (decl) + && GFC_DECL_SAVED_DESCRIPTOR (decl) != expr) + return non_negative_strides_array_p (GFC_DECL_SAVED_DESCRIPTOR (decl)); return true; } @@ -4251,12 +4256,13 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_expr *expr, { /* Build a linearized array reference using the offset from all dimensions. */ + bool non_neg = non_negative_strides_array_p (se->expr); if (!integer_zerop (cst_offset)) offset = fold_build2_loc (input_location, PLUS_EXPR, gfc_array_index_type, offset, cst_offset); se->class_vptr = vptr; vptr = get_class_array_vptr (se->expr, vptr); - se->expr = gfc_build_array_ref (base, offset, cooked_decl, false, vptr); + se->expr = gfc_build_array_ref (base, offset, cooked_decl, non_neg, vptr); } else /* Return the outermost ARRAY_REF we already built. */ diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp index 803fa3a..72eeddb 100644 --- a/gcc/testsuite/ChangeLog.omp +++ b/gcc/testsuite/ChangeLog.omp @@ -1,3 +1,11 @@ +2022-10-19 Tobias Burnus <tobias@codesourcery.com> + + * gfortran.dg/gomp/affinity-clause-1.f90: Revert to upsteam version, + update one scan-tree item. + * gfortran.dg/gomp/depend-4.f90: Revert to upstream version. + * gfortran.dg/gomp/depend-5.f90: Likewise. + * gfortran.dg/gomp/depend-6.f90: Likewise. + 2022-10-06 Tobias Burnus <tobias@codesourcery.com> * gfortran.dg/gomp/depend-5.f90: Update scan-tree-dump. diff --git a/gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90 b/gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90 index b90cf86..93e9afa 100644 --- a/gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90 @@ -22,13 +22,11 @@ end ! { dg-final { scan-tree-dump-times "D\\.\[0-9\]+ = .integer.kind=4.. __builtin_cosf ..real.kind=4.. a \\+ 1.0e\\+0\\);" 2 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) jj=2:5:2, integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):\\*\\(\\(integer\\(kind=4\\) \\*\\) &b \\+ \\(sizetype\\) \\(\\(\[^ \]*(?:<| )i(?:>|) \\+ -1\\) \\* 4\\)\\)\\) affinity\\(iterator\\(integer\\(kind=4\\) jj=2:5:2, integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):\\(\\(integer\\(kind=4\\)\\\[1:5\\\]\\\[1:5\\\]\\) d\\)\\\[.*jj\\\]\\\{lb:\[^\\\}\]*\\\}\\\[.*i\\\]\\\{lb:\[^\\\}\]*\\\}\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) jj=2:5:2, integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):b\\\[\\(integer\\(kind=8\\)\\) i \\+ -1\\\]\\) affinity\\(iterator\\(integer\\(kind=4\\) jj=2:5:2, integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):\\(\\(integer\\(kind=4\\)\\\[1:5\\\]\\\[1:5\\\]\\) d\\)\\\[\\(integer\\(kind=8\\)\\) jj\\\]{lb: 1 sz: 20}\\\[\\(integer\\(kind=8\\)\\) i\\\]{lb: 1 sz: 4}\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):b\\\[.* <?i>? \\+ -1\\\]\\) affinity\\(iterator\\(integer\\(kind=4\\) i=D\\.\[0-9\]+:5:1\\):d\\\[\\(.*i \\+ -1\\) \\* 6\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) i=1:5:1\\):a\\)\[^ \]" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) i=1:5:1\\):a\\) affinity\\(iterator\\(integer\\(kind=4\\) i=1:5:1\\):\\*x\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) k=7:4:-1, integer\\(kind=8\\) j=1:5:1\\):\\*\\(\\(integer\\(kind=4\\) \\*\\) &b \\+ \\(sizetype\\) \\(\\(\\(<?\\(>?integer\\(kind=.\\)\\).* \[jk\] \\+ .*\[kj\]\\) \\+ -1\\) \\* 4\\)\\)\\) affinity\\(iterator\\(integer\\(kind=4\\) k=7:4:-1, integer\\(kind=8\\) j=1:5:1\\):a\\) affinity\\(cc\\)" 1 "original" } } -!b\\\[\\(?\\(integer\\(kind=.\\).* \[jk\] \\+ .*\[kj\]\\) \\+ -1\\\]\\) affinity\\(iterator\\(integer\\(kind=4\\) k=7:4:-1, integer\\(kind=8\\) j=1:5:1\\):a\\) affinity\\(cc\\)" 1 "original" } } - +! { dg-final { scan-tree-dump-times "#pragma omp task affinity\\(iterator\\(integer\\(kind=4\\) k=7:4:-1, integer\\(kind=8\\) j=1:5:1\\):b\\\[\\(?\\(integer\\(kind=.\\).* \[jk\] \\+ .*\[kj\]\\) \\+ -1\\\]\\) affinity\\(iterator\\(integer\\(kind=4\\) k=7:4:-1, integer\\(kind=8\\) j=1:5:1\\):a\\) affinity\\(cc\\)" 1 "original" } } diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-4.f90 b/gcc/testsuite/gfortran.dg/gomp/depend-4.f90 index 17af6cf..edc30fe 100644 --- a/gcc/testsuite/gfortran.dg/gomp/depend-4.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/depend-4.f90 @@ -172,36 +172,36 @@ end ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:depvar\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(in:depvar\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object = &ss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:8|16)\\) = sp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:16|32)\\) = sa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:24|48)\\) = &aa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:32|64)\\) = .integer.kind=4.\\\[0:\\\] \\* restrict\\) aaa.data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:40|80)\\) = .integer.kind=4.\\\[0:\\\] \\*\\) aap.data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:48|96)\\) = dss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:56|112)\\) = \\*dsp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:64|128)\\) = \\*dsa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:72|144)\\) = daa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:80|160)\\) = .integer.kind=4.\\\[0:\\\] \\* restrict\\) daaa->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:88|176)\\) = .integer.kind=4.\\\[0:\\\] \\*\\) daap->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:96|192)\\) = doss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:104|208)\\) = \\*dosp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:112|224)\\) = \\*dosa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:120|240)\\) = doaa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:128|256)\\) = .integer.kind=4.\\\[0:\\\] \\* restrict\\) doaaa->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:136|272)\\) = .integer.kind=4.\\\[0:\\\] \\*\\) doaap->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:144|288)\\) = &dssv;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:152|304)\\) = &dossv;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[0\\\] = &ss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[1\\\] = sp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[2\\\] = sa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[3\\\] = &aa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[4\\\] = .integer.kind=4.\\\[0:\\\] \\* restrict\\) aaa.data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[5\\\] = .integer.kind=4.\\\[0:\\\] \\*\\) aap.data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[6\\\] = dss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[7\\\] = \\*dsp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[8\\\] = \\*dsa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[9\\\] = daa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[10\\\] = .integer.kind=4.\\\[0:\\\] \\* restrict\\) daaa->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[11\\\] = .integer.kind=4.\\\[0:\\\] \\*\\) daap->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[12\\\] = doss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[13\\\] = \\*dosp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[14\\\] = \\*dosa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[15\\\] = doaa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[16\\\] = .integer.kind=4.\\\[0:\\\] \\* restrict\\) doaaa->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[17\\\] = .integer.kind=4.\\\[0:\\\] \\*\\) doaap->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[18\\\] = &dssv;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[19\\\] = &dossv;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem = \\(integer.kind=4. \\*\\) &aa \\+ 4;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:8|16)\\) = \\(integer.kind=4. \\*\\) aaa.data \\+ \\(sizetype\\) \\(\\(aaa.offset \\+ 2\\) \\* 4\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:16|32)\\) = \\(integer.kind=4. \\*\\) \\(aap.data \\+ .sizetype. \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:24|48)\\) = \\(integer.kind=4. \\*\\) daa \\+ 4;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:32|64)\\) = \\(integer.kind=4. \\*\\) daaa->data \\+ \\(sizetype\\) \\(\\(daaa->offset \\+ 2\\) \\* 4\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:40|80)\\) = \\(integer.kind=4. \\*\\) \\(daap->data \\+ .sizetype. \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:48|96)\\) = \\(integer.kind=4. \\*\\) doaa \\+ 4;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:56|112)\\) = \\(integer.kind=4. \\*\\) doaaa->data \\+ \\(sizetype\\) \\(\\(doaaa->offset \\+ 2\\) \\* 4\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:64|128)\\) = \\(integer.kind=4. \\*\\) \\(doaap->data \\+ .sizetype. \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[0\\\] = &aa\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[1\\\] = &\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[2\\\] = \\(integer.kind=4. \\*\\) \\(aap.data \\+ .sizetype. \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[3\\\] = &\\(\\*daa\\)\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[4\\\] = &\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[5\\\] = \\(integer.kind=4. \\*\\) \\(daap->data \\+ .sizetype. \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[6\\\] = &\\(\\*doaa\\)\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[7\\\] = &\\(\\*\\(integer.kind=4.\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[8\\\] = \\(integer.kind=4. \\*\\) \\(doaap->data \\+ .sizetype. \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:ss\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*sp\\)" 1 "original" } } @@ -222,15 +222,13 @@ end ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) doaaa->data\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\*\\) doaap->data\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:aa\\\[1\\\]\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(integer\\(kind=4\\) \\*\\) aaa.data \\+ \\(sizetype\\) \\(\\(aaa.offset \\+ 2\\) \\* 4\\)\\)\\)" 1 "original" } } - +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(aap.data \\+ \\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(integer\\(kind=4\\) \\*\\) daa \\+ 4\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(integer\\(kind=4\\) \\*\\) daaa->data \\+ \\(sizetype\\) \\(\\(daaa->offset \\+ 2\\) \\* 4\\)\\)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(integer\\(kind=4\\) \\*\\) doaa \\+ 4\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(integer\\(kind=4\\) \\*\\) doaaa->data \\+ \\(sizetype\\) \\(\\(doaaa->offset \\+ 2\\) \\* 4\\)\\)\\)" 1 "original" } } - +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(integer\\(kind=4\\)\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(integer\\(kind=4\\) \\*\\) \\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\)\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dossv\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dssv\\)" 1 "original" } } @@ -255,8 +253,8 @@ end ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = \\*dosa;" 3 "gimple" } } ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaaa->data;" 4 "gimple" } } ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaap->data;" 4 "gimple" } } -! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = daa \\+ 4;" 2 "gimple" } } -! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaa \\+ 4;" 2 "gimple" } } +! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = &\\(\\*daa\\)\\\[1\\\];" 1 "gimple" } } +! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = &\\(\\*doaa\\)\\\[1\\\];" 1 "gimple" } } ! { dg-final { scan-tree-dump-times "= &dssv;" 1 "gimple" } } ! { dg-final { scan-tree-dump-times "= &dossv;" 1 "gimple" } } diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-5.f90 b/gcc/testsuite/gfortran.dg/gomp/depend-5.f90 index 820b260..4cbe3d4 100644 --- a/gcc/testsuite/gfortran.dg/gomp/depend-5.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/depend-5.f90 @@ -72,14 +72,11 @@ end ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\*dosa\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:aa\\\[1\\\]\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(\\(integer\\(kind=\[0-9\]+\\) \\*\\) aaa.data \\+ \\(sizetype\\) \\(\\(aaa.offset \\+ 2\\\) \\* (?:8|16)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(aap.data \\+ \\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(\\(integer\\(kind=\[0-9\]+\\) \\*\\) daa \\+ (?:8|16)\\)\\)" 1 "original" } } - - -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(\\(integer\\(kind=\[0-9\]+\\) \\*\\) daaa->data \\+ \\(sizetype\\) \\(\\(daaa->offset \\+ 2\\\) \\* (?:8|16)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(\\(integer\\(kind=\[0-9\]+\\) \\*\\) doaa \\+ (?:8|16)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(\\(integer\\(kind=\[0-9\]+\\) \\*\\) doaaa->data \\+ \\(sizetype\\) \\(\\(doaaa->offset \\+ 2\\\) \\* (?:8|16)\\)" 1 "original" } } - +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\(\\*\\(integer\\(kind=\[0-9\]+\\)\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(depobj:\\*\\(integer\\(kind=\[0-9\]+\\) \\*\\) \\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\)\\)" 1 "original" } } diff --git a/gcc/testsuite/gfortran.dg/gomp/depend-6.f90 b/gcc/testsuite/gfortran.dg/gomp/depend-6.f90 index 9e02ac1..fbac14b 100644 --- a/gcc/testsuite/gfortran.dg/gomp/depend-6.f90 +++ b/gcc/testsuite/gfortran.dg/gomp/depend-6.f90 @@ -172,36 +172,36 @@ end ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:depvar\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(in:depvar\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object = &ss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:8|16)\\) = sp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:16|32)\\) = sa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:24|48)\\) = &aa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:32|64)\\) = \\(void \\*\\\[0:\\\] \\* restrict\\) aaa.data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:40|80)\\) = \\(void \\*\\\[0:\\\] \\*\\) aap.data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:48|96)\\) = dss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:56|112)\\) = \\*dsp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:64|128)\\) = \\*dsa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:72|144)\\) = daa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:80|160)\\) = \\(void \\*\\\[0:\\\] \\* restrict\\) daaa->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:88|176)\\) = \\(void \\*\\\[0:\\\] \\*\\) daap->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:96|192)\\) = doss;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:104|208)\\) = \\*dosp;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:112|224)\\) = \\*dosa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:120|240)\\) = doaa;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:128|256)\\) = \\(void \\*\\\[0:\\\] \\* restrict\\) doaaa->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:136|272)\\) = \\(void \\*\\\[0:\\\] \\*\\) doaap->data;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:144|288)\\) = &dssv;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&object \\+ (?:152|304)\\) = &dossv;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[0\\\] = &ss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[1\\\] = sp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[2\\\] = sa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[3\\\] = &aa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[4\\\] = .void \\*\\\[0:\\\] \\* restrict\\) aaa.data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[5\\\] = .void \\*\\\[0:\\\] \\*\\) aap.data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[6\\\] = dss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[7\\\] = \\*dsp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[8\\\] = \\*dsa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[9\\\] = daa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[10\\\] = .void \\*\\\[0:\\\] \\* restrict\\) daaa->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[11\\\] = .void \\*\\\[0:\\\] \\*\\) daap->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[12\\\] = doss;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[13\\\] = \\*dosp;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[14\\\] = \\*dosa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[15\\\] = doaa;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[16\\\] = .void \\*\\\[0:\\\] \\* restrict\\) doaaa->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[17\\\] = .void \\*\\\[0:\\\] \\*\\) doaap->data;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[18\\\] = &dssv;" 1 "original" } } +! { dg-final { scan-tree-dump-times "&object\\\[19\\\] = &dossv;" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem = \\(void \\* \\*\\) &aa \\+ (?:4|8);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:8|16)\\) = \\(void \\* \\*\\) aaa.data \\+ \\(sizetype\\) \\(\\(aaa.offset \\+ 2\\) \\* (?:4|8)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:16|32)\\) = \\(void \\* \\*\\) \\(aap.data \\+ \\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:24|48)\\) = \\(void \\* \\*\\) daa \\+ (?:4|8);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:32|64)\\) = \\(void \\* \\*\\) daaa->data \\+ \\(sizetype\\) \\(\\(daaa->offset \\+ 2\\) \\* (?:4|8)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:40|80)\\) = \\(void \\* \\*\\) \\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:48|96)\\) = \\(void \\* \\*\\) doaa \\+ (?:4|8);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:56|112)\\) = \\(void \\* \\*\\) doaaa->data \\+ \\(sizetype\\) \\(\\(doaaa->offset \\+ 2\\) \\* (?:4|8)\\);" 1 "original" } } -! { dg-final { scan-tree-dump-times "&elem \\+ (?:64|128)\\) = \\(void \\* \\*\\) \\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[0\\\] = &aa\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[1\\\] = &\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[2\\\] = \\(void \\* \\*\\) \\(aap.data \\+ .sizetype. \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[3\\\] = &\\(\\*daa\\)\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[4\\\] = &\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[5\\\] = \\(void \\* \\*\\) \\(daap->data \\+ .sizetype. \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\);" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[6\\\] = &\\(\\*doaa\\)\\\[1\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[7\\\] = &\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\];" 1 "original" } } +! { dg-final { scan-tree-dump-times "&elem\\\[8\\\] = \\(void \\* \\*\\) \\(doaap->data \\+ .sizetype. \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\);" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:ss\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*sp\\)" 1 "original" } } @@ -222,13 +222,13 @@ end ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void \\*\\\[0:\\\] \\* restrict\\) doaaa->data\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void \\*\\\[0:\\\] \\*\\) doaap->data\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:aa\\\[1\\\]\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(void \\* \\*\\) aaa.data \\+ \\(sizetype\\) \\(\\(aaa.offset \\+ 2\\) \\* (?:4|8)\\)\\)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) aaa.data\\)\\\[aaa.offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void \\* \\*\\) \\(aap.data \\+ \\(sizetype\\) \\(\\(aap.offset \\+ aap.dim\\\[0\\\].stride \\* 2\\) \\* aap.span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(void \\* \\*\\) daa \\+ (?:4|8)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(void \\* \\*\\) daaa->data \\+ \\(sizetype\\) \\(\\(daaa->offset \\+ 2\\) \\* (?:4|8)\\)\\)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*daa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) daaa->data\\)\\\[daaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void \\* \\*\\) \\(daap->data \\+ \\(sizetype\\) \\(\\(daap->offset \\+ daap->dim\\\[0\\\].stride \\* 2\\) \\* daap->span\\)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(void \\* \\*\\) doaa \\+ (?:4|8)\\)\\)" 1 "original" } } -! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(\\(void \\* \\*\\) doaaa->data \\+ \\(sizetype\\) \\(\\(doaaa->offset \\+ 2\\) \\* (?:4|8)\\)\\)\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*doaa\\)\\\[1\\\]\\)" 1 "original" } } +! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\(\\*\\(void \\*\\\[0:\\\] \\* restrict\\) doaaa->data\\)\\\[doaaa->offset \\+ 2\\\]\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:\\*\\(void \\* \\*\\) \\(doaap->data \\+ \\(sizetype\\) \\(\\(doaap->offset \\+ doaap->dim\\\[0\\\].stride \\* 2\\) \\* doaap->span\\)\\)\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dossv\\)" 1 "original" } } ! { dg-final { scan-tree-dump-times "#pragma omp task depend\\(out:dssv\\)" 1 "original" } } @@ -253,7 +253,7 @@ end ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = \\*dosa;" 3 "gimple" } } ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaaa->data;" 4 "gimple" } } ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaap->data;" 4 "gimple" } } -! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = daa \\+ (?:4|8);" 2 "gimple" } } -! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = doaa \\+ (?:4|8);" 2 "gimple" } } +! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = &\\(\\*daa\\)\\\[1\\\];" 1 "gimple" } } +! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = &\\(\\*doaa\\)\\\[1\\\];" 1 "gimple" } } ! { dg-final { scan-tree-dump-times "= &dssv;" 1 "gimple" } } ! { dg-final { scan-tree-dump-times "= &dossv;" 1 "gimple" } } |