https://gcc.gnu.org/g:b25ca248132a79766ea6f1e8c5b9bd691ba399f3
commit b25ca248132a79766ea6f1e8c5b9bd691ba399f3 Merge: e14ab294c02f 059107eb22c4 Author: Tobias Burnus <tbur...@baylibre.com> Date: Tue Apr 8 23:51:05 2025 +0200 Merge remote-tracking branch 'origin/releases/gcc-14' into devel/omp/gcc-14 Merge up to r14-11542-g059107eb22c480 (8th Apr 2025) Diff: gcc/ChangeLog | 361 +++++ gcc/DATESTAMP | 2 +- gcc/ada/ChangeLog | 12 + gcc/ada/libgnat/a-ngcoar.adb | 42 +- gcc/ada/libgnat/a-ngrear.adb | 85 +- gcc/builtins.cc | 21 +- gcc/c-family/ChangeLog | 11 + gcc/c-family/c-pretty-print.cc | 6 +- gcc/c/ChangeLog | 80 + gcc/c/c-decl.cc | 123 +- gcc/c/c-objc-common.h | 2 + gcc/c/c-parser.cc | 24 +- gcc/c/c-tree.h | 21 +- gcc/c/c-typeck.cc | 375 ++++- gcc/cgraph.cc | 7 +- gcc/common/config/i386/i386-isas.h | 1 + gcc/config/aarch64/aarch64.cc | 6 +- gcc/config/aarch64/aarch64.md | 8 +- gcc/config/avr/avr-mcus.def | 6 + gcc/config/i386/i386-c.cc | 5 +- gcc/config/i386/i386-options.cc | 1 + gcc/config/i386/i386.md | 4 +- gcc/config/i386/i386.opt | 5 + gcc/config/i386/i386.opt.urls | 3 + gcc/config/loongarch/loongarch.cc | 13 + gcc/cp/ChangeLog | 128 ++ gcc/cp/call.cc | 14 +- gcc/cp/constexpr.cc | 38 +- gcc/cp/cp-tree.h | 1 + gcc/cp/cvt.cc | 13 + gcc/cp/lambda.cc | 8 +- gcc/cp/name-lookup.cc | 11 +- gcc/cp/parser.cc | 98 +- gcc/cp/pt.cc | 2 + gcc/cp/rtti.cc | 3 +- gcc/cp/semantics.cc | 1 + gcc/cp/typeck.cc | 10 +- gcc/d/ChangeLog | 20 + gcc/d/decl.cc | 6 + gcc/d/expr.cc | 2 + gcc/d/types.cc | 5 +- gcc/df-problems.cc | 8 +- gcc/doc/avr-mmcu.texi | 4 +- gcc/doc/extend.texi | 8 +- gcc/doc/invoke.texi | 4 +- gcc/doc/sourcebuild.texi | 3 + gcc/dwarf2out.cc | 6 +- gcc/fortran/ChangeLog | 23 + gcc/fortran/resolve.cc | 2 +- gcc/fortran/trans-array.cc | 8 +- gcc/gimplify.cc | 8 +- gcc/ginclude/stddef.h | 8 +- gcc/ipa-cp.cc | 3 +- gcc/ipa-devirt.cc | 10 +- gcc/ipa-free-lang-data.cc | 14 + gcc/ipa-modref.cc | 3 +- gcc/lra-constraints.cc | 3 +- gcc/lto/ChangeLog | 27 + gcc/lto/lto-common.cc | 9 +- gcc/lto/lto-symtab.cc | 2 +- gcc/omp-simd-clone.cc | 2 +- gcc/testsuite/ChangeLog | 406 +++++ gcc/testsuite/c-c++-common/gomp/pr119000.c | 16 + .../g++.dg/cpp0x/lambda/lambda-__func__3.C | 6 + gcc/testsuite/g++.dg/cpp0x/pr119123.C | 10 + gcc/testsuite/g++.dg/cpp0x/pr98533.C | 25 + gcc/testsuite/g++.dg/cpp0x/temp-extend3.C | 32 + gcc/testsuite/g++.dg/cpp1y/constexpr-complex2.C | 18 + gcc/testsuite/g++.dg/cpp2a/concepts-pr116681.C | 20 + gcc/testsuite/g++.dg/cpp2a/concepts-requires41.C | 25 + gcc/testsuite/g++.dg/cpp2a/consteval41.C | 37 + gcc/testsuite/g++.dg/cpp2a/constexpr-117504.C | 60 + gcc/testsuite/g++.dg/cpp2a/constexpr-117504a.C | 12 + gcc/testsuite/g++.dg/cpp2a/constinit20.C | 18 + gcc/testsuite/g++.dg/cpp2a/lambda-requires2.C | 8 + gcc/testsuite/g++.dg/cpp2a/lambda-requires3.C | 6 + gcc/testsuite/g++.dg/cpp2a/lambda-requires4.C | 6 + gcc/testsuite/g++.dg/cpp2a/lambda-requires5.C | 10 + gcc/testsuite/g++.dg/debug/pr101533.C | 11 + gcc/testsuite/g++.dg/ipa/pr116572.C | 37 + gcc/testsuite/g++.dg/lto/pr119067_0.C | 22 + gcc/testsuite/g++.dg/lto/pr119067_1.C | 10 + gcc/testsuite/g++.dg/pr114501_0.C | 20 + gcc/testsuite/g++.dg/pr66279.C | 23 + gcc/testsuite/g++.dg/template/friend85.C | 16 + gcc/testsuite/g++.dg/torture/pr111245.C | 23 + gcc/testsuite/g++.dg/torture/pr11911.C | 21 + gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C | 2 +- gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C | 2 +- gcc/testsuite/gcc.c-torture/execute/pr118915.c | 22 + gcc/testsuite/gcc.dg/Warray-parameter-4.c | 6 +- gcc/testsuite/gcc.dg/Wvla-parameter-2.c | 15 +- gcc/testsuite/gcc.dg/Wvla-parameter-3.c | 11 +- gcc/testsuite/gcc.dg/c23-stddef-2.c | 17 + gcc/testsuite/gcc.dg/c23-tag-composite-11.c | 27 + gcc/testsuite/gcc.dg/gomp/simd-clones-8.c | 10 + gcc/testsuite/gcc.dg/lto/pr91299_0.c | 16 + gcc/testsuite/gcc.dg/lto/pr91299_1.c | 6 + gcc/testsuite/gcc.dg/pr101478.c | 11 + gcc/testsuite/gcc.dg/pr113688.c | 8 + gcc/testsuite/gcc.dg/pr114014.c | 14 + gcc/testsuite/gcc.dg/pr114713.c | 35 + gcc/testsuite/gcc.dg/pr116284.c | 14 + gcc/testsuite/gcc.dg/pr117145-1.c | 14 + gcc/testsuite/gcc.dg/pr117145-2.c | 10 + gcc/testsuite/gcc.dg/pr117245.c | 17 + gcc/testsuite/gcc.dg/pr117391.c | 14 + gcc/testsuite/gcc.dg/pr117724.c | 16 + gcc/testsuite/gcc.dg/pr117806.c | 13 + gcc/testsuite/gcc.dg/pr119151.c | 151 ++ gcc/testsuite/gcc.dg/pr119183.c | 12 + gcc/testsuite/gcc.dg/pr119204.c | 13 + gcc/testsuite/gcc.dg/pr81192.c | 6 +- gcc/testsuite/gcc.dg/pr98845.c | 33 + gcc/testsuite/gcc.dg/torture/pr118953.c | 42 + gcc/testsuite/gcc.dg/torture/pr119417.c | 24 + gcc/testsuite/gcc.dg/vect/pr119057.c | 19 + gcc/testsuite/gcc.dg/vect/pr119096.c | 21 + gcc/testsuite/gcc.dg/vect/pr119145.c | 35 + gcc/testsuite/gcc.dg/vect/vect-fncall-mask.c | 8 +- .../gcc.target/aarch64/torture/pr116564.c | 11 + gcc/testsuite/gcc.target/i386/pr119450.c | 15 + gcc/testsuite/gcc.target/i386/pr87984.c | 23 + gcc/testsuite/gcc.target/loongarch/pr119408.c | 12 + gcc/testsuite/gdc.dg/pr117621.d | 11 + gcc/testsuite/gdc.dg/torture/pr117002.d | 28 + gcc/testsuite/gfortran.dg/bounds_check_27.f90 | 45 + gcc/testsuite/gfortran.dg/proc_ptr_comp_54.f90 | 30 + gcc/tree-ssa-alias.cc | 3 +- gcc/tree-ssa-dom.cc | 4 +- gcc/tree-ssa-math-opts.cc | 48 +- gcc/tree-ssa-reassoc.cc | 2 +- gcc/tree-ssa-sccvn.cc | 2 + gcc/tree-ssa-tail-merge.cc | 8 + gcc/tree-vect-loop.cc | 14 +- gcc/tree-vect-stmts.cc | 2 +- gcc/tree-vectorizer.cc | 4 +- gcc/tree.cc | 63 +- gcc/value-range.cc | 2 +- libcpp/ChangeLog | 5 + libcpp/config.in | 3 + libcpp/configure | 2 +- libcpp/configure.ac | 4 +- libgcc/ChangeLog | 14 + libgcc/unwind-dw2-btree.h | 23 +- libgfortran/acinclude.m4 | 4 + libgfortran/configure | 8 + libquadmath/configure | 8 + libquadmath/configure.ac | 4 + libstdc++-v3/ChangeLog | 301 ++++ libstdc++-v3/doc/doxygen/user.cfg.in | 1 + .../doc/html/manual/policy_data_structures.html | 4 +- libstdc++-v3/doc/html/manual/test.html | 2 +- .../xml/manual/policy_data_structures_biblio.xml | 4 +- libstdc++-v3/doc/xml/manual/test.xml | 2 +- libstdc++-v3/include/bits/hashtable_policy.h | 80 +- libstdc++-v3/include/bits/iterator_concepts.h | 43 +- libstdc++-v3/include/bits/ranges_base.h | 6 + libstdc++-v3/include/bits/ranges_uninitialized.h | 26 +- libstdc++-v3/include/bits/stl_map.h | 4 +- libstdc++-v3/include/bits/stl_multimap.h | 4 +- libstdc++-v3/include/bits/stl_multiset.h | 4 +- libstdc++-v3/include/bits/stl_set.h | 4 +- libstdc++-v3/include/bits/stl_tree.h | 8 +- libstdc++-v3/include/bits/stl_vector.h | 41 +- libstdc++-v3/include/bits/unicode.h | 2 + libstdc++-v3/include/bits/vector.tcc | 15 +- libstdc++-v3/include/std/chrono | 2 +- libstdc++-v3/include/std/format | 24 +- libstdc++-v3/include/std/forward_list | 5 +- libstdc++-v3/include/std/future | 9 +- libstdc++-v3/include/std/list | 5 +- libstdc++-v3/include/std/ranges | 17 +- libstdc++-v3/include/std/tuple | 14 +- libstdc++-v3/src/c++20/tzdata.zi | 1696 ++++++++++---------- libstdc++-v3/src/c++20/tzdb.cc | 4 +- .../uninitialized_copy/constrained.cc | 41 + .../uninitialized_move/constrained.cc | 42 +- libstdc++-v3/testsuite/20_util/tuple/116440.C | 29 + .../23_containers/forward_list/erasure.cc | 22 + .../testsuite/23_containers/list/erasure.cc | 22 + .../23_containers/unordered_map/115939.cc | 29 + .../23_containers/vector/bool/capacity/110498.cc | 18 + .../23_containers/vector/bool/capacity/114758.cc | 12 + .../23_containers/vector/capacity/114945.cc | 36 + .../testsuite/23_containers/vector/cons/108487.cc | 24 + .../vector/modifiers/insert/117983.cc | 17 + .../24_iterators/common_iterator/101527.cc | 14 + .../24_iterators/counted_iterator/101527.cc | 14 + .../24_iterators/customization_points/iter_move.cc | 106 ++ .../testsuite/27_io/filesystem/operations/copy.cc | 18 + .../30_threads/packaged_task/cons/dangling_ref.cc | 1 + .../30_threads/packaged_task/cons/lwg4154_neg.cc | 38 + .../testsuite/std/format/functions/format.cc | 19 +- .../testsuite/std/ranges/adaptors/as_const/1.cc | 4 + libstdc++-v3/testsuite/std/ranges/conv/112803.cc | 20 + libstdc++-v3/testsuite/std/ranges/conv/lwg4229.cc | 18 + libstdc++-v3/testsuite/std/ranges/range.cc | 6 + 198 files changed, 5226 insertions(+), 1354 deletions(-) diff --cc gcc/c/c-typeck.cc index 75f02fe31f2d,57d5ca586608..70b15e20129c --- a/gcc/c/c-typeck.cc +++ b/gcc/c/c-typeck.cc @@@ -2974,51 -3201,10 +3211,51 @@@ build_omp_array_section (location_t loc gcc_assert (!error_operand_p (idxtype)); - sectype = build_array_type (eltype, idxtype); + sectype = c_build_array_type (eltype, idxtype); } - return build3_loc (loc, OMP_ARRAY_SECTION, sectype, array, index, length); + return build4_loc (loc, OMP_ARRAY_SECTION, sectype, array, index, length, + stride); +} + +/* Build an array type whose dimensions are given by OMP_SHAPE_DIMS and whose + elements are of the type pointed to by the "base" node of EXPR with outer + OMP_ARRAY_SECTIONs and ARRAY_REFs stripped off, e.g. the type of "*myptr" + in "myptr[0:2:3][4][5:6]". */ + +tree +create_omp_arrayshape_type (tree expr, vec<tree> *omp_shape_dims) +{ + tree strip_sections = expr; + + while (TREE_CODE (strip_sections) == OMP_ARRAY_SECTION + || TREE_CODE (strip_sections) == ARRAY_REF) + strip_sections = TREE_OPERAND (strip_sections, 0); + + tree type = TREE_TYPE (strip_sections); + + if (TREE_CODE (type) == REFERENCE_TYPE) + type = TREE_TYPE (type); + + if (TREE_CODE (type) != POINTER_TYPE) + { + error ("OpenMP array shaping operator with non-pointer argument"); + return error_mark_node; + } + + type = TREE_TYPE (type); + + int i; + tree dim; + FOR_EACH_VEC_ELT_REVERSE (*omp_shape_dims, i, dim) + { + tree maxidx = fold_convert (sizetype, dim); + maxidx = size_binop (MINUS_EXPR, maxidx, size_one_node); + tree index = build_index_type (maxidx); + type = build_array_type (type, index); + } + + return type; } diff --cc gcc/cp/semantics.cc index b5c8a5f4588e,3e75b5887506..d24685c7224b --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@@ -4394,9 -4386,9 +4394,10 @@@ finish_id_expression_1 (tree id_express body, except inside an unevaluated context (i.e. decltype). */ if (TREE_CODE (decl) == PARM_DECL && DECL_CONTEXT (decl) == NULL_TREE + && !CONSTRAINT_VAR_P (decl) && !cp_unevaluated_operand - && !processing_contract_condition) + && !processing_contract_condition + && !processing_omp_trait_property_expr) { *error_msg = G_("use of parameter outside function body"); return error_mark_node;