]> git.ipfire.org Git - thirdparty/gcc.git/commit
Fix implicit mapping for array slices on lexically-enclosing data constructs (PR70828)
authorJulian Brown <julian@codesourcery.com>
Tue, 26 Feb 2019 22:22:41 +0000 (14:22 -0800)
committerKwok Cheung Yeung <kcy@codesourcery.com>
Tue, 21 Jun 2022 13:11:11 +0000 (14:11 +0100)
commit241ee1126178d74c85ff37df8ba72572c9e7d7ae
treea57daecd38eeb2573ec85442b994557f980a6416
parentd9075a4c4782a7d95acc6ebee9aad6ce1eabbccb
Fix implicit mapping for array slices on lexically-enclosing data constructs (PR70828)

2018-08-28  Julian Brown  <julian@codesourcery.com>
    Cesar Philippidis  <cesar@codesourcery.com>

gcc/
* gimplify.cc (oacc_array_mapping_info): New struct.
(gimplify_omp_ctx): Add decl_data_clause hash map.
(new_omp_context): Zero-initialise above.
(delete_omp_context): Delete above if allocated.
(gimplify_scan_omp_clauses): Scan for array mappings on data constructs,
and record in above map.
(gomp_oacc_needs_data_present): New function.
(gimplify_adjust_omp_clauses_1): Handle data mappings (e.g. array
slices) declared in lexically-enclosing data constructs.
* omp-low.cc (lower_omp_target): Allow decl for bias not to be present
in OpenACC context.

gcc/testsuite/
* c-c++-common/goacc/acc-data-chain.c: New test.
* gfortran.dg/goacc/pr70828.f90: New test.

libgomp/
* testsuite/libgomp.oacc-c-c++-common/pr70828.c: New test.
* testsuite/libgomp.oacc-fortran/implicit_copy.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828-2.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828-3.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828-4.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828-5.f90: New test.
* testsuite/libgomp.oacc-fortran/pr70828-6.f90: New test.
17 files changed:
gcc/ChangeLog.omp
gcc/fortran/trans-openmp.cc
gcc/gimplify.cc
gcc/omp-low.cc
gcc/testsuite/ChangeLog.omp
gcc/testsuite/c-c++-common/goacc/acc-data-chain.c [new file with mode: 0644]
gcc/testsuite/gfortran.dg/goacc/pr70828.f90 [new file with mode: 0644]
libgomp/ChangeLog.omp
libgomp/testsuite/libgomp.oacc-c-c++-common/pr70828-2.c [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-c-c++-common/pr70828.c [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/implicit_copy.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828-2.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828-3.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828-4.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828-5.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828-6.f90 [new file with mode: 0644]
libgomp/testsuite/libgomp.oacc-fortran/pr70828.f90 [new file with mode: 0644]