From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1534) id D0129385042E; Tue, 14 Jul 2020 10:59:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D0129385042E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1594724388; bh=qwqK43YKd952Lfg3xVG9yHyB0kRfPrnnv66M2SQHGYE=; h=From:To:Subject:Date:From; b=ETgUCAM7hqJIN1KfTdNeaKXwxGv/A1fSxNg3qs8LiBrVwzbZTmQTaVvWhFuif86pF MoO2RujCvMKtlF5MdFACgJMlzSHiTFyjBd2+ut66zjQT+TcFG2V5g9tajDJts4ROiV UV47CJGkBP+92ECPKXZJcPQ1ASMXndjbHlu0quBI= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Tobias Burnus To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc/devel/omp/gcc-10] Merge remote-tracking branch 'origin/releases/gcc-10' into devel/omp/gcc-10 X-Act-Checkin: gcc X-Git-Author: Tobias Burnus X-Git-Refname: refs/heads/devel/omp/gcc-10 X-Git-Oldrev: f518c57db56dfcdc30822cd634b311e34e5dfc7d X-Git-Newrev: 93fff84bee31dd79467c8f3140d3b00c792901b6 Message-Id: <20200714105948.D0129385042E@sourceware.org> Date: Tue, 14 Jul 2020 10:59:48 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 14 Jul 2020 10:59:48 -0000 https://gcc.gnu.org/g:93fff84bee31dd79467c8f3140d3b00c792901b6 commit 93fff84bee31dd79467c8f3140d3b00c792901b6 Merge: f518c57db56 bafecb520a5 Author: Tobias Burnus Date: Tue Jul 14 11:29:09 2020 +0200 Merge remote-tracking branch 'origin/releases/gcc-10' into devel/omp/gcc-10 Merge up to bafecb520a5563936750b117f5416d13a9159590 (June 30, 2020) Diff: config/ChangeLog | 9 + config/cet.m4 | 18 +- contrib/ChangeLog | 20 + contrib/gcc-changelog/git_check_commit.py | 49 + contrib/gcc-changelog/git_commit.py | 676 +++++ contrib/gcc-changelog/git_email.py | 107 + contrib/gcc-changelog/git_repository.py | 78 + contrib/gcc-changelog/git_update_version.py | 145 + contrib/gcc-changelog/test_email.py | 367 +++ contrib/gcc-changelog/test_patches.txt | 3197 ++++++++++++++++++++ gcc/ChangeLog | 633 ++++ gcc/DATESTAMP | 2 +- gcc/ada/ChangeLog | 5 + gcc/ada/gcc-interface/trans.c | 18 +- gcc/c-family/ChangeLog | 10 + gcc/c-family/c-common.c | 2 +- gcc/c/ChangeLog | 6 + gcc/c/c-fold.c | 1 + gcc/c/c-typeck.c | 16 + gcc/cfgexpand.c | 3 +- gcc/cfgloopmanip.c | 5 +- gcc/common.opt | 4 + gcc/config/aarch64/aarch64-sve-builtins.cc | 35 +- gcc/config/aarch64/aarch64.c | 18 +- gcc/config/arm/arm.c | 28 +- gcc/config/i386/i386.h | 6 +- gcc/config/riscv/predicates.md | 6 + gcc/config/riscv/riscv-builtins.c | 5 +- gcc/config/riscv/riscv-ftypes.def | 2 +- gcc/config/riscv/riscv-protos.h | 3 +- gcc/config/riscv/riscv-sr.c | 12 +- gcc/config/riscv/riscv.c | 141 +- gcc/config/riscv/riscv.md | 21 +- gcc/config/rs6000/altivec.h | 3 +- gcc/config/rs6000/altivec.md | 43 + gcc/config/rs6000/driver-rs6000.c | 4 +- gcc/config/rs6000/future.md | 521 ---- gcc/config/rs6000/linux64.h | 6 +- gcc/config/rs6000/mma.md | 586 ++++ gcc/config/rs6000/power10.md | 521 ++++ gcc/config/rs6000/ppc-auxv.h | 6 + gcc/config/rs6000/predicates.md | 10 + gcc/config/rs6000/rs6000-builtin.def | 159 + gcc/config/rs6000/rs6000-c.c | 6 + gcc/config/rs6000/rs6000-call.c | 521 +++- gcc/config/rs6000/rs6000-cpus.def | 18 +- gcc/config/rs6000/rs6000-modes.def | 10 + gcc/config/rs6000/rs6000-opts.h | 3 +- gcc/config/rs6000/rs6000-string.c | 2 +- gcc/config/rs6000/rs6000-tables.opt | 10 +- gcc/config/rs6000/rs6000.c | 367 ++- gcc/config/rs6000/rs6000.h | 57 +- gcc/config/rs6000/rs6000.md | 22 +- gcc/config/rs6000/rs6000.opt | 10 +- gcc/config/rs6000/t-rs6000 | 3 +- gcc/config/rs6000/vsx.md | 25 + gcc/cp/ChangeLog | 160 + gcc/cp/call.c | 19 +- gcc/cp/class.c | 146 +- gcc/cp/coroutines.cc | 975 +++--- gcc/cp/cp-tree.h | 1 + gcc/cp/decl.c | 5 +- gcc/cp/method.c | 202 +- gcc/cp/parser.c | 66 +- gcc/cp/pt.c | 14 +- gcc/cp/semantics.c | 16 + gcc/d/ChangeLog | 27 + gcc/d/d-attribs.cc | 9 +- gcc/d/dmd/cond.c | 74 +- gcc/d/dmd/expressionsem.c | 1 + gcc/doc/extend.texi | 111 + gcc/doc/invoke.texi | 12 +- gcc/doc/sourcebuild.texi | 9 + gcc/emit-rtl.c | 63 +- gcc/expr.c | 5 +- gcc/fold-const.c | 18 +- gcc/fortran/ChangeLog | 197 ++ gcc/fortran/class.c | 48 +- gcc/fortran/decl.c | 12 +- gcc/fortran/dependency.c | 2 + gcc/fortran/gfortran.h | 6 +- gcc/fortran/interface.c | 5 +- gcc/fortran/intrinsic.c | 6 +- gcc/fortran/iresolve.c | 4 +- gcc/fortran/match.c | 10 +- gcc/fortran/misc.c | 8 +- gcc/fortran/resolve.c | 22 +- gcc/fortran/symbol.c | 4 +- gcc/fortran/trans-common.c | 8 +- gcc/fortran/trans-decl.c | 2 +- gcc/fortran/trans-openmp.c | 4 +- gcc/fortran/trans-stmt.c | 6 +- gcc/gimple-fold.c | 11 +- gcc/gimple-ssa-split-paths.c | 10 +- gcc/go/gofrontend/MERGE | 2 +- gcc/ipa-fnsummary.c | 10 +- gcc/ipa-param-manipulation.c | 6 +- gcc/ipa-sra.c | 4 +- gcc/lto-streamer-out.c | 29 +- gcc/po/ChangeLog | 12 + gcc/po/sv.po | 2608 +++++----------- gcc/real.c | 4 +- gcc/testsuite/ChangeLog | 621 ++++ gcc/testsuite/c-c++-common/goacc/mdc-1.c | 14 +- gcc/testsuite/c-c++-common/pr95903.c | 19 + .../coro-bad-gro-00-class-gro-scalar-return.C | 65 + .../coro-bad-gro-01-void-gro-non-class-coro.C | 59 + .../g++.dg/coroutines/coro-bad-grooaf-00-static.C | 15 + .../coro-bad-grooaf-01-grooaf-expected.C | 14 + gcc/testsuite/g++.dg/coroutines/coro1-allocators.h | 5 +- gcc/testsuite/g++.dg/coroutines/pr95477.C | 37 + gcc/testsuite/g++.dg/coroutines/pr95505.C | 26 + gcc/testsuite/g++.dg/coroutines/pr95518.C | 28 + gcc/testsuite/g++.dg/coroutines/pr95711.C | 79 + gcc/testsuite/g++.dg/coroutines/pr95736.C | 84 + gcc/testsuite/g++.dg/coroutines/pr95813.C | 46 + .../coroutines/torture/pr95519-00-return_void.C | 63 + .../torture/pr95519-01-initial-suspend.C | 69 + .../coroutines/torture/pr95519-02-final_suspend.C | 69 + .../coroutines/torture/pr95519-03-return-value.C | 80 + .../coroutines/torture/pr95519-04-yield-value.C | 84 + .../g++.dg/coroutines/torture/pr95519-05-gro.C | 64 + .../g++.dg/coroutines/torture/pr95519-06-grooaf.C | 49 + .../torture/pr95519-07-unhandled-exception.C | 69 + gcc/testsuite/g++.dg/cpp2a/concepts-p2113a.C | 12 + gcc/testsuite/g++.dg/cpp2a/concepts-p2113b.C | 25 + gcc/testsuite/g++.dg/cpp2a/concepts-return-req1.C | 2 +- gcc/testsuite/g++.dg/cpp2a/consteval17.C | 11 + gcc/testsuite/g++.dg/cpp2a/no_unique_address4.C | 22 + gcc/testsuite/g++.dg/cpp2a/no_unique_address5.C | 25 + gcc/testsuite/g++.dg/cpp2a/no_unique_address6.C | 25 + gcc/testsuite/g++.dg/cpp2a/spaceship-err4.C | 6 +- gcc/testsuite/g++.dg/cpp2a/spaceship-friend1.C | 26 + gcc/testsuite/g++.dg/cpp2a/spaceship-ref1.C | 12 + gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg4.C | 20 + gcc/testsuite/g++.dg/cpp2a/spaceship-synth9.C | 27 + gcc/testsuite/g++.dg/cpp2a/spaceship-union1.C | 12 + gcc/testsuite/g++.dg/parse/enum14.C | 7 + gcc/testsuite/g++.dg/torture/pr95308.C | 21 + gcc/testsuite/g++.dg/torture/pr95493-1.C | 95 + gcc/testsuite/g++.dg/torture/pr95493.C | 62 + gcc/testsuite/g++.dg/torture/pr95717.C | 12 + gcc/testsuite/g++.dg/tree-ssa/final4.C | 12 + gcc/testsuite/g++.dg/tree-ssa/pr95638.C | 150 + gcc/testsuite/g++.dg/vect/pr95487.cc | 20 + gcc/testsuite/g++.dg/warn/Wmismatched-tags-7.C | 13 + gcc/testsuite/g++.dg/warn/Wmismatched-tags-8.C | 22 + .../aarch64/sve/acle/general-c++/attributes_1.C | 122 + gcc/testsuite/g++.target/riscv/frflags.C | 7 + .../gcc.c-torture/compile/packed-aligned-1.c | 11 + .../gcc.c-torture/execute/packed-aligned.c | 28 + gcc/testsuite/gcc.dg/guality/pr95343.c | 45 + gcc/testsuite/gcc.dg/ipa/pr96040.c | 57 + gcc/testsuite/gcc.dg/pr94600-1.c | 36 + gcc/testsuite/gcc.dg/pr94600-2.c | 34 + gcc/testsuite/gcc.dg/pr94600-3.c | 35 + gcc/testsuite/gcc.dg/pr94600-4.c | 34 + gcc/testsuite/gcc.dg/pr94600-5.c | 34 + gcc/testsuite/gcc.dg/pr94600-6.c | 33 + gcc/testsuite/gcc.dg/pr94600-7.c | 33 + gcc/testsuite/gcc.dg/pr94600-8.c | 33 + gcc/testsuite/gcc.dg/pr95118.c | 11 + gcc/testsuite/gcc.dg/pr95133.c | 14 + gcc/testsuite/gcc.dg/pr95141.c | 8 + gcc/testsuite/gcc.dg/pr95857.c | 37 + gcc/testsuite/gcc.dg/torture/pr95049.c | 7 + gcc/testsuite/gcc.dg/torture/pr96130.c | 26 + gcc/testsuite/gcc.dg/torture/pr96133.c | 16 + gcc/testsuite/gcc.dg/tree-ssa/pr94969.c | 28 + gcc/testsuite/gcc.dg/tree-ssa/pr95804.c | 18 + gcc/testsuite/gcc.dg/ubsan/pr95810.c | 13 + gcc/testsuite/gcc.dg/vect/slp-46.c | 96 + .../aarch64/sve/acle/general/attributes_8.c | 101 + .../arm/mve/intrinsics/mve_scalar_shifts1.c | 2 +- .../arm/mve/intrinsics/mve_scalar_shifts2.c | 2 +- .../arm/mve/intrinsics/mve_scalar_shifts3.c | 2 +- .../arm/mve/intrinsics/mve_scalar_shifts4.c | 2 +- .../gcc.target/powerpc/builtins-1-p9-runnable.c | 43 +- .../gcc.target/powerpc/builtins-msum-runnable.c | 74 + gcc/testsuite/gcc.target/powerpc/clone3.c | 33 + gcc/testsuite/gcc.target/powerpc/cpu-builtin-1.c | 3 + gcc/testsuite/gcc.target/powerpc/cpu-future.c | 6 +- gcc/testsuite/gcc.target/powerpc/localentry-1.c | 6 +- .../gcc.target/powerpc/localentry-detect-1.c | 8 +- gcc/testsuite/gcc.target/powerpc/mma-builtin-1.c | 313 ++ gcc/testsuite/gcc.target/powerpc/mma-builtin-2.c | 72 + gcc/testsuite/gcc.target/powerpc/mma-builtin-3.c | 31 + gcc/testsuite/gcc.target/powerpc/mma-builtin-4.c | 28 + gcc/testsuite/gcc.target/powerpc/mma-builtin-5.c | 31 + gcc/testsuite/gcc.target/powerpc/mma-builtin-6.c | 18 + gcc/testsuite/gcc.target/powerpc/mma-double-test.c | 185 ++ gcc/testsuite/gcc.target/powerpc/mma-single-test.c | 193 ++ gcc/testsuite/gcc.target/powerpc/notoc-direct-1.c | 6 +- gcc/testsuite/gcc.target/powerpc/p10-arch31.c | 25 + gcc/testsuite/gcc.target/powerpc/p10-identify.c | 26 + gcc/testsuite/gcc.target/powerpc/pcrel-sibcall-1.c | 10 +- gcc/testsuite/gcc.target/powerpc/pr93122.c | 4 +- gcc/testsuite/gcc.target/powerpc/pr96125.c | 47 + .../gcc.target/powerpc/vsx-builtin-msum.c | 26 + gcc/testsuite/gcc.target/riscv/pr95252.c | 47 + gcc/testsuite/gcc.target/riscv/pr95683.c | 10 + gcc/testsuite/gcc.target/riscv/save-restore-9.c | 23 + gcc/testsuite/gdc.dg/pr95173.d | 10 + gcc/testsuite/gdc.dg/pr95250.d | 18 + gcc/testsuite/gfortran.dg/dependency_59.f90 | 15 + .../gfortran.dg/goacc/mapping-tests-3.f90 | 15 + .../gfortran.dg/goacc/mapping-tests-4.f90 | 17 + gcc/testsuite/gfortran.dg/pr71706.f90 | 10 + gcc/testsuite/gfortran.dg/pr88379.f90 | 11 + gcc/testsuite/gfortran.dg/pr93337.f90 | 10 + gcc/testsuite/gfortran.dg/pr95340.f90 | 10 + gcc/testsuite/gfortran.dg/pr95587.f90 | 13 + gcc/testsuite/gfortran.dg/pr95687.f90 | 19 + gcc/testsuite/gfortran.dg/pr95688.f90 | 15 + gcc/testsuite/gfortran.dg/pr95689.f90 | 16 + gcc/testsuite/gfortran.dg/pr95690.f90 | 9 + gcc/testsuite/gfortran.dg/pr95707.f90 | 16 + gcc/testsuite/gfortran.dg/pr95708.f90 | 6 + gcc/testsuite/gfortran.dg/pr95709.f90 | 14 + gcc/testsuite/gfortran.dg/pr95826.f90 | 20 + gcc/testsuite/gfortran.dg/pr95827.f90 | 14 + gcc/testsuite/gfortran.dg/pr95828.f90 | 21 + gcc/testsuite/gfortran.dg/pr95829.f90 | 14 + gcc/testsuite/gfortran.dg/pr95880.f90 | 9 + gcc/testsuite/gfortran.dg/pr95881.f90 | 11 + gcc/testsuite/gfortran.dg/pr95978.f90 | 10 + gcc/testsuite/gfortran.dg/recursive_check_16.f90 | 25 + gcc/testsuite/gfortran.dg/select_type_49.f90 | 43 + .../gfortran.fortran-torture/execute/forall_5.f90 | 8 +- gcc/testsuite/lib/target-supports.exp | 68 +- gcc/toplev.c | 5 + gcc/tree-cfg.c | 40 +- gcc/tree-data-ref.c | 12 +- gcc/tree-loop-distribution.c | 41 +- gcc/tree-ssa-forwprop.c | 14 +- gcc/tree-ssa-loop-ivcanon.c | 5 +- gcc/tree-ssa-sccvn.c | 27 +- gcc/tree-vect-data-refs.c | 2 +- gcc/tree-vect-loop-manip.c | 8 +- gcc/tree-vect-stmts.c | 8 +- gcc/varasm.c | 1 - include/gomp-constants.h | 12 +- libbacktrace/ChangeLog | 5 + libbacktrace/configure | 12 +- libbacktrace/configure.ac | 4 +- libgo/MERGE | 2 +- libgo/VERSION | 2 +- libgo/go/cmd/cgo/gcc.go | 12 +- libgo/go/encoding/json/decode.go | 5 + libgo/go/encoding/json/decode_test.go | 33 +- libgo/go/encoding/json/encode.go | 11 +- libgo/go/encoding/json/encode_test.go | 87 +- libgo/go/encoding/json/stream_test.go | 8 +- libgo/go/go/doc/example.go | 6 +- libgo/go/go/doc/example_test.go | 76 +- libgo/go/go/parser/interface.go | 8 +- libgo/go/math/big/nat.go | 15 +- libgo/go/math/big/nat_test.go | 18 + libgo/go/os/os_test.go | 35 + libgo/go/runtime/crash_test.go | 14 +- libgo/go/runtime/mgcscavenge.go | 22 + libgo/go/runtime/mpagecache.go | 13 +- libgo/go/runtime/mpagecache_test.go | 33 +- libgo/go/runtime/proc.go | 6 + libgo/go/runtime/proc_test.go | 24 + libgo/go/runtime/testdata/testprog/lockosthread.go | 49 + libgo/misc/cgo/test/testx.go | 10 + libgomp/ChangeLog | 26 + libgomp/oacc-mem.c | 164 +- libgomp/target.c | 7 +- .../libgomp.oacc-c-c++-common/pr92843-1.c | 10 +- .../libgomp.oacc-c-c++-common/pr95270-1.c | 46 + .../libgomp.oacc-c-c++-common/pr95270-2.c | 48 + libiberty/ChangeLog | 8 + libiberty/configure | 12 +- libstdc++-v3/ChangeLog | 156 + libstdc++-v3/include/bits/atomic_base.h | 10 +- libstdc++-v3/include/bits/regex.h | 4 +- libstdc++-v3/include/bits/stl_algobase.h | 3 + libstdc++-v3/include/bits/unique_ptr.h | 20 +- libstdc++-v3/include/std/charconv | 15 +- libstdc++-v3/include/std/ranges | 67 +- libstdc++-v3/include/std/variant | 15 +- libstdc++-v3/src/c++11/random.cc | 26 +- libstdc++-v3/src/c++17/memory_resource.cc | 127 +- .../testsuite/20_util/default_delete/48631_neg.cc | 2 +- .../testsuite/20_util/default_delete/void_neg.cc | 2 +- libstdc++-v3/testsuite/20_util/from_chars/1.cc | 19 +- libstdc++-v3/testsuite/20_util/from_chars/3.cc | 79 + .../synchronized_pool_resource/allocate_single.cc | 24 + .../synchronized_pool_resource/cons_single.cc | 24 + .../synchronized_pool_resource/release_single.cc | 24 + libstdc++-v3/testsuite/20_util/to_chars/95851.cc | 36 + .../testsuite/20_util/unique_ptr/io/lwg2948.cc | 91 + libstdc++-v3/testsuite/20_util/variant/91807.cc | 35 + libstdc++-v3/testsuite/20_util/variant/95915.cc | 35 + libstdc++-v3/testsuite/20_util/variant/compile.cc | 7 + .../24_iterators/move_iterator/rel_ops_c++20.cc | 19 - .../24_iterators/reverse_iterator/rel_ops_c++20.cc | 22 - .../26_numerics/random/random_device/94087.cc | 63 + .../testsuite/28_regex/match_results/94627.cc | 75 + .../testsuite/29_atomics/atomic_float/1.cc | 86 +- .../testsuite/29_atomics/atomic_float/95282.cc | 35 + .../testsuite/29_atomics/atomic_ref/float.cc | 45 +- .../testsuite/std/ranges/adaptors/95322.cc | 48 +- lto-plugin/ChangeLog | 8 + lto-plugin/configure | 16 +- 307 files changed, 16913 insertions(+), 3823 deletions(-) diff --cc include/gomp-constants.h index 534d8d51e50,7e44238ae03..02a4c429adf --- a/include/gomp-constants.h +++ b/include/gomp-constants.h @@@ -137,12 -139,12 +140,17 @@@ enum gomp_map_kin /* Decrement usage count and deallocate if zero. */ GOMP_MAP_RELEASE = (GOMP_MAP_FLAG_SPECIAL_2 | GOMP_MAP_DELETE), + /* Mapping kinds for allocatable arrays. */ + GOMP_MAP_DECLARE_ALLOCATE = (GOMP_MAP_FLAG_SPECIAL_4 + | GOMP_MAP_FORCE_TO), + GOMP_MAP_DECLARE_DEALLOCATE = (GOMP_MAP_FLAG_SPECIAL_4 + | GOMP_MAP_FORCE_FROM), - /* In OpenACC, attach a pointer to a mapped struct field. */ + /* The attach/detach mappings below use the OMP_CLAUSE_SIZE field as a + bias. This will typically be zero, except when mapping an array slice + with a non-zero base. In that case the bias will indicate the + (positive) difference between the start of the actual mapped data and + the "virtual" origin of the array. + In OpenACC, attach a pointer to a mapped struct field. */ GOMP_MAP_ATTACH = (GOMP_MAP_DEEP_COPY | 0), /* In OpenACC, detach a pointer to a mapped struct field. */ GOMP_MAP_DETACH = (GOMP_MAP_DEEP_COPY | 1), diff --cc libgomp/oacc-mem.c index 01addd2cf62,34f519a2045..884a81b7a05 --- a/libgomp/oacc-mem.c +++ b/libgomp/oacc-mem.c @@@ -1031,28 -1030,9 +1059,31 @@@ find_group_last (int pos, size_t mapnum gomp_fatal ("unexpected mapping"); break; + case GOMP_MAP_DECLARE_ALLOCATE: + case GOMP_MAP_DECLARE_DEALLOCATE: + { + /* The "declare allocate" and "declare deallocate" mappings can be + used to specify either a scalar allocatable (which just appears as + GOMP_MAP_DECLARE_{ALLOCATE,DEALLOCATE} by itself), or an array + allocatable (which appears as that directive followed by a + GOMP_MAP_TO_PSET and one (or more?) GOMP_MAP_POINTER mappings. */ + if (pos + 1 >= mapnum) + break; + + unsigned char kind1 = kinds[pos + 1] & 0xff; + if (kind1 != GOMP_MAP_TO_PSET) + break; + + pos++; + + while (pos + 1 < mapnum && (kinds[pos + 1] & 0xff) == GOMP_MAP_POINTER) + pos++; + } + break; + + case GOMP_MAP_ATTACH: + break; + default: /* GOMP_MAP_ALWAYS_POINTER can only appear directly after some other mapping. */ diff --cc libgomp/target.c index 696cda820e5,d4a4a408b40..d9a219b4244 --- a/libgomp/target.c +++ b/libgomp/target.c @@@ -1005,31 -816,8 +1007,30 @@@ gomp_map_vars_internal (struct gomp_dev has_firstprivate = true; continue; } + else if (GOMP_MAP_NONCONTIG_ARRAY_P (kind & typemask)) + { + /* Ignore non-contiguous arrays for now, we process them together + later. */ + tgt->list[i].key = NULL; + tgt->list[i].offset = 0; + not_found_cnt++; + + /* The map for the non-contiguous array itself is never copied from + during unmapping, its the data rows that count. Set copy-from + flags to false here. */ + tgt->list[i].copy_from = false; + tgt->list[i].always_copy_from = false; + tgt->list[i].do_detach = false; + + size_t align = (size_t) 1 << (kind >> rshift); + if (tgt_align < align) + tgt_align = align; + + continue; + } + cur_node.host_start = (uintptr_t) hostaddrs[i]; - if (!GOMP_MAP_POINTER_P (kind & typemask) - && (kind & typemask) != GOMP_MAP_ATTACH) + if (!GOMP_MAP_POINTER_P (kind & typemask)) cur_node.host_end = cur_node.host_start + sizes[i]; else cur_node.host_end = cur_node.host_start + sizeof (void *);