aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGCC Administrator <gccadmin@gcc.gnu.org>2024-12-14 00:19:52 +0000
committerGCC Administrator <gccadmin@gcc.gnu.org>2024-12-14 00:19:52 +0000
commitec6cd3b97a59e30ba85179f55144940c6b088f87 (patch)
treefff8225591df881ef516d38357621ddd51527e2c
parentb626ebc0d7888ddae16a55ca583b56a4b8434bdf (diff)
downloadgcc-ec6cd3b97a59e30ba85179f55144940c6b088f87.zip
gcc-ec6cd3b97a59e30ba85179f55144940c6b088f87.tar.gz
gcc-ec6cd3b97a59e30ba85179f55144940c6b088f87.tar.bz2
Daily bump.
-rw-r--r--gcc/ChangeLog1053
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/ada/ChangeLog208
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/testsuite/ChangeLog73
-rw-r--r--libstdc++-v3/ChangeLog35
6 files changed, 1375 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 94684bc..60010f0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,1056 @@
+2024-12-13 Jakub Jelinek <jakub@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.lyon@linaro.org>
+ Jakub Jelinek <jakub@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.lyon@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.lyon@linaro.org>
+
+ * config/arm/arm-mve-builtins-shapes.cc (struct store_def): Add
+ support for tuples.
+
+2024-12-13 Christophe Lyon <christophe.lyon@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.lyon@linaro.org>
+
+ * config/arm/arm-modes.def (MVE_STRUCT_MODES): New.
+
+2024-12-13 Christophe Lyon <christophe.lyon@linaro.org>
+
+ * config/arm/iterators.md (MVE_vecs): Remove V2DF.
+
+2024-12-13 Christophe Lyon <christophe.lyon@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.lyon@linaro.org>
+
+ * config/arm/arm-mve-builtins-base.cc (vstrq_impl): Remove
+ call_properties.
+ (vldrq_impl): Likewise.
+
+2024-12-13 Christophe Lyon <christophe.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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.lyon@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 <rdapp@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.christina@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.christina@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 <jakub@redhat.com>
+
+ PR target/116979
+ * config/i386/mmx.md (vec_fmaddsubv2sf4, vec_fmsubaddv2sf4): New
+ define_expand patterns.
+
+2024-12-13 Robin Dapp <rdapp@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 <rdapp@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 <rdapp@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 <rdapp@ventanamicro.com>
+
+ * config/riscv/riscv-v.cc (shuffle_slide_patterns): New.
+ (expand_vec_perm_const_1): Call new function.
+
+2024-12-13 Robin Dapp <rdapp@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.li@intel.com>
+
+ PR target/117990
+ * config/riscv/vector.md: Add the (mem:BLK (scratch)) to the
+ vector strided load.
+
+2024-12-13 Sandra Loosemore <sloosemore@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 <danglin@gcc.gnu.org>
* config/pa/pa.cc (pa_emit_hpdiv_const): Clobber r1, r25,
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index dba749d..ae0d5cf 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20241213
+20241214
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 6f32228..926b85e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,211 @@
+2024-12-13 Eric Botcazou <ebotcazou@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 <tromey@adacore.com>
+
+ * gcc-interface/decl.cc (gnat_to_gnu_entity): Pass artificial_p to
+ create_type_decl.
+
+2024-12-13 Javier Miranda <miranda@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 <ebotcazou@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 <trojanek@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 <trojanek@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 <poulhies@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 <miranda@adacore.com>
+
+ * sem_res.adb (Report_Ambiguous_Argument): Code cleanup.
+ (Resolve): Code cleanup.
+
+2024-12-13 Piotr Trojanek <trojanek@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 <trojanek@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 <ebotcazou@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 <ebotcazou@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 <ebotcazou@adacore.com>
+
+ * sem_aggr.adb (Resolve_Aggr_Expr): Always perform a full analysis
+ of the expression in SPARK mode.
+
+2024-12-13 Ronan Desplanques <desplanques@adacore.com>
+
+ * doc/gnat_rm/gnat_language_extensions.rst: Fix typo.
+ * gnat_rm.texi: Regenerate.
+ * gnat_ugn.texi: Regenerate.
+
+2024-12-13 Eric Botcazou <ebotcazou@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 <desplanques@adacore.com>
+
+ * doc/gnat_rm/standard_library_routines.rst: Fix documentation.
+ * gnat_rm.texi: Regenerate.
+ * gnat_ugn.texi: Regenerate.
+
+2024-12-13 Ronan Desplanques <desplanques@adacore.com>
+
+ * gnat2.gpr: Add library units to coverage exclusion list.
+
+2024-12-13 Eric Botcazou <ebotcazou@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 <ebotcazou@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 <ebotcazou@adacore.com>
+
+ * libgnat/s-imager.adb (Maxscaling): Change to Natural constant and
+ add Maxdigs to value.
+
2024-12-12 Eric Botcazou <ebotcazou@adacore.com>
PR ada/117996
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 9a00a19..3597b5f 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2024-12-13 Tobias Burnus <tburnus@baylibre.com>
+
+ * parser.cc (cp_parser_omp_construct, cp_parser_pragma): Reject
+ OpenMP expressions in constexpr functions.
+
2024-12-12 Tobias Burnus <tburnus@baylibre.com>
* parser.cc (OMP_DISPATCH_CLAUSE_MASK): Add has_device_addr clause.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 6d08c99..1020a8c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,76 @@
+2024-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/117095
+ * gcc.c-torture/execute/pr117095.c: New test.
+
+2024-12-13 Christophe Lyon <christophe.lyon@linaro.org>
+ Jakub Jelinek <jakub@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.lyon@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.lyon@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 <tburnus@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 <jakub@redhat.com>
+
+ PR target/116979
+ * gcc.target/i386/pr116979.c: New test.
+
+2024-12-13 Robin Dapp <rdapp@ventanamicro.com>
+
+ * gcc.target/riscv/rvv/autovec/pr112599-2.c: Adjust test
+ expectation.
+
+2024-12-13 Robin Dapp <rdapp@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 <rdapp@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 <rdapp@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 <rdapp@ventanamicro.com>
+
+ PR target/117353
+ PR target/117878
+ * gcc.target/riscv/rvv/autovec/pr117353.c: New test.
+
+2024-12-13 Jakub Jelinek <jakub@redhat.com>
+
+ * c-c++-common/cpp/embed-1.c: Use #error rather than #errror.
+
+2024-12-13 Pan Li <pan2.li@intel.com>
+
+ PR target/117990
+ * gcc.target/riscv/rvv/base/pr117990-run-1.c: New test.
+
2024-12-12 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/115127
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 4eb9124..fa4fae4 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,38 @@
+2024-12-13 Patrick Palka <ppalka@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 <jwakely@redhat.com>
+
+ * include/std/spanstream (basic_spanbuf::seekoff): Return an
+ error for invalid seekdir values.
+
+2024-12-13 Jonathan Wakely <jwakely@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 <jwakely@redhat.com>
+
+ * include/bits/regex.tcc: Fix -Wsign-compare warning.
+
+2024-12-13 Jonathan Wakely <jwakely@redhat.com>
+
+ * include/pstl/parallel_backend_tbb.h (__merge_func): Fix order
+ of mem-initializers.
+
+2024-12-13 Jonathan Wakely <jwakely@redhat.com>
+
+ * testsuite/26_numerics/random/random_device/entropy.cc: Fix
+ indentation to avoid -Wmisleading-indentation warning.
+
2024-12-12 Jonathan Wakely <jwakely@redhat.com>
* testsuite/23_containers/unordered_map/modifiers/reserve.cc: