[gcc/devel/omp/gcc-10] Merge remote-tracking branch 'origin/releases/gcc-10' into devel/omp/gcc-10

Tobias Burnus burnus@gcc.gnu.org
Tue Jul 14 10:59:48 GMT 2020


https://gcc.gnu.org/g:93fff84bee31dd79467c8f3140d3b00c792901b6

commit 93fff84bee31dd79467c8f3140d3b00c792901b6
Merge: f518c57db56 bafecb520a5
Author: Tobias Burnus <tobias@codesourcery.com>
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 *);


More information about the Libstdc++-cvs mailing list