https://gcc.gnu.org/g:ec6cd3b97a59e30ba85179f55144940c6b088f87

commit r15-6249-gec6cd3b97a59e30ba85179f55144940c6b088f87
Author: GCC Administrator <gccadmin@gcc.gnu.org>
Date:   Sat Dec 14 00:19:52 2024 +0000

    Daily bump.

Diff:
---
 gcc/ChangeLog           | 1053 +++++++++++++++++++++++++++++++++++++++++++++++
 gcc/DATESTAMP           |    2 +-
 gcc/ada/ChangeLog       |  208 ++++++++++
 gcc/cp/ChangeLog        |    5 +
 gcc/testsuite/ChangeLog |   73 ++++
 libstdc++-v3/ChangeLog  |   35 ++
 6 files changed, 1375 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 94684bcc4435..60010f0dddbc 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,1056 @@
+2024-12-13  Jakub Jelinek  <ja...@redhat.com>
+
+       PR rtl-optimization/117095
+       * cse.cc (cse_extended_basic_block): Don't call record_jump_equiv
+       if multiple_sets (insn).
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+           Jakub Jelinek  <ja...@redhat.com>
+
+       PR target/114801
+       * config/arm/arm-mve-builtins.cc
+       (function_expander::add_input_operand): Handle CONST_INT
+       predicates.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-base.cc (class vst24_impl): New.
+       (class vld24_impl): New.
+       (vld2q, vld4q, vst2q, vst4q): New.
+       * config/arm/arm-mve-builtins-base.def (vld2q, vld4q, vst2q)
+       (vst4q): New.
+       * config/arm/arm-mve-builtins-base.h (vld2q, vld4q, vst2q, vst4q):
+       New.
+       * config/arm/arm-mve-builtins.cc (register_builtin_tuple_types):
+       Add more asserts.
+       * config/arm/arm.cc (TARGET_ARRAY_MODE): New.
+       (output_move_neon): Handle MVE struct modes.
+       (arm_print_operand_address): Likewise.
+       (arm_hard_regno_mode_ok): Likewise.
+       (arm_array_mode): New.
+       * config/arm/arm.h (VALID_MVE_STRUCT_MODE): Likewise.
+       * config/arm/arm_mve.h (vst4q): Delete.
+       (vst2q): Delete.
+       (vld2q): Delete.
+       (vld4q): Delete.
+       (vst4q_s8): Delete.
+       (vst4q_s16): Delete.
+       (vst4q_s32): Delete.
+       (vst4q_u8): Delete.
+       (vst4q_u16): Delete.
+       (vst4q_u32): Delete.
+       (vst4q_f16): Delete.
+       (vst4q_f32): Delete.
+       (vst2q_s8): Delete.
+       (vst2q_u8): Delete.
+       (vld2q_s8): Delete.
+       (vld2q_u8): Delete.
+       (vld4q_s8): Delete.
+       (vld4q_u8): Delete.
+       (vst2q_s16): Delete.
+       (vst2q_u16): Delete.
+       (vld2q_s16): Delete.
+       (vld2q_u16): Delete.
+       (vld4q_s16): Delete.
+       (vld4q_u16): Delete.
+       (vst2q_s32): Delete.
+       (vst2q_u32): Delete.
+       (vld2q_s32): Delete.
+       (vld2q_u32): Delete.
+       (vld4q_s32): Delete.
+       (vld4q_u32): Delete.
+       (vld4q_f16): Delete.
+       (vld2q_f16): Delete.
+       (vst2q_f16): Delete.
+       (vld4q_f32): Delete.
+       (vld2q_f32): Delete.
+       (vst2q_f32): Delete.
+       (__arm_vst4q_s8): Delete.
+       (__arm_vst4q_s16): Delete.
+       (__arm_vst4q_s32): Delete.
+       (__arm_vst4q_u8): Delete.
+       (__arm_vst4q_u16): Delete.
+       (__arm_vst4q_u32): Delete.
+       (__arm_vst2q_s8): Delete.
+       (__arm_vst2q_u8): Delete.
+       (__arm_vld2q_s8): Delete.
+       (__arm_vld2q_u8): Delete.
+       (__arm_vld4q_s8): Delete.
+       (__arm_vld4q_u8): Delete.
+       (__arm_vst2q_s16): Delete.
+       (__arm_vst2q_u16): Delete.
+       (__arm_vld2q_s16): Delete.
+       (__arm_vld2q_u16): Delete.
+       (__arm_vld4q_s16): Delete.
+       (__arm_vld4q_u16): Delete.
+       (__arm_vst2q_s32): Delete.
+       (__arm_vst2q_u32): Delete.
+       (__arm_vld2q_s32): Delete.
+       (__arm_vld2q_u32): Delete.
+       (__arm_vld4q_s32): Delete.
+       (__arm_vld4q_u32): Delete.
+       (__arm_vst4q_f16): Delete.
+       (__arm_vst4q_f32): Delete.
+       (__arm_vld4q_f16): Delete.
+       (__arm_vld2q_f16): Delete.
+       (__arm_vst2q_f16): Delete.
+       (__arm_vld4q_f32): Delete.
+       (__arm_vld2q_f32): Delete.
+       (__arm_vst2q_f32): Delete.
+       (__arm_vst4q): Delete.
+       (__arm_vst2q): Delete.
+       (__arm_vld2q): Delete.
+       (__arm_vld4q): Delete.
+       * config/arm/arm_mve_builtins.def (vst4q, vst2q, vld4q, vld2q):
+       Delete.
+       * config/arm/iterators.md (VSTRUCT): Add V2x16QI, V2x8HI, V2x4SI,
+       V2x8HF, V2x4SF, V4x16QI, V4x8HI, V4x4SI, V4x8HF, V4x4SF.
+       (MVE_VLD2_VST2, MVE_vld2_vst2, MVE_VLD4_VST4, MVE_vld4_vst4): New.
+       * config/arm/mve.md (mve_vst4q<mode>): Update into ...
+       (@mve_vst4q<mode>): ... this.
+       (mve_vst2q<mode>): Update into ...
+       (@mve_vst2q<mode>): ... this.
+       (mve_vld2q<mode>): Update into ...
+       (@mve_vld2q<mode>): ... this.
+       (mve_vld4q<mode>): Update into ...
+       (@mve_vld4q<mode>): ... this.
+       * config/arm/vec-common.md (vec_load_lanesoi<mode>) Remove MVE
+       support.
+       (vec_load_lanesxi<mode>): Likewise.
+       (vec_store_lanesoi<mode>): Likewise.
+       (vec_store_lanesxi<mode>): Likewise.
+       (vec_load_lanes<MVE_vld2_vst2><mode>):
+       New.
+       (vec_store_lanes<MVE_vld2_vst2><mode>): New.
+       (vec_load_lanes<MVE_vld4_vst4><mode>): New.
+       (vec_store_lanes<MVE_vld4_vst4><mode>): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (struct store_def): Add
+       support for tuples.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (parse_type): Fix access
+       to acle_vector_types.
+       * config/arm/arm-mve-builtins.cc (wrap_type_in_struct): New.
+       (register_type_decl): New.
+       (register_builtin_tuple_types): Fix support for tuples.
+       (function_resolver::infer_tuple_type): New.
+       * config/arm/arm-mve-builtins.h
+       (function_resolver::infer_tuple_type): Declare.
+       (function_instance::tuple_type): Fix access to acle_vector_types.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-modes.def (MVE_STRUCT_MODES): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/iterators.md (MVE_vecs): Remove V2DF.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/mve.md (mve_vec_extract_sext_internal): Fix
+       condition.
+       (mve_vec_extract_zext_internal): Likewise.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-base.cc (vstrq_impl): Remove
+       call_properties.
+       (vldrq_impl): Likewise.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_ldrgbwbxu_qualifiers)
+       (arm_ldrgbwbxu_z_qualifiers, arm_ldrgbwbs_qualifiers)
+       (arm_ldrgbwbu_qualifiers, arm_ldrgbwbs_z_qualifiers)
+       (arm_ldrgbwbu_z_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (vldrq_gather_base_impl):
+       Add support for MODE_wb.
+       * config/arm/arm-mve-builtins-shapes.cc (struct
+       load_gather_base_def): Likewise.
+       * config/arm/arm_mve.h (vldrdq_gather_base_wb_s64): Delete.
+       (vldrdq_gather_base_wb_u64): Delete.
+       (vldrdq_gather_base_wb_z_s64): Delete.
+       (vldrdq_gather_base_wb_z_u64): Delete.
+       (vldrwq_gather_base_wb_f32): Delete.
+       (vldrwq_gather_base_wb_s32): Delete.
+       (vldrwq_gather_base_wb_u32): Delete.
+       (vldrwq_gather_base_wb_z_f32): Delete.
+       (vldrwq_gather_base_wb_z_s32): Delete.
+       (vldrwq_gather_base_wb_z_u32): Delete.
+       (__arm_vldrdq_gather_base_wb_s64): Delete.
+       (__arm_vldrdq_gather_base_wb_u64): Delete.
+       (__arm_vldrdq_gather_base_wb_z_s64): Delete.
+       (__arm_vldrdq_gather_base_wb_z_u64): Delete.
+       (__arm_vldrwq_gather_base_wb_s32): Delete.
+       (__arm_vldrwq_gather_base_wb_u32): Delete.
+       (__arm_vldrwq_gather_base_wb_z_s32): Delete.
+       (__arm_vldrwq_gather_base_wb_z_u32): Delete.
+       (__arm_vldrwq_gather_base_wb_f32): Delete.
+       (__arm_vldrwq_gather_base_wb_z_f32): Delete.
+       * config/arm/arm_mve_builtins.def (vldrwq_gather_base_nowb_z_u)
+       (vldrdq_gather_base_nowb_z_u, vldrwq_gather_base_nowb_u)
+       (vldrdq_gather_base_nowb_u, vldrwq_gather_base_nowb_z_s)
+       (vldrwq_gather_base_nowb_z_f, vldrdq_gather_base_nowb_z_s)
+       (vldrwq_gather_base_nowb_s, vldrwq_gather_base_nowb_f)
+       (vldrdq_gather_base_nowb_s, vldrdq_gather_base_wb_z_s)
+       (vldrdq_gather_base_wb_z_u, vldrdq_gather_base_wb_s)
+       (vldrdq_gather_base_wb_u, vldrwq_gather_base_wb_z_s)
+       (vldrwq_gather_base_wb_z_f, vldrwq_gather_base_wb_z_u)
+       (vldrwq_gather_base_wb_s, vldrwq_gather_base_wb_f)
+       (vldrwq_gather_base_wb_u): Delete
+       * config/arm/iterators.md (supf): Remove VLDRWQGBWB_S,
+       VLDRWQGBWB_U, VLDRDQGBWB_S, VLDRDQGBWB_U.
+       (VLDRWGBWBQ, VLDRDGBWBQ): Delete.
+       * config/arm/mve.md (mve_vldrwq_gather_base_wb_<supf>v4si): Delete.
+       (mve_vldrwq_gather_base_nowb_<supf>v4si): Delete.
+       (mve_vldrwq_gather_base_wb_<supf>v4si_insn): Delete.
+       (mve_vldrwq_gather_base_wb_z_<supf>v4si): Delete.
+       (mve_vldrwq_gather_base_nowb_z_<supf>v4si): Delete.
+       (mve_vldrwq_gather_base_wb_z_<supf>v4si_insn): Delete.
+       (mve_vldrwq_gather_base_wb_fv4sf): Delete.
+       (mve_vldrwq_gather_base_nowb_fv4sf): Delete.
+       (mve_vldrwq_gather_base_wb_fv4sf_insn): Delete.
+       (mve_vldrwq_gather_base_wb_z_fv4sf): Delete.
+       (mve_vldrwq_gather_base_nowb_z_fv4sf): Delete.
+       (mve_vldrwq_gather_base_wb_z_fv4sf_insn): Delete.
+       (mve_vldrdq_gather_base_wb_<supf>v2di): Delete.
+       (mve_vldrdq_gather_base_nowb_<supf>v2di): Delete.
+       (mve_vldrdq_gather_base_wb_<supf>v2di_insn): Delete.
+       (mve_vldrdq_gather_base_wb_z_<supf>v2di): Delete.
+       (mve_vldrdq_gather_base_nowb_z_<supf>v2di): Delete.
+       (mve_vldrdq_gather_base_wb_z_<supf>v2di_insn): Delete.
+       (@mve_vldrq_gather_base_wb_<mode>): New.
+       (@mve_vldrq_gather_base_wb_z_<mode>): New.
+       * config/arm/unspecs.md (VLDRWQGBWB_S, VLDRWQGBWB_U, VLDRWQGBWB_F)
+       (VLDRDQGBWB_S, VLDRDQGBWB_U): Delete
+       (VLDRGBWBQ, VLDRGBWBQ_Z): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_ldrgbs_qualifiers)
+       (arm_ldrgbu_qualifiers, arm_ldrgbs_z_qualifiers)
+       (arm_ldrgbu_z_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (class
+       vldrq_gather_base_impl): New.
+       (vldrdq_gather_base, vldrwq_gather_base): New.
+       * config/arm/arm-mve-builtins-base.def (vldrdq_gather_base)
+       (vldrwq_gather_base): New.
+       * config/arm/arm-mve-builtins-base.h: (vldrdq_gather_base)
+       (vldrwq_gather_base): New.
+       * config/arm/arm_mve.h (vldrwq_gather_base_s32): Delete.
+       (vldrwq_gather_base_u32): Delete.
+       (vldrwq_gather_base_z_u32): Delete.
+       (vldrwq_gather_base_z_s32): Delete.
+       (vldrdq_gather_base_s64): Delete.
+       (vldrdq_gather_base_u64): Delete.
+       (vldrdq_gather_base_z_s64): Delete.
+       (vldrdq_gather_base_z_u64): Delete.
+       (vldrwq_gather_base_f32): Delete.
+       (vldrwq_gather_base_z_f32): Delete.
+       (__arm_vldrwq_gather_base_s32): Delete.
+       (__arm_vldrwq_gather_base_u32): Delete.
+       (__arm_vldrwq_gather_base_z_s32): Delete.
+       (__arm_vldrwq_gather_base_z_u32): Delete.
+       (__arm_vldrdq_gather_base_s64): Delete.
+       (__arm_vldrdq_gather_base_u64): Delete.
+       (__arm_vldrdq_gather_base_z_s64): Delete.
+       (__arm_vldrdq_gather_base_z_u64): Delete.
+       (__arm_vldrwq_gather_base_f32): Delete.
+       (__arm_vldrwq_gather_base_z_f32): Delete.
+       * config/arm/arm_mve_builtins.def (vldrwq_gather_base_s)
+       (vldrwq_gather_base_u, vldrwq_gather_base_z_s)
+       (vldrwq_gather_base_z_u, vldrdq_gather_base_s)
+       (vldrwq_gather_base_f, vldrdq_gather_base_z_s)
+       (vldrwq_gather_base_z_f, vldrdq_gather_base_u)
+       (vldrdq_gather_base_z_u): Delete.
+       * config/arm/iterators.md (supf): Remove VLDRWQGB_S, VLDRWQGB_U,
+       VLDRDQGB_S, VLDRDQGB_U.
+       (VLDRWGBQ, VLDRDGBQ): Delete.
+       * config/arm/mve.md (mve_vldrwq_gather_base_<supf>v4si): Delete.
+       (mve_vldrwq_gather_base_z_<supf>v4si): Delete.
+       (mve_vldrdq_gather_base_<supf>v2di): Delete.
+       (mve_vldrdq_gather_base_z_<supf>v2di): Delete.
+       (mve_vldrwq_gather_base_fv4sf): Delete.
+       (mve_vldrwq_gather_base_z_fv4sf): Delete.
+       (@mve_vldrq_gather_base_<mode>): New.
+       (@mve_vldrq_gather_base_z_<mode>): New.
+       * config/arm/unspecs.md (VLDRWQGB_S, VLDRWQGB_U, VLDRDQGB_S)
+       (VLDRDQGB_U, VLDRWQGB_F): Delete.
+       (VLDRGBQ, VLDRGBQ_Z): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (struct
+       load_gather_base_def): New.
+       * config/arm/arm-mve-builtins-shapes.h: (load_gather_base): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_ldrgu_qualifiers)
+       (arm_ldrgs_qualifiers, arm_ldrgs_z_qualifiers)
+       (arm_ldrgu_z_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (vldrq_gather_impl): Add
+       support for shifted version.
+       (vldrdq_gather_shifted, vldrhq_gather_shifted)
+       (vldrwq_gather_shifted): New.
+       * config/arm/arm-mve-builtins-base.def (vldrdq_gather_shifted)
+       (vldrhq_gather_shifted, vldrwq_gather_shifted): New.
+       * config/arm/arm-mve-builtins-base.h (vldrdq_gather_shifted)
+       (vldrhq_gather_shifted, vldrwq_gather_shifted): New.
+       * config/arm/arm_mve.h (vldrhq_gather_shifted_offset): Delete.
+       (vldrhq_gather_shifted_offset_z): Delete.
+       (vldrdq_gather_shifted_offset): Delete.
+       (vldrdq_gather_shifted_offset_z): Delete.
+       (vldrwq_gather_shifted_offset): Delete.
+       (vldrwq_gather_shifted_offset_z): Delete.
+       (vldrhq_gather_shifted_offset_s32): Delete.
+       (vldrhq_gather_shifted_offset_s16): Delete.
+       (vldrhq_gather_shifted_offset_u32): Delete.
+       (vldrhq_gather_shifted_offset_u16): Delete.
+       (vldrhq_gather_shifted_offset_z_s32): Delete.
+       (vldrhq_gather_shifted_offset_z_s16): Delete.
+       (vldrhq_gather_shifted_offset_z_u32): Delete.
+       (vldrhq_gather_shifted_offset_z_u16): Delete.
+       (vldrdq_gather_shifted_offset_s64): Delete.
+       (vldrdq_gather_shifted_offset_u64): Delete.
+       (vldrdq_gather_shifted_offset_z_s64): Delete.
+       (vldrdq_gather_shifted_offset_z_u64): Delete.
+       (vldrhq_gather_shifted_offset_f16): Delete.
+       (vldrhq_gather_shifted_offset_z_f16): Delete.
+       (vldrwq_gather_shifted_offset_f32): Delete.
+       (vldrwq_gather_shifted_offset_s32): Delete.
+       (vldrwq_gather_shifted_offset_u32): Delete.
+       (vldrwq_gather_shifted_offset_z_f32): Delete.
+       (vldrwq_gather_shifted_offset_z_s32): Delete.
+       (vldrwq_gather_shifted_offset_z_u32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_s32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_s16): Delete.
+       (__arm_vldrhq_gather_shifted_offset_u32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_u16): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z_s32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z_s16): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z_u32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z_u16): Delete.
+       (__arm_vldrdq_gather_shifted_offset_s64): Delete.
+       (__arm_vldrdq_gather_shifted_offset_u64): Delete.
+       (__arm_vldrdq_gather_shifted_offset_z_s64): Delete.
+       (__arm_vldrdq_gather_shifted_offset_z_u64): Delete.
+       (__arm_vldrwq_gather_shifted_offset_s32): Delete.
+       (__arm_vldrwq_gather_shifted_offset_u32): Delete.
+       (__arm_vldrwq_gather_shifted_offset_z_s32): Delete.
+       (__arm_vldrwq_gather_shifted_offset_z_u32): Delete.
+       (__arm_vldrhq_gather_shifted_offset_f16): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z_f16): Delete.
+       (__arm_vldrwq_gather_shifted_offset_f32): Delete.
+       (__arm_vldrwq_gather_shifted_offset_z_f32): Delete.
+       (__arm_vldrhq_gather_shifted_offset): Delete.
+       (__arm_vldrhq_gather_shifted_offset_z): Delete.
+       (__arm_vldrdq_gather_shifted_offset): Delete.
+       (__arm_vldrdq_gather_shifted_offset_z): Delete.
+       (__arm_vldrwq_gather_shifted_offset): Delete.
+       (__arm_vldrwq_gather_shifted_offset_z): Delete.
+       * config/arm/arm_mve_builtins.def
+       (vldrhq_gather_shifted_offset_z_u, vldrhq_gather_shifted_offset_u)
+       (vldrhq_gather_shifted_offset_z_s, vldrhq_gather_shifted_offset_s)
+       (vldrdq_gather_shifted_offset_s, vldrhq_gather_shifted_offset_f)
+       (vldrwq_gather_shifted_offset_f, vldrwq_gather_shifted_offset_s)
+       (vldrdq_gather_shifted_offset_z_s)
+       (vldrhq_gather_shifted_offset_z_f)
+       (vldrwq_gather_shifted_offset_z_f)
+       (vldrwq_gather_shifted_offset_z_s, vldrdq_gather_shifted_offset_u)
+       (vldrwq_gather_shifted_offset_u, vldrdq_gather_shifted_offset_z_u)
+       (vldrwq_gather_shifted_offset_z_u): Delete.
+       * config/arm/iterators.md (supf): Remove VLDRHQGSO_S, VLDRHQGSO_U,
+       VLDRDQGSO_S, VLDRDQGSO_U, VLDRWQGSO_S, VLDRWQGSO_U.
+       (VLDRHGSOQ, VLDRDGSOQ, VLDRWGSOQ): Delete.
+       * config/arm/mve.md
+       (mve_vldrhq_gather_shifted_offset_<supf><mode>): Delete.
+       (mve_vldrhq_gather_shifted_offset_z_<supf><mode>): Delete.
+       (mve_vldrdq_gather_shifted_offset_<supf>v2di): Delete.
+       (mve_vldrdq_gather_shifted_offset_z_<supf>v2di): Delete.
+       (mve_vldrhq_gather_shifted_offset_fv8hf): Delete.
+       (mve_vldrhq_gather_shifted_offset_z_fv8hf): Delete.
+       (mve_vldrwq_gather_shifted_offset_fv4sf): Delete.
+       (mve_vldrwq_gather_shifted_offset_<supf>v4si): Delete.
+       (mve_vldrwq_gather_shifted_offset_z_fv4sf): Delete.
+       (mve_vldrwq_gather_shifted_offset_z_<supf>v4si): Delete.
+       (@mve_vldrq_gather_shifted_offset_<mode>): New.
+       (@mve_vldrq_gather_shifted_offset_extend_v4si<US>): New.
+       (@mve_vldrq_gather_shifted_offset_z_<mode>): New.
+       (@mve_vldrq_gather_shifted_offset_z_extend_v4si<US>): New.
+       * config/arm/unspecs.md (VLDRHQGSO_S, VLDRHQGSO_U, VLDRDQGSO_S)
+       (VLDRDQGSO_U, VLDRHQGSO_F, VLDRWQGSO_F, VLDRWQGSO_S, VLDRWQGSO_U):
+       Delete.
+       (VLDRGSOQ, VLDRGSOQ_Z, VLDRGSOQ_EXT, VLDRGSOQ_EXT_Z): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-base.cc (class vldrq_gather_impl):
+       New.
+       (vldrbq_gather, vldrdq_gather, vldrhq_gather, vldrwq_gather): New.
+       * config/arm/arm-mve-builtins-base.def (vldrbq_gather)
+       (vldrdq_gather, vldrhq_gather, vldrwq_gather): New.
+       * config/arm/arm-mve-builtins-base.h (vldrbq_gather)
+       (vldrdq_gather, vldrhq_gather, vldrwq_gather): New.
+       * config/arm/arm_mve.h (vldrbq_gather_offset): Delete.
+       (vldrbq_gather_offset_z): Delete.
+       (vldrhq_gather_offset): Delete.
+       (vldrhq_gather_offset_z): Delete.
+       (vldrdq_gather_offset): Delete.
+       (vldrdq_gather_offset_z): Delete.
+       (vldrwq_gather_offset): Delete.
+       (vldrwq_gather_offset_z): Delete.
+       (vldrbq_gather_offset_u8): Delete.
+       (vldrbq_gather_offset_s8): Delete.
+       (vldrbq_gather_offset_u16): Delete.
+       (vldrbq_gather_offset_s16): Delete.
+       (vldrbq_gather_offset_u32): Delete.
+       (vldrbq_gather_offset_s32): Delete.
+       (vldrbq_gather_offset_z_s16): Delete.
+       (vldrbq_gather_offset_z_u8): Delete.
+       (vldrbq_gather_offset_z_s32): Delete.
+       (vldrbq_gather_offset_z_u16): Delete.
+       (vldrbq_gather_offset_z_u32): Delete.
+       (vldrbq_gather_offset_z_s8): Delete.
+       (vldrhq_gather_offset_s32): Delete.
+       (vldrhq_gather_offset_s16): Delete.
+       (vldrhq_gather_offset_u32): Delete.
+       (vldrhq_gather_offset_u16): Delete.
+       (vldrhq_gather_offset_z_s32): Delete.
+       (vldrhq_gather_offset_z_s16): Delete.
+       (vldrhq_gather_offset_z_u32): Delete.
+       (vldrhq_gather_offset_z_u16): Delete.
+       (vldrdq_gather_offset_s64): Delete.
+       (vldrdq_gather_offset_u64): Delete.
+       (vldrdq_gather_offset_z_s64): Delete.
+       (vldrdq_gather_offset_z_u64): Delete.
+       (vldrhq_gather_offset_f16): Delete.
+       (vldrhq_gather_offset_z_f16): Delete.
+       (vldrwq_gather_offset_f32): Delete.
+       (vldrwq_gather_offset_s32): Delete.
+       (vldrwq_gather_offset_u32): Delete.
+       (vldrwq_gather_offset_z_f32): Delete.
+       (vldrwq_gather_offset_z_s32): Delete.
+       (vldrwq_gather_offset_z_u32): Delete.
+       (__arm_vldrbq_gather_offset_u8): Delete.
+       (__arm_vldrbq_gather_offset_s8): Delete.
+       (__arm_vldrbq_gather_offset_u16): Delete.
+       (__arm_vldrbq_gather_offset_s16): Delete.
+       (__arm_vldrbq_gather_offset_u32): Delete.
+       (__arm_vldrbq_gather_offset_s32): Delete.
+       (__arm_vldrbq_gather_offset_z_s8): Delete.
+       (__arm_vldrbq_gather_offset_z_s32): Delete.
+       (__arm_vldrbq_gather_offset_z_s16): Delete.
+       (__arm_vldrbq_gather_offset_z_u8): Delete.
+       (__arm_vldrbq_gather_offset_z_u32): Delete.
+       (__arm_vldrbq_gather_offset_z_u16): Delete.
+       (__arm_vldrhq_gather_offset_s32): Delete.
+       (__arm_vldrhq_gather_offset_s16): Delete.
+       (__arm_vldrhq_gather_offset_u32): Delete.
+       (__arm_vldrhq_gather_offset_u16): Delete.
+       (__arm_vldrhq_gather_offset_z_s32): Delete.
+       (__arm_vldrhq_gather_offset_z_s16): Delete.
+       (__arm_vldrhq_gather_offset_z_u32): Delete.
+       (__arm_vldrhq_gather_offset_z_u16): Delete.
+       (__arm_vldrdq_gather_offset_s64): Delete.
+       (__arm_vldrdq_gather_offset_u64): Delete.
+       (__arm_vldrdq_gather_offset_z_s64): Delete.
+       (__arm_vldrdq_gather_offset_z_u64): Delete.
+       (__arm_vldrwq_gather_offset_s32): Delete.
+       (__arm_vldrwq_gather_offset_u32): Delete.
+       (__arm_vldrwq_gather_offset_z_s32): Delete.
+       (__arm_vldrwq_gather_offset_z_u32): Delete.
+       (__arm_vldrhq_gather_offset_f16): Delete.
+       (__arm_vldrhq_gather_offset_z_f16): Delete.
+       (__arm_vldrwq_gather_offset_f32): Delete.
+       (__arm_vldrwq_gather_offset_z_f32): Delete.
+       (__arm_vldrbq_gather_offset): Delete.
+       (__arm_vldrbq_gather_offset_z): Delete.
+       (__arm_vldrhq_gather_offset): Delete.
+       (__arm_vldrhq_gather_offset_z): Delete.
+       (__arm_vldrdq_gather_offset): Delete.
+       (__arm_vldrdq_gather_offset_z): Delete.
+       (__arm_vldrwq_gather_offset): Delete.
+       (__arm_vldrwq_gather_offset_z): Delete.
+       * config/arm/arm_mve_builtins.def (vldrbq_gather_offset_u)
+       (vldrbq_gather_offset_s, vldrbq_gather_offset_z_s)
+       (vldrbq_gather_offset_z_u, vldrhq_gather_offset_z_u)
+       (vldrhq_gather_offset_u, vldrhq_gather_offset_z_s)
+       (vldrhq_gather_offset_s, vldrdq_gather_offset_s)
+       (vldrhq_gather_offset_f, vldrwq_gather_offset_f)
+       (vldrwq_gather_offset_s, vldrdq_gather_offset_z_s)
+       (vldrhq_gather_offset_z_f, vldrwq_gather_offset_z_f)
+       (vldrwq_gather_offset_z_s, vldrdq_gather_offset_u)
+       (vldrwq_gather_offset_u, vldrdq_gather_offset_z_u)
+       (vldrwq_gather_offset_z_u): Delete.
+       * config/arm/iterators.md (MVE_u_elem): New.
+       (supf): Remove VLDRBQGO_S, VLDRBQGO_U, VLDRHQGO_S, VLDRHQGO_U,
+       VLDRDQGO_S, VLDRDQGO_U, VLDRWQGO_S, VLDRWQGO_U.
+       (VLDRBGOQ, VLDRHGOQ, VLDRDGOQ, VLDRWGOQ): Delete.
+       * config/arm/mve.md (mve_vldrbq_gather_offset_<supf><mode>):
+       Delete.
+       (mve_vldrbq_gather_offset_z_<supf><mode>): Delete.
+       (mve_vldrhq_gather_offset_<supf><mode>): Delete.
+       (mve_vldrhq_gather_offset_z_<supf><mode>): Delete.
+       (mve_vldrdq_gather_offset_<supf>v2di): Delete.
+       (mve_vldrdq_gather_offset_z_<supf>v2di): Delete.
+       (mve_vldrhq_gather_offset_fv8hf): Delete.
+       (mve_vldrhq_gather_offset_z_fv8hf): Delete.
+       (mve_vldrwq_gather_offset_fv4sf): Delete.
+       (mve_vldrwq_gather_offset_<supf>v4si): Delete.
+       (mve_vldrwq_gather_offset_z_fv4sf): Delete.
+       (mve_vldrwq_gather_offset_z_<supf>v4si): Delete.
+       (@mve_vldrq_gather_offset_<mode>): New.
+       (@mve_vldrq_gather_offset_extend_<mode><US>): New.
+       (@mve_vldrq_gather_offset_z_<mode>): New.
+       (@mve_vldrq_gather_offset_z_extend_<mode><US>): New.
+       * config/arm/unspecs.md (VLDRBQGO_S, VLDRBQGO_U, VLDRHQGO_S)
+       (VLDRHQGO_U, VLDRDQGO_S, VLDRDQGO_U, VLDRHQGO_F, VLDRWQGO_F)
+       (VLDRWQGO_S, VLDRWQGO_U): Delete.
+       (VLDRGOQ, VLDRGOQ_Z, VLDRGOQ_EXT, VLDRGOQ_EXT_Z): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (struct load_ext_gather):
+       New.
+       (struct load_ext_gather_offset_def): New.
+       * config/arm/arm-mve-builtins-shapes.h (load_ext_gather_offset):
+       New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_strsbwbs_qualifiers)
+       (arm_strsbwbu_qualifiers, arm_strsbwbs_p_qualifiers)
+       (arm_strsbwbu_p_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (vstrq_scatter_base_impl):
+       Add support for MODE_wb.
+       * config/arm/arm-mve-builtins-shapes.cc (parse_type): Add support
+       for 'b' type.
+       (store_scatter_base): Add support for MODE_wb.
+       * config/arm/arm-mve-builtins.cc
+       (function_resolver::require_pointer_to_type): New.
+       * config/arm/arm-mve-builtins.h
+       (function_resolver::require_pointer_to_type): New.
+       * config/arm/arm_mve.h (vstrdq_scatter_base_wb): Delete.
+       (vstrdq_scatter_base_wb_p): Delete.
+       (vstrwq_scatter_base_wb_p): Delete.
+       (vstrwq_scatter_base_wb): Delete.
+       (vstrdq_scatter_base_wb_p_s64): Delete.
+       (vstrdq_scatter_base_wb_p_u64): Delete.
+       (vstrdq_scatter_base_wb_s64): Delete.
+       (vstrdq_scatter_base_wb_u64): Delete.
+       (vstrwq_scatter_base_wb_p_s32): Delete.
+       (vstrwq_scatter_base_wb_p_f32): Delete.
+       (vstrwq_scatter_base_wb_p_u32): Delete.
+       (vstrwq_scatter_base_wb_s32): Delete.
+       (vstrwq_scatter_base_wb_u32): Delete.
+       (vstrwq_scatter_base_wb_f32): Delete.
+       (__arm_vstrdq_scatter_base_wb_s64): Delete.
+       (__arm_vstrdq_scatter_base_wb_u64): Delete.
+       (__arm_vstrdq_scatter_base_wb_p_s64): Delete.
+       (__arm_vstrdq_scatter_base_wb_p_u64): Delete.
+       (__arm_vstrwq_scatter_base_wb_p_s32): Delete.
+       (__arm_vstrwq_scatter_base_wb_p_u32): Delete.
+       (__arm_vstrwq_scatter_base_wb_s32): Delete.
+       (__arm_vstrwq_scatter_base_wb_u32): Delete.
+       (__arm_vstrwq_scatter_base_wb_f32): Delete.
+       (__arm_vstrwq_scatter_base_wb_p_f32): Delete.
+       (__arm_vstrdq_scatter_base_wb): Delete.
+       (__arm_vstrdq_scatter_base_wb_p): Delete.
+       (__arm_vstrwq_scatter_base_wb_p): Delete.
+       (__arm_vstrwq_scatter_base_wb): Delete.
+       * config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_u)
+       (vstrdq_scatter_base_wb_u, vstrwq_scatter_base_wb_p_u)
+       (vstrdq_scatter_base_wb_p_u, vstrwq_scatter_base_wb_s)
+       (vstrwq_scatter_base_wb_f, vstrdq_scatter_base_wb_s)
+       (vstrwq_scatter_base_wb_p_s, vstrwq_scatter_base_wb_p_f)
+       (vstrdq_scatter_base_wb_p_s): Delete.
+       * config/arm/iterators.md (supf): Remove VSTRWQSBWB_S,
+       VSTRWQSBWB_U, VSTRDQSBWB_S, VSTRDQSBWB_U.
+       (VSTRDSBQ, VSTRWSBWBQ, VSTRDSBWBQ): Delete.
+       * config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_base_wb_fv4sf): Delete.
+       (mve_vstrwq_scatter_base_wb_p_fv4sf): Delete.
+       (mve_vstrdq_scatter_base_wb_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Delete.
+       (@mve_vstrq_scatter_base_wb_<mode>): New.
+       (@mve_vstrq_scatter_base_wb_p_<mode>): New.
+       * config/arm/unspecs.md (VSTRWQSBWB_S, VSTRWQSBWB_U, VSTRWQSBWB_F)
+       (VSTRDQSBWB_S, VSTRDQSBWB_U): Delete.
+       (VSTRSBWBQ, VSTRSBWBQ_P): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_strsbs_qualifiers)
+       (arm_strsbu_qualifiers, arm_strsbs_p_qualifiers)
+       (arm_strsbu_p_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (class
+       vstrq_scatter_base_impl): New.
+       (vstrwq_scatter_base, vstrdq_scatter_base): New.
+       * config/arm/arm-mve-builtins-base.def (vstrwq_scatter_base)
+       (vstrdq_scatter_base): New.
+       * config/arm/arm-mve-builtins-base.h (vstrwq_scatter_base)
+       (vstrdq_scatter_base): New.
+       * config/arm/arm_mve.h (vstrwq_scatter_base): Delete.
+       (vstrwq_scatter_base_p): Delete.
+       (vstrdq_scatter_base_p): Delete.
+       (vstrdq_scatter_base): Delete.
+       (vstrwq_scatter_base_s32): Delete.
+       (vstrwq_scatter_base_u32): Delete.
+       (vstrwq_scatter_base_p_s32): Delete.
+       (vstrwq_scatter_base_p_u32): Delete.
+       (vstrdq_scatter_base_p_s64): Delete.
+       (vstrdq_scatter_base_p_u64): Delete.
+       (vstrdq_scatter_base_s64): Delete.
+       (vstrdq_scatter_base_u64): Delete.
+       (vstrwq_scatter_base_f32): Delete.
+       (vstrwq_scatter_base_p_f32): Delete.
+       (__arm_vstrwq_scatter_base_s32): Delete.
+       (__arm_vstrwq_scatter_base_u32): Delete.
+       (__arm_vstrwq_scatter_base_p_s32): Delete.
+       (__arm_vstrwq_scatter_base_p_u32): Delete.
+       (__arm_vstrdq_scatter_base_p_s64): Delete.
+       (__arm_vstrdq_scatter_base_p_u64): Delete.
+       (__arm_vstrdq_scatter_base_s64): Delete.
+       (__arm_vstrdq_scatter_base_u64): Delete.
+       (__arm_vstrwq_scatter_base_f32): Delete.
+       (__arm_vstrwq_scatter_base_p_f32): Delete.
+       (__arm_vstrwq_scatter_base): Delete.
+       (__arm_vstrwq_scatter_base_p): Delete.
+       (__arm_vstrdq_scatter_base_p): Delete.
+       (__arm_vstrdq_scatter_base): Delete.
+       * config/arm/arm_mve_builtins.def (vstrwq_scatter_base_s)
+       (vstrwq_scatter_base_u, vstrwq_scatter_base_p_s)
+       (vstrwq_scatter_base_p_u, vstrdq_scatter_base_s)
+       (vstrwq_scatter_base_f, vstrdq_scatter_base_p_s)
+       (vstrwq_scatter_base_p_f, vstrdq_scatter_base_u)
+       (vstrdq_scatter_base_p_u): Delete.
+       * config/arm/iterators.md (MVE_4): New.
+       (supf): Remove VSTRWQSB_S, VSTRWQSB_U.
+       (VSTRWSBQ): Delete.
+       * config/arm/mve.md (mve_vstrwq_scatter_base_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_base_p_<supf>v4si): Delete.
+       (mve_vstrdq_scatter_base_p_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_base_<supf>v2di): Delete.
+       (mve_vstrwq_scatter_base_fv4sf): Delete.
+       (mve_vstrwq_scatter_base_p_fv4sf): Delete.
+       (@mve_vstrq_scatter_base_<mode>): New.
+       (@mve_vstrq_scatter_base_p_<mode>): New.
+       * config/arm/unspecs.md (VSTRWQSB_S, VSTRWQSB_U, VSTRWQSB_F):
+       Delete.
+       (VSTRSBQ, VSTRSBQ_P): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (store_scatter_base): New.
+       * config/arm/arm-mve-builtins-shapes.h (store_scatter_base): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins.cc (report_out_of_range_multiple):
+       New.
+       (function_checker::require_signed_immediate): New.
+       (function_checker::require_immediate_range_multiple): New.
+       * config/arm/arm-mve-builtins.h
+       (function_checker::require_immediate_range_multiple): New.
+       (function_checker::require_signed_immediate): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-builtins.cc (arm_strss_qualifiers)
+       (arm_strsu_qualifiers, arm_strsu_p_qualifiers)
+       (arm_strss_p_qualifiers): Delete.
+       * config/arm/arm-mve-builtins-base.cc (class vstrq_scatter_impl):
+       Add support for shifted version.
+       (vstrdq_scatter_shifted, vstrhq_scatter_shifted)
+       (vstrwq_scatter_shifted): New.
+       * config/arm/arm-mve-builtins-base.def (vstrhq_scatter_shifted)
+       (vstrwq_scatter_shifted, vstrdq_scatter_shifted): New.
+       * config/arm/arm-mve-builtins-base.h (vstrhq_scatter_shifted)
+       (vstrwq_scatter_shifted, vstrdq_scatter_shifted): New.
+       * config/arm/arm_mve.h (vstrhq_scatter_shifted_offset): Delete.
+       (vstrhq_scatter_shifted_offset_p): Delete.
+       (vstrdq_scatter_shifted_offset_p): Delete.
+       (vstrdq_scatter_shifted_offset): Delete.
+       (vstrwq_scatter_shifted_offset_p): Delete.
+       (vstrwq_scatter_shifted_offset): Delete.
+       (vstrhq_scatter_shifted_offset_s32): Delete.
+       (vstrhq_scatter_shifted_offset_s16): Delete.
+       (vstrhq_scatter_shifted_offset_u32): Delete.
+       (vstrhq_scatter_shifted_offset_u16): Delete.
+       (vstrhq_scatter_shifted_offset_p_s32): Delete.
+       (vstrhq_scatter_shifted_offset_p_s16): Delete.
+       (vstrhq_scatter_shifted_offset_p_u32): Delete.
+       (vstrhq_scatter_shifted_offset_p_u16): Delete.
+       (vstrdq_scatter_shifted_offset_p_s64): Delete.
+       (vstrdq_scatter_shifted_offset_p_u64): Delete.
+       (vstrdq_scatter_shifted_offset_s64): Delete.
+       (vstrdq_scatter_shifted_offset_u64): Delete.
+       (vstrhq_scatter_shifted_offset_f16): Delete.
+       (vstrhq_scatter_shifted_offset_p_f16): Delete.
+       (vstrwq_scatter_shifted_offset_f32): Delete.
+       (vstrwq_scatter_shifted_offset_p_f32): Delete.
+       (vstrwq_scatter_shifted_offset_p_s32): Delete.
+       (vstrwq_scatter_shifted_offset_p_u32): Delete.
+       (vstrwq_scatter_shifted_offset_s32): Delete.
+       (vstrwq_scatter_shifted_offset_u32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_s32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_s16): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_u32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_u16): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p_s32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p_s16): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p_u32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p_u16): Delete.
+       (__arm_vstrdq_scatter_shifted_offset_p_s64): Delete.
+       (__arm_vstrdq_scatter_shifted_offset_p_u64): Delete.
+       (__arm_vstrdq_scatter_shifted_offset_s64): Delete.
+       (__arm_vstrdq_scatter_shifted_offset_u64): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_p_s32): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_p_u32): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_s32): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_u32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_f16): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p_f16): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_f32): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_p_f32): Delete.
+       (__arm_vstrhq_scatter_shifted_offset): Delete.
+       (__arm_vstrhq_scatter_shifted_offset_p): Delete.
+       (__arm_vstrdq_scatter_shifted_offset_p): Delete.
+       (__arm_vstrdq_scatter_shifted_offset): Delete.
+       (__arm_vstrwq_scatter_shifted_offset_p): Delete.
+       (__arm_vstrwq_scatter_shifted_offset): Delete.
+       * config/arm/arm_mve_builtins.def
+       (vstrhq_scatter_shifted_offset_p_u)
+       (vstrhq_scatter_shifted_offset_u)
+       (vstrhq_scatter_shifted_offset_p_s)
+       (vstrhq_scatter_shifted_offset_s, vstrdq_scatter_shifted_offset_s)
+       (vstrhq_scatter_shifted_offset_f, vstrwq_scatter_shifted_offset_f)
+       (vstrwq_scatter_shifted_offset_s)
+       (vstrdq_scatter_shifted_offset_p_s)
+       (vstrhq_scatter_shifted_offset_p_f)
+       (vstrwq_scatter_shifted_offset_p_f)
+       (vstrwq_scatter_shifted_offset_p_s)
+       (vstrdq_scatter_shifted_offset_u, vstrwq_scatter_shifted_offset_u)
+       (vstrdq_scatter_shifted_offset_p_u)
+       (vstrwq_scatter_shifted_offset_p_u): Delete.
+       * config/arm/iterators.md (MVE_VLD_ST_scatter_shifted): New.
+       (MVE_scatter_shift): New.
+       (supf): Remove VSTRHQSSO_S, VSTRHQSSO_U, VSTRDQSSO_S, VSTRDQSSO_U,
+       VSTRWQSSO_U, VSTRWQSSO_S.
+       (VSTRHSSOQ, VSTRDSSOQ, VSTRWSSOQ): Delete.
+       * config/arm/mve.md (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): 
Delete.
+       (mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Delete.
+       (mve_vstrhq_scatter_shifted_offset_<supf><mode>): Delete.
+       (mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Delete.
+       (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Delete.
+       (mve_vstrdq_scatter_shifted_offset_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Delete.
+       (mve_vstrhq_scatter_shifted_offset_fv8hf): Delete.
+       (mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Delete.
+       (mve_vstrhq_scatter_shifted_offset_p_fv8hf): Delete.
+       (mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Delete.
+       (mve_vstrwq_scatter_shifted_offset_fv4sf): Delete.
+       (mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Delete.
+       (mve_vstrwq_scatter_shifted_offset_p_fv4sf): Delete.
+       (mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Delete.
+       (mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Delete.
+       (mve_vstrwq_scatter_shifted_offset_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Delete.
+       (@mve_vstrq_scatter_shifted_offset_<mode>): New.
+       (@mve_vstrq_scatter_shifted_offset_p_<mode>): New.
+       (mve_vstrq_truncate_scatter_shifted_offset_v4si): New.
+       (mve_vstrq_truncate_scatter_shifted_offset_p_v4si): New.
+       * config/arm/unspecs.md (VSTRDQSSO_S, VSTRDQSSO_U, VSTRWQSSO_S)
+       (VSTRWQSSO_U, VSTRHQSSO_F, VSTRWQSSO_F, VSTRHQSSO_S, VSTRHQSSO_U):
+       Delete.
+       (VSTRSSOQ, VSTRSSOQ_P, VSTRSSOQ_TRUNC, VSTRSSOQ_TRUNC_P): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-base.cc (class vstrq_scatter_impl):
+       New.
+       (vstrbq_scatter, vstrhq_scatter, vstrwq_scatter, vstrdq_scatter):
+       New.
+       * config/arm/arm-mve-builtins-base.def (vstrbq_scatter)
+       (vstrhq_scatter, vstrwq_scatter, vstrdq_scatter): New.
+       * config/arm/arm-mve-builtins-base.h (vstrbq_scatter)
+       (vstrhq_scatter, vstrwq_scatter, vstrdq_scatter): New.
+       * config/arm/arm-mve-builtins.cc (integer_64): New.
+       * config/arm/arm_mve.h (vstrbq_scatter_offset): Delete.
+       (vstrbq_scatter_offset_p): Delete.
+       (vstrhq_scatter_offset): Delete.
+       (vstrhq_scatter_offset_p): Delete.
+       (vstrdq_scatter_offset_p): Delete.
+       (vstrdq_scatter_offset): Delete.
+       (vstrwq_scatter_offset_p): Delete.
+       (vstrwq_scatter_offset): Delete.
+       (vstrbq_scatter_offset_s8): Delete.
+       (vstrbq_scatter_offset_u8): Delete.
+       (vstrbq_scatter_offset_u16): Delete.
+       (vstrbq_scatter_offset_s16): Delete.
+       (vstrbq_scatter_offset_u32): Delete.
+       (vstrbq_scatter_offset_s32): Delete.
+       (vstrbq_scatter_offset_p_s8): Delete.
+       (vstrbq_scatter_offset_p_s32): Delete.
+       (vstrbq_scatter_offset_p_s16): Delete.
+       (vstrbq_scatter_offset_p_u8): Delete.
+       (vstrbq_scatter_offset_p_u32): Delete.
+       (vstrbq_scatter_offset_p_u16): Delete.
+       (vstrhq_scatter_offset_s32): Delete.
+       (vstrhq_scatter_offset_s16): Delete.
+       (vstrhq_scatter_offset_u32): Delete.
+       (vstrhq_scatter_offset_u16): Delete.
+       (vstrhq_scatter_offset_p_s32): Delete.
+       (vstrhq_scatter_offset_p_s16): Delete.
+       (vstrhq_scatter_offset_p_u32): Delete.
+       (vstrhq_scatter_offset_p_u16): Delete.
+       (vstrdq_scatter_offset_p_s64): Delete.
+       (vstrdq_scatter_offset_p_u64): Delete.
+       (vstrdq_scatter_offset_s64): Delete.
+       (vstrdq_scatter_offset_u64): Delete.
+       (vstrhq_scatter_offset_f16): Delete.
+       (vstrhq_scatter_offset_p_f16): Delete.
+       (vstrwq_scatter_offset_f32): Delete.
+       (vstrwq_scatter_offset_p_f32): Delete.
+       (vstrwq_scatter_offset_p_s32): Delete.
+       (vstrwq_scatter_offset_p_u32): Delete.
+       (vstrwq_scatter_offset_s32): Delete.
+       (vstrwq_scatter_offset_u32): Delete.
+       (__arm_vstrbq_scatter_offset_s8): Delete.
+       (__arm_vstrbq_scatter_offset_s32): Delete.
+       (__arm_vstrbq_scatter_offset_s16): Delete.
+       (__arm_vstrbq_scatter_offset_u8): Delete.
+       (__arm_vstrbq_scatter_offset_u32): Delete.
+       (__arm_vstrbq_scatter_offset_u16): Delete.
+       (__arm_vstrbq_scatter_offset_p_s8): Delete.
+       (__arm_vstrbq_scatter_offset_p_s32): Delete.
+       (__arm_vstrbq_scatter_offset_p_s16): Delete.
+       (__arm_vstrbq_scatter_offset_p_u8): Delete.
+       (__arm_vstrbq_scatter_offset_p_u32): Delete.
+       (__arm_vstrbq_scatter_offset_p_u16): Delete.
+       (__arm_vstrhq_scatter_offset_s32): Delete.
+       (__arm_vstrhq_scatter_offset_s16): Delete.
+       (__arm_vstrhq_scatter_offset_u32): Delete.
+       (__arm_vstrhq_scatter_offset_u16): Delete.
+       (__arm_vstrhq_scatter_offset_p_s32): Delete.
+       (__arm_vstrhq_scatter_offset_p_s16): Delete.
+       (__arm_vstrhq_scatter_offset_p_u32): Delete.
+       (__arm_vstrhq_scatter_offset_p_u16): Delete.
+       (__arm_vstrdq_scatter_offset_p_s64): Delete.
+       (__arm_vstrdq_scatter_offset_p_u64): Delete.
+       (__arm_vstrdq_scatter_offset_s64): Delete.
+       (__arm_vstrdq_scatter_offset_u64): Delete.
+       (__arm_vstrwq_scatter_offset_p_s32): Delete.
+       (__arm_vstrwq_scatter_offset_p_u32): Delete.
+       (__arm_vstrwq_scatter_offset_s32): Delete.
+       (__arm_vstrwq_scatter_offset_u32): Delete.
+       (__arm_vstrhq_scatter_offset_f16): Delete.
+       (__arm_vstrhq_scatter_offset_p_f16): Delete.
+       (__arm_vstrwq_scatter_offset_f32): Delete.
+       (__arm_vstrwq_scatter_offset_p_f32): Delete.
+       (__arm_vstrbq_scatter_offset): Delete.
+       (__arm_vstrbq_scatter_offset_p): Delete.
+       (__arm_vstrhq_scatter_offset): Delete.
+       (__arm_vstrhq_scatter_offset_p): Delete.
+       (__arm_vstrdq_scatter_offset_p): Delete.
+       (__arm_vstrdq_scatter_offset): Delete.
+       (__arm_vstrwq_scatter_offset_p): Delete.
+       (__arm_vstrwq_scatter_offset): Delete.
+       * config/arm/arm_mve_builtins.def (vstrbq_scatter_offset_s)
+       (vstrbq_scatter_offset_u, vstrbq_scatter_offset_p_s)
+       (vstrbq_scatter_offset_p_u, vstrhq_scatter_offset_p_u)
+       (vstrhq_scatter_offset_u, vstrhq_scatter_offset_p_s)
+       (vstrhq_scatter_offset_s, vstrdq_scatter_offset_s)
+       (vstrhq_scatter_offset_f, vstrwq_scatter_offset_f)
+       (vstrwq_scatter_offset_s, vstrdq_scatter_offset_p_s)
+       (vstrhq_scatter_offset_p_f, vstrwq_scatter_offset_p_f)
+       (vstrwq_scatter_offset_p_s, vstrdq_scatter_offset_u)
+       (vstrwq_scatter_offset_u, vstrdq_scatter_offset_p_u)
+       (vstrwq_scatter_offset_p_u) Delete.
+       * config/arm/iterators.md (MVE_VLD_ST_scatter): New.
+       (MVE_scatter_offset): New.
+       (MVE_elem_ch): Add entry for V2DI.
+       (supf): Remove VSTRBQSO_S, VSTRBQSO_U, VSTRHQSO_S, VSTRHQSO_U,
+       VSTRDQSO_S, VSTRDQSO_U, VSTRWQSO_U, VSTRWQSO_S.
+       (VSTRBSOQ, VSTRHSOQ, VSTRDSOQ, VSTRWSOQ): Delete.
+       * config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>):
+       Delete.
+       (mve_vstrbq_scatter_offset_<supf><mode>_insn): Delete.
+       (mve_vstrbq_scatter_offset_p_<supf><mode>): Delete.
+       (mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Delete.
+       (mve_vstrhq_scatter_offset_p_<supf><mode>): Delete.
+       (mve_vstrhq_scatter_offset_p_<supf><mode>_insn): Delete.
+       (mve_vstrhq_scatter_offset_<supf><mode>): Delete.
+       (mve_vstrhq_scatter_offset_<supf><mode>_insn): Delete.
+       (mve_vstrdq_scatter_offset_p_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Delete.
+       (mve_vstrdq_scatter_offset_<supf>v2di): Delete.
+       (mve_vstrdq_scatter_offset_<supf>v2di_insn): Delete.
+       (mve_vstrhq_scatter_offset_fv8hf): Delete.
+       (mve_vstrhq_scatter_offset_fv8hf_insn): Delete.
+       (mve_vstrhq_scatter_offset_p_fv8hf): Delete.
+       (mve_vstrhq_scatter_offset_p_fv8hf_insn): Delete.
+       (mve_vstrwq_scatter_offset_fv4sf): Delete.
+       (mve_vstrwq_scatter_offset_fv4sf_insn): Delete.
+       (mve_vstrwq_scatter_offset_p_fv4sf): Delete.
+       (mve_vstrwq_scatter_offset_p_fv4sf_insn): Delete.
+       (mve_vstrwq_scatter_offset_p_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Delete.
+       (mve_vstrwq_scatter_offset_<supf>v4si): Delete.
+       (mve_vstrwq_scatter_offset_<supf>v4si_insn): Delete.
+       (@mve_vstrq_scatter_offset_<mode>): New.
+       (@mve_vstrq_scatter_offset_p_<mode>): New.
+       (@mve_vstrq_truncate_scatter_offset_<mode>): New.
+       (@mve_vstrq_truncate_scatter_offset_p_<mode>): New.
+       * config/arm/unspecs.md (VSTRBQSO_S, VSTRBQSO_U, VSTRHQSO_S)
+       (VSTRDQSO_S, VSTRDQSO_U, VSTRWQSO_S, VSTRWQSO_U, VSTRHQSO_F)
+       (VSTRWQSO_F, VSTRHQSO_U): Delete.
+       (VSTRQSO, VSTRQSO_P, VSTRQSO_TRUNC, VSTRQSO_TRUNC_P): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (struct store_scatter): New.
+       (struct store_scatter_offset_def): New.
+       * config/arm/arm-mve-builtins-shapes.h (store_scatter_offset): New.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * config/arm/arm-mve-builtins-shapes.cc (struct
+       nonoverloaded_base): Implement mode_after_pred.
+       (struct overloaded_base): Likewise.
+       * config/arm/arm-mve-builtins.cc (function_builder::get_name):
+       Call mode_after_pred as needed.
+       * config/arm/arm-mve-builtins.h (function_shape): Add
+       mode_after_pred.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       PR target/111600
+       * Makefile.in:  Add insn-recog split.
+       * configure: Regenerate.
+       * configure.ac: Document that the number of insnemit partitions is
+       used for insn-recog as well.
+       * genconditions.cc (write_one_condition): Use fprintf.
+       * genpreds.cc (write_predicate_expr): Ditto.
+       (write_init_reg_class_start_regs): Ditto.
+       * genrecog.cc (write_header): Add header file to includes.
+       (printf_indent): Use fprintf.
+       (change_state): Ditto.
+       (print_code): Ditto.
+       (print_host_wide_int): Ditto.
+       (print_parameter_value): Ditto.
+       (print_test_rtx): Ditto.
+       (print_nonbool_test): Ditto.
+       (print_label_value): Ditto.
+       (print_test): Ditto.
+       (print_decision): Ditto.
+       (print_state): Ditto.
+       (print_subroutine_call): Ditto.
+       (print_acceptance): Ditto.
+       (print_subroutine_start): Ditto.
+       (print_pattern): Ditto.
+       (print_subroutine): Ditto.
+       (print_subroutine_group): Ditto.
+       (handle_arg): Add -O and -H for output and header file handling.
+       (main): Use callback.
+       * gentarget-def.cc (def_target_insn): Use fprintf.
+       * read-md.cc (md_reader::print_c_condition): Ditto.
+       * read-md.h (class md_reader): Ditto.
+
+2024-12-13  Tamar Christina  <tamar.christ...@arm.com>
+
+       * config/aarch64/tuning_models/cortexx925.h: Set L1 cache size to 64b.
+       * config/aarch64/tuning_models/neoverse512tvb.h: Likewise.
+       * config/aarch64/tuning_models/neoversen1.h: Likewise.
+       * config/aarch64/tuning_models/neoversen2.h: Likewise.
+       * config/aarch64/tuning_models/neoversen3.h: Likewise.
+       * config/aarch64/tuning_models/neoversev1.h: Likewise.
+       * config/aarch64/tuning_models/neoversev2.h: Likewise.
+       (neoversev2_prefetch_tune): Removed.
+       * config/aarch64/tuning_models/neoversev3.h: Likewise.
+       * config/aarch64/tuning_models/neoversev3ae.h: Likewise.
+
+2024-12-13  Tamar Christina  <tamar.christ...@arm.com>
+
+       * config/aarch64/aarch64-fusion-pairs.def (AARCH64_FUSE_NEOVERSE_BASE):
+       New.
+       * config/aarch64/tuning_models/neoverse512tvb.h: Use it.
+       * config/aarch64/tuning_models/neoversen2.h: Use it.
+       * config/aarch64/tuning_models/neoversen3.h: Use it.
+       * config/aarch64/tuning_models/neoversev1.h: Use it.
+       * config/aarch64/tuning_models/neoversev2.h: Use it.
+       * config/aarch64/tuning_models/neoversev3.h: Use it.
+       * config/aarch64/tuning_models/neoversev3ae.h: Use it.
+       * config/aarch64/tuning_models/cortexx925.h: Add fusions.
+       * config/aarch64/tuning_models/generic_armv9_a.h: Add fusions.
+
+2024-12-13  Jakub Jelinek  <ja...@redhat.com>
+
+       PR target/116979
+       * config/i386/mmx.md (vec_fmaddsubv2sf4, vec_fmsubaddv2sf4): New
+       define_expand patterns.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * config/riscv/riscv-protos.h (riscv_register_move_cost):
+       Export.
+       * config/riscv/riscv-v.cc (shuffle_extract_and_slide1up_patterns):
+       Rename...
+       (shuffle_off_by_one_patterns): ... to this and add slideup/slidedown
+       variant.
+       (expand_vec_perm_const_1): Call renamed function.
+       * config/riscv/riscv.cc (riscv_secondary_memory_needed): Remove
+       static.
+       (riscv_register_move_cost): Add VR<->GR/FR handling.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * config/riscv/riscv-v.cc (shuffle_even_odd_patterns): New
+       function.
+       (expand_vec_perm_const_1): Use new function.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * config/riscv/riscv-v.cc (shuffle_interleave_patterns): New
+       function.
+       (expand_vec_perm_const_1): Use new function.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * config/riscv/riscv-v.cc (shuffle_slide_patterns): New.
+       (expand_vec_perm_const_1): Call new function.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       PR target/117353
+       PR target/117878
+       * config/riscv/riscv-v.cc (expand_const_vector): Use predicated
+       instead of simple shift.
+
+2024-12-13  Pan Li  <pan2...@intel.com>
+
+       PR target/117990
+       * config/riscv/vector.md: Add the (mem:BLK (scratch)) to the
+       vector strided load.
+
+2024-12-13  Sandra Loosemore  <sloosem...@baylibre.com>
+
+       PR middle-end/111659
+       * doc/extend.texi (Common Variable Attributes): Copy-edit description
+       of the strict_flex_array attribute levels.
+       * doc/invoke.texi (C Dialect Options): Swap documented behavior for
+       levels 0 and 3.  Copy the description for the other levels from the
+       attribute instead of indirecting to it.
+
 2024-12-12  John David Anglin  <dang...@gcc.gnu.org>
 
        * config/pa/pa.cc (pa_emit_hpdiv_const): Clobber r1, r25,
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dba749d567d3..ae0d5cf829e3 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20241213
+20241214
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 6f322281ce4c..926b85e59ac8 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,211 @@
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * gcc-interface/utils2.cc (compare_elmt_bitpos): Deal specially with
+       0-sized components when the bit position is the same.
+
+2024-12-13  Tom Tromey  <tro...@adacore.com>
+
+       * gcc-interface/decl.cc (gnat_to_gnu_entity): Pass artificial_p to
+       create_type_decl.
+
+2024-12-13  Javier Miranda  <mira...@adacore.com>
+
+       * sem.ads (Inside_Preanalysis_Without_Freezing): Removed.
+       * sem.adb (Semantics): Remove Inside_Preanalysis_Without_Freezing.
+       * sem_ch6.adb (Preanalyze_Formal_Expression): Removed.
+       * sem_ch3.ads (Preanalyze_Assert_Expression): Add documentation.
+       (Preanalyze_Spec_Expression): Add documentation.
+       * sem_ch3.adb (Preanalyze_Assert_Expression) Code cleanup.
+       (Preanalyze_Default_Expression): Code cleanup.
+       * sem_res.ads (Preanalyze_With_Freezing_And_Resolve): Removed.
+       * sem_res.adb (Preanalyze_With_Freezing_And_Resolve): Removed.
+       (Preanalyze_And_Resolve): Code cleanup.
+       * freeze.adb (Freeze_Entity): No freeze under strict preanalysis.
+       (Freeze_Expression): Code cleanup.
+       (Freeze_Expr_Types): Replace call to Preanalyze_Spec_Expression by
+       strict preanalysis during preanalysis of a duplicate of the
+       expression performed to have available the minimum decoration
+       to locate referenced unfrozen types.
+       * sem_aggr.adb (Resolve_Array_Aggregate): Minor code cleanup.
+       * sem_attr.adb (Resolve_Attribute): Add documentation.
+       * sem_ch13.adb (Resolve_Aspect_Expressions[Aspect_Default_Value]):
+       Replace call to Preanalyze_Spec_Expression by Preanalyze_And_Resolve.
+       (Resolve_Aspect_Expressions[Aspect_Default_Component_Value]): Ditto.
+       * sem_ch8.adb (Set_Entity_Or_Discriminal): Code cleaup.
+       * sem_prag.adb (Analyze_Initial_Condition_In_Decl_Part): Replace
+       call to Preanalyze_Assert_Expression by call to Preanalyze_And_Resolve.
+       (Analyze_Pre_Post_Condition): Replace call to Preanayze_Spec_Expression
+       by call to Preanalyze_Assert_Expression.
+       * sem_util.ads (In_Pragma_Expression): Adding a formal to extend the
+       functionality of this subprogram.
+       (Within_Static_Expression): New subprogram.
+       * sem_util.adb (In_Pragma_Expression): Ditto.
+       (Within_Static_Expression): Ditto.
+       * checks.adb (Install_Null_Excluding_Check): No check during 
preanalysis.
+       (Install_Primitive_Elaboration_Check): Ditto.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * exp_aggr.ads (Is_Delayed_Conditional_Expression): Move to...
+       * exp_aggr.adb (Is_Delayed_Conditional_Expression): Move to...
+       (Convert_To_Assignments): Use Delay_Conditional_Expressions_Between.
+       * exp_ch3.adb (Expand_N_Object_Declaration): Reset the Analyzed flag
+       by means of Unanalyze_Delayed_Conditional_Expression.
+       * exp_ch4.adb (Expand_N_Case_Expression): Likewise.  Delay expanding
+       the expression if it is in the context of a simple return statement.
+       (Expand_N_If_Expression): Likewise.
+       (Expand_N_Qualified_Expression): Fold identical operand.  Distribute
+       the expression into an operand that is a conditional expression with
+       expansion delayed.
+       (Process_Transient_In_Expression): Also test the parent node for the
+       presence of a simple return statement.
+       * exp_ch6.adb (Expand_Ctrl_Function_Call): Test the unconditional
+       parent node for the presence of a simple return statement.
+       * exp_util.ads (Delayed Expansion): New description.
+       (Delay_Conditional_Expressions_Between): New procedure.
+       (Is_Delayed_Conditional_Expression): ...here.
+       (Unanalyze_Delayed_Conditional_Expression): New procedure.
+       (Unconditional_Parent): New function.
+       * exp_util.adb (Find_Hook_Context): Take into account conditional
+       statements coming from conditional expressions.
+       (Within_Conditional_Expression): Likewise.
+       (Delay_Conditional_Expressions_Between): New procedure.
+       (Is_Delayed_Conditional_Expression): ...here.
+       (Unanalyze_Delayed_Conditional_Expression): New procedure.
+       (Unconditional_Parent): New function.
+       * sinfo.ads (Expansion_Delayed): Adjust description.
+
+2024-12-13  Piotr Trojanek  <troja...@adacore.com>
+
+       * exp_aggr.adb (Case_Bounds): Fix indentation.
+       * sem_case.adb (Choice_Bounds): Likewise.
+       * libgnat/s-dourea.ads (Duuble_T): Likewise.
+       * libgnat/s-excmac__arm.ads (Cleanup_Cache_Type): Likewise.
+
+2024-12-13  Piotr Trojanek  <troja...@adacore.com>
+
+       * atree.adb, diagnostics-pretty_emitter.adb,
+       diagnostics-utils.adb, einfo-utils.adb, errout.adb, exp_aggr.adb,
+       exp_ch3.adb, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_imgv.adb,
+       exp_pakd.adb, exp_prag.adb, exp_unst.adb, exp_util.adb, gnatchop.adb,
+       gnatlink.adb, inline.adb, itypes.adb, osint.adb, rtsfind.adb,
+       sem_aggr.adb, sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb,
+       sem_ch4.adb, sem_dim.adb, sem_elab.adb, sem_prag.adb, sem_util.adb,
+       sprint.adb, switch-m.adb, table.adb: Fix code indentation.
+
+2024-12-13  Marc Poulhiès  <poulh...@adacore.com>
+
+       * libgnat/a-tifiio.adb (OK_Get_32): Use 'Base.
+       (OK_Put_32, OK_Get_64, OK_Put_64): Likewise.
+       * libgnat/a-tifiio__128.adb (OK_Get_32, OK_Put_32, OK_Get_64)
+       (OK_Put_64, OK_Get_128, OK_Put_128): Likewise.
+       * libgnat/a-wtfiio.adb (OK_Get_32): Likewise.
+       (OK_Put_32, OK_Get_64, OK_Put_64): Likewise.
+       * libgnat/a-wtfiio__128.adb (OK_Get_32, OK_Put_32, OK_Get_64)
+       (OK_Put_64, OK_Get_128, OK_Put_128): Likewise.
+       * libgnat/a-ztfiio.adb (OK_Get_32): Likewise.
+       (OK_Put_32, OK_Get_64, OK_Put_64): Likewise.
+       * libgnat/a-ztfiio__128.adb (OK_Get_32, OK_Put_32, OK_Get_64)
+       (OK_Put_64, OK_Get_128, OK_Put_128): Likewise.
+
+2024-12-13  Javier Miranda  <mira...@adacore.com>
+
+       * sem_res.adb (Report_Ambiguous_Argument): Code cleanup.
+       (Resolve): Code cleanup.
+
+2024-12-13  Piotr Trojanek  <troja...@adacore.com>
+
+       * sem_util.adb (Is_Effectively_Volatile,
+       Is_Effectively_Volatile_For_Reading): Implement new rule for
+       record types.
+       * sem_util.ads (Is_Effectively_Volatile,
+       Is_Effectively_Volatile_For_Reading): Adjust comments.
+
+2024-12-13  Piotr Trojanek  <troja...@adacore.com>
+
+       * sem_util.adb (Is_Effectively_Volatile,
+       Is_Effectively_Volatile_For_Reading): Remove Ignore_Protected
+       parameter.
+       (Is_Effectively_Volatile_Object,
+       Is_Effectively_Volatile_Object_For_Reading): Remove
+       single-parameter wrappers that are needed to instantiate
+       generic subprogram.
+       * sem_util.ads (Is_Effectively_Volatile,
+       Is_Effectively_Volatile_For_Reading): Remove parameter; adjust
+       comment.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * exp_ch4.adb (Expand_Allocator_Expression): Do not preventively
+       call Remove_Side_Effects on the expression in the nonlimited
+       by-reference case.  Always call Build_Allocate_Deallocate_Proc
+       in the default case.
+       * exp_ch6.adb (Expand_Ctrl_Function_Call): Bail out if the call
+       is the qualified expression of an allocator.
+       * exp_util.adb (Build_Allocate_Deallocate_Proc): Replace all the
+       calls to Relocate_Node by calls to Duplicate_Subexpr_No_Checks.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Do not call again
+       Preanalyze_And_Resolve on the expression.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * sem_aggr.adb (Resolve_Aggr_Expr): Always perform a full analysis
+       of the expression in SPARK mode.
+
+2024-12-13  Ronan Desplanques  <desplanq...@adacore.com>
+
+       * doc/gnat_rm/gnat_language_extensions.rst: Fix typo.
+       * gnat_rm.texi: Regenerate.
+       * gnat_ugn.texi: Regenerate.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * exp_ch6.adb (Expand_Call_Helper): Also create a temporary in the
+       case of a noncontrolled user-defined indexing.
+
+2024-12-13  Ronan Desplanques  <desplanq...@adacore.com>
+
+       * doc/gnat_rm/standard_library_routines.rst: Fix documentation.
+       * gnat_rm.texi: Regenerate.
+       * gnat_ugn.texi: Regenerate.
+
+2024-12-13  Ronan Desplanques  <desplanq...@adacore.com>
+
+       * gnat2.gpr: Add library units to coverage exclusion list.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * exp_aggr.adb (Build_Array_Aggr_Code): Remove obsolete comment.
+       (Convert_To_Positional): Remove Ctyp local variable.
+       (Is_Static_Element): Remove Dims parameter and do not preanalyze the
+       expression there.
+       (Expand_Array_Aggregate): Make Ctyp a constant.
+       (Compute_Others_Present): Do not preanalyze the expression there.
+       * sem_aggr.adb (Resolve_Array_Aggregate): New Ctyp constant.  Use it
+       throughout the procedure to denote the component type.
+       (Resolve_Aggr_Expr): Always preanalyze a copy of the expression in
+       an iteration context.  Preanalyze it directly when the expander is
+       active and the choice may cover multiple components.  Otherwise,
+       fully analyze it.
+       Do not reanalyze an iterated component association with an others
+       choice either when there are positional components.
+       (Resolve_Iterated_Component_Association): Do not remove references
+       from the expression after invoking Resolve_Aggr_Expr on it.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * libgnat/s-imager.adb (Set_Image_Real): In the case where a double
+       integer is needed, do not implicit assume that it can contain up to
+       'Digits of the floating-point type.
+
+2024-12-13  Eric Botcazou  <ebotca...@adacore.com>
+
+       * libgnat/s-imager.adb (Maxscaling): Change to Natural constant and
+       add Maxdigs to value.
+
 2024-12-12  Eric Botcazou  <ebotca...@adacore.com>
 
        PR ada/117996
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9a00a19f161b..3597b5f841ff 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2024-12-13  Tobias Burnus  <tbur...@baylibre.com>
+
+       * parser.cc (cp_parser_omp_construct, cp_parser_pragma): Reject
+       OpenMP expressions in constexpr functions.
+
 2024-12-12  Tobias Burnus  <tbur...@baylibre.com>
 
        * parser.cc (OMP_DISPATCH_CLAUSE_MASK): Add has_device_addr clause.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6d08c99445f6..1020a8c4ba5f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,76 @@
+2024-12-13  Jakub Jelinek  <ja...@redhat.com>
+
+       PR rtl-optimization/117095
+       * gcc.c-torture/execute/pr117095.c: New test.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+           Jakub Jelinek  <ja...@redhat.com>
+
+       PR target/114801
+       * gcc.target/arm/mve/pr108443.c: Update predicate constant.
+       * gcc.target/arm/mve/pr108443-run.c: Likewise.
+       * gcc.target/arm/mve/pr114801.c: New test.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_s64.c:
+       Update expected output.
+       * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_wb_u64.c:
+       Likewise.
+
+2024-12-13  Christophe Lyon  <christophe.l...@linaro.org>
+
+       * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_s64.c: Update
+       expected output.
+       * gcc.target/arm/mve/intrinsics/vldrdq_gather_base_u64.c:
+       Likewise.
+
+2024-12-13  Tobias Burnus  <tbur...@baylibre.com>
+
+       * g++.dg/gomp/pr108607.C: Update dg-error.
+       * g++.dg/gomp/pr79664.C: Update dg-error.
+       * g++.dg/gomp/omp-constexpr.C: New test.
+
+2024-12-13  Jakub Jelinek  <ja...@redhat.com>
+
+       PR target/116979
+       * gcc.target/i386/pr116979.c: New test.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * gcc.target/riscv/rvv/autovec/pr112599-2.c: Adjust test
+       expectation.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-evenodd-run.c: New 
test.
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-evenodd.c: New test.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-interleave-run.c: New 
test.
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-interleave.c: New test.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slide-run.c: New test.
+       * gcc.target/riscv/rvv/autovec/vls-vlmax/shuffle-slide.c: New test.
+
+2024-12-13  Robin Dapp  <rd...@ventanamicro.com>
+
+       PR target/117353
+       PR target/117878
+       * gcc.target/riscv/rvv/autovec/pr117353.c: New test.
+
+2024-12-13  Jakub Jelinek  <ja...@redhat.com>
+
+       * c-c++-common/cpp/embed-1.c: Use #error rather than #errror.
+
+2024-12-13  Pan Li  <pan2...@intel.com>
+
+       PR target/117990
+       * gcc.target/riscv/rvv/base/pr117990-run-1.c: New test.
+
 2024-12-12  Jakub Jelinek  <ja...@redhat.com>
 
        PR sanitizer/115127
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4eb9124c6fe9..fa4fae4f846d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,38 @@
+2024-12-13  Patrick Palka  <ppa...@redhat.com>
+
+       PR libstdc++/112349
+       * include/bits/ranges_algo.h (__min_fn::operator()): Turn local
+       object __tmp into a reference.
+       * include/bits/ranges_util.h (__max_fn::operator()): Likewise.
+       * testsuite/25_algorithms/max/constrained.cc (test04): New test.
+       * testsuite/25_algorithms/min/constrained.cc (test04): New test.
+
+2024-12-13  Jonathan Wakely  <jwak...@redhat.com>
+
+       * include/std/spanstream (basic_spanbuf::seekoff): Return an
+       error for invalid seekdir values.
+
+2024-12-13  Jonathan Wakely  <jwak...@redhat.com>
+
+       * include/bits/ranges_cmp.h (not_equal_to): Make order of
+       expressions in noexcept-specifier match the body.
+       * testsuite/20_util/function_objects/range.cmp/not_equal_to.cc:
+       Check noexcept.
+
+2024-12-13  Jonathan Wakely  <jwak...@redhat.com>
+
+       * include/bits/regex.tcc: Fix -Wsign-compare warning.
+
+2024-12-13  Jonathan Wakely  <jwak...@redhat.com>
+
+       * include/pstl/parallel_backend_tbb.h (__merge_func): Fix order
+       of mem-initializers.
+
+2024-12-13  Jonathan Wakely  <jwak...@redhat.com>
+
+       * testsuite/26_numerics/random/random_device/entropy.cc: Fix
+       indentation to avoid -Wmisleading-indentation warning.
+
 2024-12-12  Jonathan Wakely  <jwak...@redhat.com>
 
        * testsuite/23_containers/unordered_map/modifiers/reserve.cc:

Reply via email to