https://gcc.gnu.org/g:29d03adf0a752c43a48494ddab4ff9ec2bab8123

commit 29d03adf0a752c43a48494ddab4ff9ec2bab8123
Merge: 5e61f1416891 0075e4a8428d
Author: Tobias Burnus <tbur...@baylibre.com>
Date:   Wed Feb 12 08:01:44 2025 +0100

    Merge remote-tracking branch 'origin/releases/gcc-14' into devel/omp/gcc-14
    
    Merge up to r14-11302-g0075e4a8428d05 (12th Feb 2025).

Diff:

 gcc/ChangeLog                                      | 181 ++++++++++++++
 gcc/DATESTAMP                                      |   2 +-
 gcc/ada/ChangeLog                                  |   6 +
 gcc/ada/sem_warn.adb                               |   4 +
 gcc/asan.cc                                        |  37 ++-
 gcc/builtins.cc                                    |  10 +-
 gcc/combine.cc                                     |   2 +-
 gcc/config/aarch64/aarch64.h                       |   2 +-
 gcc/config/aarch64/driver-aarch64.cc               |  52 +++--
 gcc/config/arm/t-rtems                             |   5 +-
 gcc/config/i386/avx512bwintrin.h                   |   2 +-
 gcc/config/i386/i386.h                             |   2 +-
 gcc/config/i386/sse.md                             |  18 +-
 gcc/config/loongarch/loongarch-builtins.cc         |   7 +-
 gcc/config/pa/pa32-regs.h                          |   2 +-
 gcc/config/rs6000/rs6000-builtin.cc                |  10 +-
 gcc/config/rs6000/rs6000-builtins.def              |   4 +-
 gcc/cp/ChangeLog                                   |  90 ++++++-
 gcc/cp/ChangeLog.omp                               |  13 ++
 gcc/cp/constexpr.cc                                |   3 +-
 gcc/cp/constraint.cc                               |  18 +-
 gcc/cp/cp-tree.h                                   |   3 +-
 gcc/cp/decl2.cc                                    |   5 +-
 gcc/cp/init.cc                                     |  18 +-
 gcc/cp/parser.cc                                   |  10 +
 gcc/cp/semantics.cc                                |   9 +-
 gcc/cp/typeck2.cc                                  |   8 +-
 gcc/d/ChangeLog                                    |  10 +
 gcc/d/Make-lang.in                                 |   4 +-
 gcc/fortran/ChangeLog                              |  76 ++++++
 gcc/fortran/class.cc                               |   2 +-
 gcc/fortran/decl.cc                                |  19 +-
 gcc/fortran/frontend-passes.cc                     |   7 +
 gcc/fortran/interface.cc                           |   9 +-
 gcc/fortran/resolve.cc                             |  11 +-
 gcc/fortran/trans-array.cc                         |  10 +-
 gcc/fortran/trans-expr.cc                          |  14 +-
 gcc/ipa-icf-gimple.cc                              |  53 +++--
 gcc/loop-iv.cc                                     |   1 +
 gcc/match.pd                                       |   2 +-
 gcc/optc-save-gen.awk                              |   5 +
 gcc/testsuite/ChangeLog                            | 259 +++++++++++++++++++++
 gcc/testsuite/c-c++-common/cpp/pr115913.c          |   7 +
 gcc/testsuite/g++.dg/asan/pr118763.C               |  15 ++
 gcc/testsuite/g++.dg/cpp0x/constexpr-union9.C      |  16 ++
 gcc/testsuite/g++.dg/cpp0x/constexpr-volatile4.C   |  20 ++
 gcc/testsuite/g++.dg/cpp0x/nsdmi-list10.C          |  35 +++
 gcc/testsuite/g++.dg/cpp0x/nsdmi-list9.C           |  34 +++
 .../g++.dg/cpp23/class-deduction-inherited7.C      |  12 +
 .../g++.dg/cpp26/name-independent-decl10.C         |  63 +++++
 .../g++.dg/cpp26/name-independent-decl9.C          |  49 ++++
 .../g++.dg/cpp2a/concepts-explicit-spec7.C         |  30 +++
 gcc/testsuite/g++.dg/ext/is_bounded_array.C        |  14 ++
 gcc/testsuite/g++.dg/init/array66.C                |  33 +++
 gcc/testsuite/g++.dg/other/anon-union6.C           |  13 ++
 gcc/testsuite/g++.dg/other/anon-union7.C           |  16 ++
 gcc/testsuite/gcc.c-torture/execute/pr117432.c     |  72 ++++++
 gcc/testsuite/gcc.c-torture/execute/pr118638.c     |  20 ++
 gcc/testsuite/gcc.dg/bitint-120.c                  |  11 +
 gcc/testsuite/gcc.dg/pr117506.c                    |  18 ++
 gcc/testsuite/gcc.dg/torture/builtin-frexp-1.c     |  33 ++-
 gcc/testsuite/gcc.target/aarch64/cpunative/info_34 |  18 ++
 gcc/testsuite/gcc.target/aarch64/cpunative/info_35 |  18 ++
 .../gcc.target/aarch64/cpunative/native_cpu_34.c   |  12 +
 .../gcc.target/aarch64/cpunative/native_cpu_35.c   |  13 ++
 gcc/testsuite/gcc.target/aarch64/options_set_29.c  |  11 +
 gcc/testsuite/gcc.target/arm/vfp-1.c               |   2 +-
 gcc/testsuite/gcc.target/i386/pr117432.c           |  17 ++
 gcc/testsuite/gcc.target/i386/pr118776.c           |  23 ++
 gcc/testsuite/gcc.target/loongarch/pr118561.c      |   9 +
 .../gcc.target/powerpc/mma-builtin-error.c         |  11 +
 gcc/testsuite/gcc.target/riscv/pr117506.c          |   5 +
 gcc/testsuite/gfortran.dg/associate_72.f90         |  26 +++
 gcc/testsuite/gfortran.dg/common_29.f90            |  34 +++
 gcc/testsuite/gfortran.dg/default_format_2.f90     |   2 +-
 .../gfortran.dg/default_format_denormal_2.f90      |   2 +-
 .../gfortran.dg/large_real_kind_form_io_2.f90      |   2 +-
 gcc/testsuite/gfortran.dg/pr108434.f90             |  10 +-
 gcc/testsuite/gfortran.dg/pr81978.f90              | 107 +++++++++
 gcc/testsuite/gfortran.dg/proc_ptr_54.f90          |  95 ++++++++
 gcc/testsuite/gfortran.dg/proc_ptr_55.f90          |  87 +++++++
 gcc/testsuite/gfortran.dg/proc_ptr_56.f90          |  45 ++++
 gcc/testsuite/gfortran.dg/use_rename_14.f90        |  46 ++++
 gcc/testsuite/gfortran.dg/utf8_3.f03               |  57 +++++
 gcc/testsuite/gnat.dg/warn33.adb                   |   9 +
 gcc/testsuite/gnat.dg/warn33_pkg.ads               |   7 +
 gcc/testsuite/lib/target-supports.exp              |  14 ++
 gcc/tree-assume.cc                                 |   2 +-
 gcc/tree-ssa-loop-niter.cc                         |   2 +
 gcc/vec.h                                          |   2 +-
 libgcc/ChangeLog                                   |   5 +
 libgcc/config.host                                 |   2 +-
 libgfortran/ChangeLog                              |   9 +
 libgfortran/io/write.c                             |   4 +-
 libstdc++-v3/ChangeLog                             |  25 ++
 libstdc++-v3/include/bits/ranges_algo.h            |   8 +-
 libstdc++-v3/include/std/ranges                    |   4 +-
 .../testsuite/25_algorithms/clamp/118185.cc        |  41 ++++
 .../std/ranges/adaptors/adjacent_transform/1.cc    |   1 +
 .../testsuite/std/ranges/adaptors/transform.cc     |   2 +
 100 files changed, 2163 insertions(+), 142 deletions(-)

diff --cc gcc/cp/ChangeLog.omp
index 68fe685fe22a,000000000000..b8cfd32482ca
mode 100644,000000..100644
--- a/gcc/cp/ChangeLog.omp
+++ b/gcc/cp/ChangeLog.omp
@@@ -1,505 -1,0 +1,518 @@@
 +2025-01-30  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2025-01-30  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (cp_finish_omp_declare_variant): Modify how append_args
 +      is saved internally.
 +      * pt.cc (tsubst_attribute): Likewise.
 +      (tsubst_omp_clauses): Remove C_ORT_OMP_DECLARE_SIMD from interop
 +      handling as no longer called for it.
 +      * decl.cc (omp_declare_variant_finalize_one): Update append_args
 +      changes; fixes for ADL input.
 +
 +2025-01-28  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2025-01-17  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      PR fortran/118321
 +      * decl.cc (omp_declare_variant_finalize_one): Shift adjust_args index
 +      by one for non-static class function's 'this' pointer.
 +
++2025-01-28  Tobias Burnus  <tbur...@baylibre.com>
++
++      Backported from master:
++      2025-01-03  Tobias Burnus  <tbur...@baylibre.com>
++
++      * parser.cc (cp_parser_omp_var_list_no_open,
++      cp_parser_omp_var_list): For kind=0 (= OMP_CLAUSE_ERROR),
++      store also the expression location in the tree list.
++      (cp_parser_oacc_data_clause_deviceptr,
++      cp_finish_omp_declare_variant): Use that location instead or
++      input_location/the before-parsing location.
++      * semantics.cc (finish_omp_threadprivate): Likewise.
++
 +2025-01-28  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-12-18  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * decl.cc (omp_declare_variant_finalize_one): Handle
 +      append_args.
 +      * parser.cc (cp_parser_omp_clause_init_modifiers): New;
 +      split of from ...
 +      (cp_parser_omp_clause_init):  ... here; call it.
 +      (cp_parser_omp_all_clauses): Replace interop parsing by
 +      a call to ...
 +      (cp_parser_omp_clause_interop): ... this new function;
 +      set tree used/read.
 +      (cp_finish_omp_declare_variant): Parse 'append_args' clause.
 +      (cp_parser_omp_declare): Update comment.
 +      * pt.cc (tsubst_attribute, tsubst_omp_clauses): Handle template
 +      substitution also for declare variant's append_args clause,
 +      using for 'init' the same code as for interop's init clause.
 +
 +2025-01-27  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2025-01-15  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      PR c++/118486
 +      * decl.cc (omp_declare_variant_finalize_one): When resolving
 +      the variant to use, handle variant calls with TARGET_EXPR.
 +
 +2025-01-27  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-12-13  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (cp_parser_omp_construct, cp_parser_pragma): Reject
 +      OpenMP expressions in constexpr functions.
 +
 +2025-01-27  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-12-12  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (OMP_DISPATCH_CLAUSE_MASK): Add has_device_addr clause.
 +
 +2025-01-27  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-11-22  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (cp_parser_omp_clause_name, cp_parser_omp_all_clauses,
 +      cp_parser_omp_dispatch_body): Handle 'interop' clause.
 +      * pt.cc (tsubst_omp_clauses): Likewise.
 +      * semantics.cc (finish_omp_clauses): Likewise.
 +
 +2025-01-27  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-11-22  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (INCLUDE_STRING): Define.
 +      (cp_parser_omp_clause_name): Handle init, use, and destroy clauses.
 +      (cp_parser_omp_all_clauses): Likewise; use C_ORT_OMP_INTEROP, if
 +      'use' is permitted, for c_finish_omp_clauses.
 +      (cp_parser_omp_modifier_prefer_type, cp_parser_omp_clause_init,
 +      OMP_INTEROP_CLAUSE_MASK, cp_parser_omp_interop): New.
 +      (cp_parser_pragma): Handle 'interop' directive.
 +      * pt.cc (tsubst_omp_clauses): Handle init, use, and destroy clauses.
 +      (tsubst_stmt): Handle OMP_INTEROP.
 +      * semantics.cc (cp_omp_init_prefer_type_update): New.
 +      (finish_omp_clauses): Handle  init, use, and destroy clauses
 +      and add clause check for 'depend' on 'interop'.
 +
 +2025-01-27  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      Backported from master:
 +      2025-01-10  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      * parser.cc (cp_parser_pragma): Replace call to cp_parser_omp_dispatch
 +      with cp_parser_omp_construct and check context.
 +
 +2025-01-27  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      Backported from master:
 +      2025-01-02  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      * parser.cc (cp_parser_omp_dispatch): Handle INDIRECT_REF.
 +
 +2025-01-27  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      Backported from master:
 +      2024-11-20  Paul-Antoine Arras  <par...@baylibre.com>
 +
 +      * decl.cc (omp_declare_variant_finalize_one): Set adjust_args
 +      need_device_ptr attribute.
 +      * parser.cc (cp_parser_direct_declarator): Update call to
 +      cp_parser_late_return_type_opt.
 +      (cp_parser_late_return_type_opt): Add 'tree parms' parameter. Update
 +      call to cp_parser_late_parsing_omp_declare_simd.
 +      (cp_parser_omp_clause_name): Handle nocontext and novariants clauses.
 +      (cp_parser_omp_clause_novariants): New function.
 +      (cp_parser_omp_clause_nocontext): Likewise.
 +      (cp_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_NOVARIANTS and
 +      PRAGMA_OMP_CLAUSE_NOCONTEXT.
 +      (cp_parser_omp_dispatch_body): New function, inspired from
 +      cp_parser_assignment_expression and cp_parser_postfix_expression.
 +      (OMP_DISPATCH_CLAUSE_MASK): Define.
 +      (cp_parser_omp_dispatch): New function.
 +      (cp_finish_omp_declare_variant): Add parameter. Handle adjust_args
 +      clause.
 +      (cp_parser_late_parsing_omp_declare_simd): Add parameter. Update calls
 +      to cp_finish_omp_declare_variant and cp_finish_omp_declare_variant.
 +      (cp_parser_omp_construct): Handle PRAGMA_OMP_DISPATCH.
 +      (cp_parser_pragma): Likewise.
 +      * semantics.cc (finish_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and
 +      OMP_CLAUSE_NOVARIANTS.
 +      * pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_NOCONTEXT and
 +      OMP_CLAUSE_NOVARIANTS.
 +      (tsubst_stmt): Handle OMP_DISPATCH.
 +      (tsubst_expr): Handle IFN_GOMP_DISPATCH.
 +
 +2025-01-23  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-10-31  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * decl.cc (omp_declare_variant_finalize_one): Use STRIP_REFERENCE_REF
 +      instead of doing it manually.
 +
 +2025-01-23  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-10-31  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * decl.cc (omp_declare_variant_finalize_one): Strip indirect ref
 +      around variant-function call when processing a variant.
 +
 +2025-01-23  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      Backported from master:
 +      2024-09-25  Tobias Burnus  <tbur...@baylibre.com>
 +
 +      * parser.cc (cp_parser_omp_declare_target): Set target-used bit
 +      in omp_requires_mask.
 +
 +2024-12-06  Andrew Stubbs  <a...@baylibre.com>
 +          Kwok Cheung Yeung  <kcye...@baylibre.com>
 +
 +      * parser.cc (cp_parser_omp_clause_from_to): Move an "else" clause to
 +      a higher nesting level.
 +
 +2024-05-15  Jakub Jelinek  <ja...@redhat.com>
 +
 +      * semantics.cc (finish_omp_clauses): Diagnose grainsize
 +      used together with num_tasks.
 +
 +2024-05-04  Sandra Loosemore  <sloosem...@baylibre.com>
 +
 +      * decl2.cc (cplus_decl_attributes): Don't add "omp declare target
 +      block".
 +
 +2024-05-04  Sandra Loosemore  <sloosem...@baylibre.com>
 +
 +      * cp-tree.h (struct saved_scope): Add new field
 +      x_processing_omp_trait_property_expr.
 +      (processing_omp_trait_property_expr): Define
 +      * decl.cc (omp_declare_variant_finalize_one): Adjust arguments
 +      to omp_context_selector_matches.
 +      * parser.cc (cp_parser_omp_context_selector): Remove metadirective_p
 +      argument and conditionalization.
 +      (cp_parser_omp_context_selector_specification): Remove metadirective_p
 +      argument and adjust call not to pass it on.
 +      (cp_finish_omp_declare_variant): Adjust arguments on call to above.
 +      (cp_parser_omp_metadirective): Likewise.
 +      * pt.cc (tsubst_omp_context_selector): Adjust error behavior.
 +      (tsubst_stmt): Adjust call to omp_context_selector_matches.
 +      * semantics.cc (finish_id_expression_1): Do not diagnose error
 +      for use of parameter in declare variant selector here.
 +
 +2024-05-04  Sandra Loosemore  <sloosem...@baylibre.com>
 +
 +      * parser.cc (cp_parser_skip_to_end_of_block_or_statement): Add
 +      metadirective_p parameter, use it to control brace/parentheses
 +      behavior for metadirectives.
 +      (mangle_metadirective_region_label): New.
 +      (cp_parser_label_for_labeled_statement): Use it.
 +      (cp_parser_jump_statement): Likewise.
 +      (cp_parser_omp_context_selector): Add metadirective_p
 +      parameter, use it to control error behavior for non-constant exprs
 +      properties.
 +      (cp_parser_omp_context_selector_specification): Add metadirective_p
 +      parameter, use it for cp_parser_omp_context_selector call.
 +      (cp_finish_omp_declare_variant): Adjust call to
 +      cp_parser_omp_context_selector_specification.
 +      (analyze_metadirective_body): New.
 +      (cp_parser_omp_metadirective): New.
 +      (cp_parser_pragma): Handle PRAGMA_OMP_METADIRECTIVE.
 +      * parser.h (struct cp_parser): Add fields for metadirective parsing
 +      state.
 +      * pt.cc (tsubst_omp_context_selector): New.
 +      (tsubst_stmt): Handle OMP_METADIRECTIVE.
 +
 +2024-05-04  Sandra Loosemore  <sloosem...@baylibre.com>
 +
 +      * decl.cc (omp_declare_variant_finalize_one):  Update call to
 +      omp_context_selector_matches to pass additional arguments.
 +      * parser.cc (cp_finish_omp_declare_variant): Likewise for
 +      omp_check_context_selector.
 +
 +2023-10-26  Tobias Burnus  <tob...@codesourcery.com>
 +
 +      * cp-tree.h (finish_omp_allocate): New prototype.
 +      * parser.cc (struct cp_omp_loc_tree,
 +      cp_check_omp_allocate_allocator_r): New.
 +      (cp_parser_omp_allocate): Call it; remove sorry,
 +      improve checks, call finish_omp_allocate.
 +      * pt.cc (tsubst_stmt): Call finish_omp_allocate.
 +      * semantics.cc (finish_omp_allocate): New.
 +
 +2023-08-10  Julian Brown  <jul...@codesourcery.com>
 +
 +      * parser.cc (cp_parser_omp_var_list_no_open): Support array-shaping
 +      operator in 'declare mapper' definitions.
 +      (cp_parser_omp_clause_from_to): Add parsing for mapper modifier.
 +      (cp_parser_omp_clause_map): Pass C_ORT_OMP_DECLARE_MAPPER to
 +      cp_parser_omp_var_list_no_open in mapper definitions.
 +      (cp_parser_omp_target_update): Instantiate mappers.
 +
 +2023-09-05  Julian Brown  <jul...@codesourcery.com>
 +
 +      * cp-objcp-common.cc (cp_common_init_ts): Add array-shape cast
 +      support.
 +      * cp-tree.def (OMP_ARRAYSHAPE_CAST_EXPR): Add tree code.
 +      * cp-tree.h (DECLTYPE_FOR_OMP_ARRAYSHAPE_CAST): Add flag.
 +      (cp_omp_create_arrayshape_type, cp_build_omp_arrayshape_cast): Add
 +      prototypes.
 +      (grok_omp_array_section, build_omp_array_section): Add stride
 +      parameters.
 +      * decl.cc (create_anon_array_type): New function.
 +      (cp_omp_create_arrayshape_type): New function.
 +      * decl2.cc (grok_omp_array_section): Add stride parameter.
 +      (min_vis_expr_r): Add OMP_ARRAYSHAPE_CAST_EXPR support.
 +      * error.cc (dump_expr): Add stride support for OMP_ARRAY_SECTION.
 +      * mangle.cc (write_expression): Add OMP_ARRAYSHAPE_CAST_EXPR support.
 +      * operators.def (OMP_ARRAYSHAPE_CAST_EXPR): Add.
 +      * parser.cc (cp_parser_new): Initialise omp_array_shaping_op_p and
 +      omp_has_array_shape_p fields.
 +      (cp_parser_statement_expr): Don't allow array shaping op in statement
 +      exprs.
 +      (cp_parser_postfix_open_square_expression): Add stride parsing for
 +      array sections.  Use array section code to represent array refs if we
 +      have an array-shaping operator.
 +      (cp_parser_parenthesized_expression_list): Don't allow array-shaping
 +      op here.
 +      (cp_parser_cast_expression): Add array-shaping operator parsing.
 +      (cp_parser_lambda_expression): Don't allow array-shaping op in lambda
 +      body.
 +      (cp_parser_braced_list): Don't allow array-shaping op in braced list.
 +      (struct omp_dim): Add stride field.
 +      (cp_parser_var_list_no_open): Add stride/array shape support.
 +      (cp_parser_omp_target_update): Handle noncontiguous updates.
 +      * parser.h (cp_parser): Add omp_array_shaping_op_p and
 +      omp_has_array_shape_p fields.
 +      * pt.cc (tsubst): Add array-shape cast support.
 +      (tsubst_copy, tsubst_copy_and_build): Likewise. Add stride support for
 +      OMP_ARRAY_SECTION.
 +      (tsubst_omp_clause_decl): Add stride support for OMP_ARRAY_SECTION.
 +      * semantics.cc (handle_omp_array_sections_1): Add DISCONTIGUOUS
 +      parameter and stride support.
 +      (omp_array_section_low_bound): New function.
 +      (handle_omp_array_sections): Add DISCONTIGUOUS parameter and stride
 +      support.
 +      (finish_omp_clauses): Update calls to handle_omp_array_sections, and
 +      add noncontiguous array update support.
 +      (cp_build_omp_arrayshape_cast): New function.
 +      * typeck.cc (structural_comptypes): Add array-shape cast support.
 +      (build_omp_array_section): Add stride parameter.
 +      (check_for_casting_away_constness): Add OMP_ARRAYSHAPE_CAST_EXPR
 +      support.
 +
 +2023-07-03  Julian Brown  <jul...@codesourcery.com>
 +
 +      * semantics.cc (handle_omp_array_sections): Pass pointer to clause
 +      instead of clause.  Add PNEXT return parameter for next clause in list
 +      to process.
 +      (finish_omp_clauses): Update calls to handle_omp_array_sections.
 +      Handle cases where initial clause might be replaced.
 +
 +2023-08-10  Julian Brown  <jul...@codesourcery.com>
 +
 +      * pt.cc (tsubst_omp_clauses): Use C_ORT_OMP_DECLARE_MAPPER.
 +      (tsubst_expr): Likewise.
 +
 +2023-07-06  Julian Brown  <jul...@codesourcery.com>
 +
 +      * parser.cc (cp_parser_omp_target_data): Instantiate mappers for 'omp
 +      target data'.
 +      (cp_parser_omp_target_enter_data): Instantiate mappers for 'omp target
 +      enter data'.
 +      (cp_parser_omp_target_exit_data): Instantiate mappers for 'omp target
 +      exit data'.
 +      (cp_parser_omp_target): Add c_omp_region_type argument to
 +      c_omp_instantiate_mappers call.
 +      * pt.cc (tsubst_omp_clauses): Instantiate mappers for OMP regions other
 +      than just C_ORT_OMP_TARGET.
 +      (tsubst_expr): Update call to tsubst_omp_clauses for OMP_TARGET_UPDATE,
 +      OMP_TARGET_ENTER_DATA, OMP_TARGET_EXIT_DATA stanza.
 +      * semantics.cc (cxx_omp_map_array_section): Avoid calling
 +      build_array_ref for non-array/non-pointer bases (error reported
 +      already).
 +
 +2023-06-30  Julian Brown  <jul...@codesourcery.com>
 +
 +      * constexpr.cc (reduced_constant_expression_p): Add OMP_DECLARE_MAPPER
 +      case.
 +      (cxx_eval_constant_expression, potential_constant_expression_1):
 +      Likewise.
 +      * cp-gimplify.cc (cxx_omp_finish_mapper_clauses): New function.
 +      * cp-objcp-common.h (LANG_HOOKS_OMP_FINISH_MAPPER_CLAUSES,
 +      LANG_HOOKS_OMP_MAPPER_LOOKUP, LANG_HOOKS_OMP_EXTRACT_MAPPER_DIRECTIVE,
 +      LANG_HOOKS_OMP_MAP_ARRAY_SECTION): Define langhooks.
 +      * cp-tree.h (lang_decl_base): Add omp_declare_mapper_p field.  Recount
 +      spare bits comment.
 +      (DECL_OMP_DECLARE_MAPPER_P): New macro.
 +      (omp_mapper_id, cp_check_omp_declare_mapper, omp_instantiate_mappers,
 +      cxx_omp_finish_mapper_clauses, cxx_omp_mapper_lookup,
 +      cxx_omp_extract_mapper_directive, cxx_omp_map_array_section: Add
 +      prototypes.
 +      * decl.cc (check_initializer): Add OpenMP declare mapper support.
 +      (cp_finish_decl): Set DECL_INITIAL for OpenMP declare mapper var decls
 +      as appropriate.
 +      * decl2.cc (mark_used): Instantiate OpenMP "declare mapper" magic var
 +      decls.
 +      * error.cc (dump_omp_declare_mapper): New function.
 +      (dump_simple_decl): Use above.
 +      * parser.cc (cp_parser_omp_clause_map): Add KIND parameter.  Support
 +      "mapper" modifier.
 +      (cp_parser_omp_all_clauses): Add KIND argument to
 +      cp_parser_omp_clause_map call.
 +      (cp_parser_omp_target): Call omp_instantiate_mappers before
 +      finish_omp_clauses.
 +      (cp_parser_omp_declare_mapper): New function.
 +      (cp_parser_omp_declare): Add "declare mapper" support.
 +      * pt.cc (tsubst_decl): Adjust name of "declare mapper" magic var decls
 +      once we know their type.
 +      (tsubst_omp_clauses): Call omp_instantiate_mappers before
 +      finish_omp_clauses, for target regions.
 +      (tsubst_expr): Support OMP_DECLARE_MAPPER nodes.
 +      (instantiate_decl): Instantiate initialiser (i.e definition) for OpenMP
 +      declare mappers.
 +      * semantics.cc (gimplify.h): Include.
 +      (omp_mapper_id, omp_mapper_lookup, omp_extract_mapper_directive,
 +      cxx_omp_map_array_section, cp_check_omp_declare_mapper): New functions.
 +      (finish_omp_clauses): Delete GOMP_MAP_PUSH_MAPPER_NAME and
 +      GOMP_MAP_POP_MAPPER_NAME artificial clauses.
 +      (omp_target_walk_data): Add MAPPERS field.
 +      (finish_omp_target_clauses_r): Scan for uses of struct/union/class type
 +      variables.
 +      (finish_omp_target_clauses): Create artificial mapper binding clauses
 +      for used structs/unions/classes in offload region.
 +
 +2023-05-12  Julian Brown  <jul...@codesourcery.com>
 +
 +      * decl2.cc (tree-inline.h): Include.
 +      (static_init_fini_fns): Bump to four entries. Update comment.
 +      (start_objects, start_partial_init_fini_fn): Add 'omp_target'
 +      parameter. Support "declare target" decls. Update forward declaration.
 +      (emit_partial_init_fini_fn): Add 'host_fn' parameter. Return tree for
 +      the created function. Support "declare target".
 +      (OMP_SSDF_IDENTIFIER): New macro.
 +      (partition_vars_for_init_fini): Support partitioning "declare target"
 +      variables also.
 +      (generate_ctor_or_dtor_function): Add 'omp_target' parameter. Support
 +      "declare target" decls.
 +      (c_parse_final_cleanups): Support constructors/destructors on OpenMP
 +      offload targets.
 +
 +2024-06-05  Jakub Jelinek  <ja...@redhat.com>
 +          Frederik Harwath  <frede...@codesourcery.com>
 +          Sandra Loosemore  <san...@codesourcery.com>
 +
 +      * cp-tree.h (dependent_omp_for_p): Add another tree argument.
 +      * parser.cc (check_omp_intervening_code): Reject imperfectly nested
 +      tile.
 +      (cp_parser_statement_seq_opt): If want_nested_loop, use
 +      cp_parser_next_tokens_can_be_canon_loop instead of just checking
 +      for RID_FOR keyword.
 +      (cp_parser_omp_clause_name): Handle full and partial clause names.
 +      (cp_parser_omp_clause_full, cp_parser_omp_clause_partial): New
 +      functions.
 +      (cp_parser_omp_all_clauses): Formatting fix.  Handle
 +      PRAGMA_OMP_CLAUSE_PARTIAL and PRAGMA_OMP_CLAUSE_FULL.
 +      (cp_parser_next_tokens_can_be_canon_loop): New function.
 +      (cp_parser_omp_loop_nest): Parse C++11 attributes.  Handle tile/unroll
 +      constructs.  Use cp_parser_next_tokens_can_be_canon_loop instead
 +      of just checking for RID_FOR keyword.  Only add_stmt
 +      cp_parser_omp_loop_nest result if it is non-NULL.
 +      (cp_parser_omp_for_loop): Rename tiling variable to oacc_tiling.  For
 +      OMP_CLAUSE_SIZES set collapse to list length of OMP_CLAUSE_SIZES_LIST.
 +      Use cp_parser_next_tokens_can_be_canon_loop instead of just
 +      checking for RID_FOR keyword.  Remove spurious semicolon.  Don't call
 +      c_omp_check_loop_binding_exprs if stmt is NULL.  Skip and/or handle
 +      generated loops.  Remove spurious ()s around & operands.
 +      (cp_parser_omp_tile_sizes, cp_parser_omp_tile): New functions.
 +      (OMP_UNROLL_CLAUSE_MASK): Define.
 +      (cp_parser_omp_unroll): New function.
 +      (cp_parser_omp_construct): Handle PRAGMA_OMP_TILE and
 +      PRAGMA_OMP_UNROLL.
 +      (cp_parser_pragma): Likewise.
 +      * semantics.cc (finish_omp_clauses): Don't call
 +      fold_build_cleanup_point_expr for cases which obviously won't need it,
 +      like checked INTEGER_CSTs.  Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES}
 +      and diagnose full vs. partial conflict.  Adjust wording of some of the
 +      conflicting clause diagnostic messages to include word clause.
 +      (finish_omp_for): Use decl equal to global_namespace as a marker for
 +      generated loop.  Pass also body to dependent_omp_for_p.  Skip
 +      generated loops.
 +      (finish_omp_for_block): Skip generated loops.
 +      * pt.cc (tsubst_omp_clauses): Handle OMP_CLAUSE_{FULL,PARTIAL,SIZES}.
 +      (tsubst_stmt): Handle OMP_TILE and OMP_UNROLL.  Handle or skip
 +      generated loops.
 +      (dependent_omp_for_p): Add body argument.  If declv vector element
 +      is NULL, find generated loop.
 +      * cp-gimplify.cc (cp_gimplify_expr): Handle OMP_TILE and OMP_UNROLL.
 +      (cp_fold_r): Likewise.
 +      (cp_genericize_r): Likewise.  Skip generated loops.
 +
 +2023-11-19  Tobias Burnus  <tob...@codesourcery.com>
 +          Chung-Lin Tang <clt...@codesourcery.com>
 +
 +      * parser.cc (cp_parser_omp_clause_uses_allocators): New.
 +      (cp_parser_omp_clause_name, cp_parser_omp_all_clauses,
 +      OMP_TARGET_CLAUSE_MASK): Handle uses_allocators.
 +      * semantics.cc (finish_omp_clauses): Likewise.
 +
 +2022-03-17  Kwok Cheung Yeung  <k...@codesourcery.com>
 +
 +      * semantics.cc (handle_omp_array_sections_1):  Add check to ensure
 +      that clause is a map.
 +
 +2021-08-19  Chung-Lin Tang  <clt...@codesourcery.com>
 +
 +      * semantics.cc (handle_omp_array_sections_1): Robustify non-contiguous
 +      array check and reject non-DECL base-pointer cases as unsupported.
 +
 +2021-02-01  Chung-Lin Tang  <clt...@codesourcery.com>
 +
 +      * semantics.cc (finish_omp_clauses):  Adjust to allow duplicate
 +      mapped variables for OpenMP.
 +
 +2022-02-03  Kwok Cheung Yeung  <k...@codesourcery.com>
 +
 +      * parser.ccc (cp_parser_omp_clause_map): Update call to
 +      cp_parser_omp_var_list_no_open.
 +      (cp_parser_omp_all_clauses): Update calls to cp_parser_omp_var_list.
 +
 +2018-12-13  Cesar Philippidis  <ce...@codesourcery.com>
 +          Nathan Sidwell  <nat...@acm.org>
 +          Julian Brown  <jul...@codesourcery.com>
 +
 +      * parser.c (cp_parser_omp_var_list_no_open):  New c_omp_region_type
 +      argument.  Use it to specialize handling of OMP_CLAUSE_REDUCTION for
 +      OpenACC.
 +      (cp_parser_omp_var_list): Add c_omp_region_type argument. Update call
 +      to cp_parser_omp_var_list_parens.
 +      (cp_parser_oacc_data_clause): Update call to cp_parser_omp_var_list.
 +      (cp_parser_omp_clause_reduction): Change is_omp boolean parameter to
 +      c_omp_region_type.  Update call to cp_parser_omp_var_list_no_open.
 +      (cp_parser_oacc_all_clauses): Update call to
 +      cp_parser_omp_clause_reduction.
 +      (cp_parser_omp_all_clauses): Likewise.
 +      * semantics.c (finish_omp_reduction_clause): Add c_omp_region_type
 +      argument.  Suppress user-defined reduction error for OpenACC.
 +      (finish_omp_clauses): Emit an error on orphan OpenACC gang reductions.
 +
 +2020-04-19  Chung-Lin Tang  <clt...@codesourcery.com>
 +
 +      PR other/76739
 +
 +      * semantics.cc (handle_omp_array_sections_1): Add 'bool &non_contiguous'
 +      parameter, adjust recursive call site, add cases for allowing
 +      pointer based multi-dimensional arrays for OpenACC.
 +      (handle_omp_array_sections): Adjust handle_omp_array_sections_1 call,
 +      handle non-contiguous case to create dynamic array map.

Reply via email to