diff -Nrcpad gcc-14-20250613/LAST_UPDATED gcc-14-20250620/LAST_UPDATED
*** gcc-14-20250613/LAST_UPDATED	Fri Jun 13 22:33:39 2025
--- gcc-14-20250620/LAST_UPDATED	Fri Jun 20 22:33:10 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision ddf8b0e06f27667b689dbd970d6c4ab0f088d671
--- 1 ----
! Obtained from git: releases/gcc-14 revision 638e90e5e8000b6b6b320b02229310c63c441b9f
diff -Nrcpad gcc-14-20250613/MD5SUMS gcc-14-20250620/MD5SUMS
*** gcc-14-20250613/MD5SUMS	Fri Jun 13 22:33:44 2025
--- gcc-14-20250620/MD5SUMS	Fri Jun 20 22:33:14 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20250613.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20250620.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
*************** fc9280b02bc68e4fb1ef8d51ccc25061  Change
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 37b2c58c57fa6d50ee6c910b9386aa86  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 7c0b6bd66824f91fc311cadc4d76092c  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** bc7394806417778d77541ba1ec0e4a70  gcc/BA
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b13febfa650110b36abe8a62bc9cffd6  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 505,511 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! b6a070b8d726a08724c331da1ab8997d  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 541,547 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 6629f7a02455d66b48faeb4a1d949fb0  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 541,547 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 9a858dc7f623465d9424366d98e205bc  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ad6e5a1af15939d1bb32f846f3eae833  gcc/dd
*** 5730,5736 ****
  70f86027c9e6dfe454e07b25a3f096ad  gcc/df-problems.cc
  6c79a717822b0e865b1d98d9c6f60af9  gcc/df-scan.cc
  e2e02f995d0e8f5573556099f90400eb  gcc/df.h
! 22e6e87c0306a9bbb45eb3924abd96bb  gcc/dfp.cc
  6639e6fa393d4d695230c8249f7f9cdb  gcc/dfp.h
  8c7157e2630f68b08b1016a55fbf28a6  gcc/diagnostic-client-data-hooks.h
  1b2c0bddc4abec6876ffe0c377add384  gcc/diagnostic-color.cc
--- 5730,5736 ----
  70f86027c9e6dfe454e07b25a3f096ad  gcc/df-problems.cc
  6c79a717822b0e865b1d98d9c6f60af9  gcc/df-scan.cc
  e2e02f995d0e8f5573556099f90400eb  gcc/df.h
! 34beb41c88a9abb54f18efe552f239c7  gcc/dfp.cc
  6639e6fa393d4d695230c8249f7f9cdb  gcc/dfp.h
  8c7157e2630f68b08b1016a55fbf28a6  gcc/diagnostic-client-data-hooks.h
  1b2c0bddc4abec6876ffe0c377add384  gcc/diagnostic-color.cc
*************** d62f21136aedb5de39f00da2ce438022  gcc/re
*** 7573,7579 ****
  ab6d7ad46c79c6922e06b47e127ac0e3  gcc/read-rtl-function.cc
  05769e0c1dad9db0ecf442e1a710384e  gcc/read-rtl-function.h
  d0e0240ab5898db8d64694626b7a8a98  gcc/read-rtl.cc
! aad316fa793c13d0740906af94c120a6  gcc/real.cc
  9d2922bb55531074a578f60e3963a796  gcc/real.h
  411b413e1c87bce6c78f6243d9e662b9  gcc/realmpfr.cc
  2b4c19944566bf27cd500fc1e804e8c1  gcc/realmpfr.h
--- 7573,7579 ----
  ab6d7ad46c79c6922e06b47e127ac0e3  gcc/read-rtl-function.cc
  05769e0c1dad9db0ecf442e1a710384e  gcc/read-rtl-function.h
  d0e0240ab5898db8d64694626b7a8a98  gcc/read-rtl.cc
! f10bbd315e3f7d5cf8f33c6e10277944  gcc/real.cc
  9d2922bb55531074a578f60e3963a796  gcc/real.h
  411b413e1c87bce6c78f6243d9e662b9  gcc/realmpfr.cc
  2b4c19944566bf27cd500fc1e804e8c1  gcc/realmpfr.h
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8060,8066 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 57d09684572534ad019e64989d07f211  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8060,8066 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 6983f2d39f1eae8171c754151dca9d79  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** a774f9ba94df372c6d30a93f182668b8  gcc/te
*** 30526,30531 ****
--- 30526,30532 ----
  917d9d7e1f7b3dec4bc3be8a0e121df9  gcc/testsuite/g++.dg/vect/pr112961.cc
  856046a2a1b7cbd5bfc1768e434b4a1d  gcc/testsuite/g++.dg/vect/pr114464.cc
  53f2f1665d0bd22cbc1735b16ee8dc34  gcc/testsuite/g++.dg/vect/pr115278.cc
+ 1e03af311dcaa23b477b4a5718d84d03  gcc/testsuite/g++.dg/vect/pr116674.cc
  02ab0e7dea4c30ddeaecb971c0b8241e  gcc/testsuite/g++.dg/vect/pr19951.cc
  e7c5a636a280962b70166d1494223f9c  gcc/testsuite/g++.dg/vect/pr21218.cc
  9a0a6f56bdb2cc697abc78c901418a19  gcc/testsuite/g++.dg/vect/pr21734_1.cc
*************** c468bc46d49a90772b63f81541d1cdf0  gcc/te
*** 43386,43391 ****
--- 43387,43393 ----
  707a475740543f28e7d4a1a1c6dd5e2a  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
  e9e3452e14dfbc6213d63bbc19163128  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
  0d635b8ca4b67cf7e028abe96d7d8040  gcc/testsuite/gcc.dg/dfp/bitint-1.c
+ 143efb0e67af1d841185aad9485eab11  gcc/testsuite/gcc.dg/dfp/bitint-10.c
  414a321d64714fe3be448102cb005e09  gcc/testsuite/gcc.dg/dfp/bitint-2.c
  ad33d2cf22fb59092bf9e1c000ea0030  gcc/testsuite/gcc.dg/dfp/bitint-3.c
  0c1d838b29aab0ee3c50e46966b6c652  gcc/testsuite/gcc.dg/dfp/bitint-4.c
*************** c55b156c142f8f4672565244e7c0895f  gcc/te
*** 43393,43398 ****
--- 43395,43401 ----
  563460c01a4dd08dcda56d615b1cbd80  gcc/testsuite/gcc.dg/dfp/bitint-6.c
  b08dab0e4e62a437ff7739271c7154ba  gcc/testsuite/gcc.dg/dfp/bitint-7.c
  f892b84adc78d9841b4c69a387a90a88  gcc/testsuite/gcc.dg/dfp/bitint-8.c
+ 5aad3660822951a77e1e44e866886f80  gcc/testsuite/gcc.dg/dfp/bitint-9.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
  bbb3a4b9649cd82ff38969cb002504a5  gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
  d52de125edb1b6785a1995c8d138b9f0  gcc/testsuite/gcc.dg/dfp/builtin-snan-2.c
*************** cc8c86a30d71d6b435bb74d46a9ec3e3  gcc/te
*** 43456,43461 ****
--- 43459,43465 ----
  b6f9108cd4878577de83d43be75185ce  gcc/testsuite/gcc.dg/dfp/pr104510.c
  440b561ad1d9037d4559c7011d636b7a  gcc/testsuite/gcc.dg/dfp/pr104557.c
  82ea312c34b2d7bbfe3d7dc309a1831f  gcc/testsuite/gcc.dg/dfp/pr108068.c
+ 59bca99093471aec4689a575eb6354c1  gcc/testsuite/gcc.dg/dfp/pr120631.c
  d8629eb8e0c765b5a7daa583cb8eedad  gcc/testsuite/gcc.dg/dfp/pr31344.c
  b59fd600db434af135f39c38e21e2d74  gcc/testsuite/gcc.dg/dfp/pr37435.c
  17353eaf91a4f3959fa168324f86f6f5  gcc/testsuite/gcc.dg/dfp/pr41049.c
*************** b007b2d97ecc0ea9c1d6d6f84e9ebbeb  gcc/tr
*** 110373,110379 ****
  43f6f3fee20eb715fd451bf19e9bfd4c  gcc/tree-vect-patterns.cc
  7d8505e37be0d60874402ed24f0b78ff  gcc/tree-vect-slp-patterns.cc
  62afed2a3920f38b0d29565df04b36c8  gcc/tree-vect-slp.cc
! fdda4ebc0219dbf056f89bcd39de70d3  gcc/tree-vect-stmts.cc
  795c5280c71f566f4b3e8c7fdcc3b609  gcc/tree-vector-builder.cc
  250ce9e7ca93bb776afda377af2c190d  gcc/tree-vector-builder.h
  c5a03f7f18d4c4b5f0a74529e044ddfe  gcc/tree-vectorizer.cc
--- 110377,110383 ----
  43f6f3fee20eb715fd451bf19e9bfd4c  gcc/tree-vect-patterns.cc
  7d8505e37be0d60874402ed24f0b78ff  gcc/tree-vect-slp-patterns.cc
  62afed2a3920f38b0d29565df04b36c8  gcc/tree-vect-slp.cc
! 7087e1001e8da317b21b1581d837a86c  gcc/tree-vect-stmts.cc
  795c5280c71f566f4b3e8c7fdcc3b609  gcc/tree-vector-builder.cc
  250ce9e7ca93bb776afda377af2c190d  gcc/tree-vector-builder.h
  c5a03f7f18d4c4b5f0a74529e044ddfe  gcc/tree-vectorizer.cc
diff -Nrcpad gcc-14-20250613/gcc/ChangeLog gcc-14-20250620/gcc/ChangeLog
*** gcc-14-20250613/gcc/ChangeLog	Fri Jun 13 22:32:49 2025
--- gcc-14-20250620/gcc/ChangeLog	Fri Jun 20 22:32:15 2025
***************
*** 1,3 ****
--- 1,66 ----
+ 2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120631
+ 	* dfp.cc (decimal_real_to_integer): Use result multiplication not just
+ 	when precision > 128 and dn.exponent > 19, but when precision > 64
+ 	and dn.exponent > 0.
+ 
+ 2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120631
+ 	* real.cc (decimal_from_integer): Add digits argument, if larger than
+ 	256, use XALLOCAVEC allocated buffer.
+ 	(real_from_integer): Pass val_in's precision divided by 3 to
+ 	decimal_from_integer.
+ 	* dfp.cc (decimal_real_to_integer): For precision > 128 if finite
+ 	and exponent is large, decrease exponent and multiply resulting
+ 	wide_int by powers of 10^19.
+ 
+ 2025-06-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-03-25  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR middle-end/117811
+ 	* optabs.cc (expand_binop_directly): Remove LAST as an argument,
+ 	instead record the last insn on entry.  Only delete insns if
+ 	we need to restart and restart by calling ourself, not expand_binop.
+ 	(expand_binop): Update callers to expand_binop_directly.  If it
+ 	fails to expand the operation, delete back to LAST.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* tree-ssa-math-opts.cc (pass_cse_reciprocals::execute): Call
+ 	reset_flow_sensitive_info on arg1.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120547
+ 	* real.cc (real_from_integer): Remove maxbitlen variable, use
+ 	len instead of that.  When shifting right, or in 1 if any of the
+ 	shifted away bits are non-zero.  Formatting fix.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-05-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-chrec.cc (convert_affine_scev): Use signed_type_for instead of
+ 	build_nonstandard_integer_type.
+ 
  2025-06-05  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* tree-vect-data-refs.cc (vect_can_force_dr_alignment_p): Return
diff -Nrcpad gcc-14-20250613/gcc/DATESTAMP gcc-14-20250620/gcc/DATESTAMP
*** gcc-14-20250613/gcc/DATESTAMP	Fri Jun 13 22:32:49 2025
--- gcc-14-20250620/gcc/DATESTAMP	Fri Jun 20 22:32:16 2025
***************
*** 1 ****
! 20250613
--- 1 ----
! 20250620
diff -Nrcpad gcc-14-20250613/gcc/dfp.cc gcc-14-20250620/gcc/dfp.cc
*** gcc-14-20250613/gcc/dfp.cc	Fri Jun 13 22:32:52 2025
--- gcc-14-20250620/gcc/dfp.cc	Fri Jun 20 22:32:19 2025
*************** decimal_real_to_integer (const REAL_VALU
*** 619,629 ****
--- 619,639 ----
    decNumber dn, dn2, dn3;
    REAL_VALUE_TYPE to;
    char string[256];
+   int scale = 0;
  
    decContextDefault (&set, DEC_INIT_DECIMAL128);
    set.traps = 0;
    set.round = DEC_ROUND_DOWN;
    decimal128ToNumber ((const decimal128 *) r->sig, &dn);
+   if (precision > 64 && decNumberIsFinite (&dn) && dn.exponent > 0)
+     {
+       /* libdecNumber doesn't really handle too large integers.
+ 	 So when precision is large and exponent as well, trim the
+ 	 exponent and adjust the resulting wide_int by multiplying
+ 	 it multiple times with powers of ten.  */
+       scale = dn.exponent;
+       dn.exponent = 0;
+     }
  
    decNumberToIntegralValue (&dn2, &dn, &set);
    decNumberZero (&dn3);
*************** decimal_real_to_integer (const REAL_VALU
*** 633,639 ****
       function.  */
    decNumberToString (&dn, string);
    real_from_string (&to, string);
!   return real_to_integer (&to, fail, precision);
  }
  
  /* Perform the decimal floating point operation described by CODE.
--- 643,716 ----
       function.  */
    decNumberToString (&dn, string);
    real_from_string (&to, string);
!   bool failp = false;
!   wide_int w = real_to_integer (&to, &failp, precision);
!   if (failp)
!     *fail = true;
!   if (scale && !failp)
!     {
!       bool isneg = wi::neg_p (w);
!       if (isneg)
! 	w = -w;
!       enum wi::overflow_type ovf = wi::OVF_NONE;
!       unsigned HOST_WIDE_INT pow10s[] = {
! 	HOST_WIDE_INT_UC (10),
! 	HOST_WIDE_INT_UC (100),
! 	HOST_WIDE_INT_UC (1000),
! 	HOST_WIDE_INT_UC (10000),
! 	HOST_WIDE_INT_UC (100000),
! 	HOST_WIDE_INT_UC (1000000),
! 	HOST_WIDE_INT_UC (10000000),
! 	HOST_WIDE_INT_UC (100000000),
! 	HOST_WIDE_INT_UC (1000000000),
! 	HOST_WIDE_INT_UC (10000000000),
! 	HOST_WIDE_INT_UC (100000000000),
! 	HOST_WIDE_INT_UC (1000000000000),
! 	HOST_WIDE_INT_UC (10000000000000),
! 	HOST_WIDE_INT_UC (100000000000000),
! 	HOST_WIDE_INT_UC (1000000000000000),
! 	HOST_WIDE_INT_UC (10000000000000000),
! 	HOST_WIDE_INT_UC (100000000000000000),
! 	HOST_WIDE_INT_UC (1000000000000000000),
! 	HOST_WIDE_INT_UC (10000000000000000000),
!       };
!       int s = scale % 19;
!       if (s)
! 	{
! 	  wide_int wm = wi::uhwi (pow10s[s - 1], w.get_precision ());
! 	  w = wi::umul (w, wm, &ovf);
! 	  if (ovf)
! 	    scale = 0;
! 	}
!       scale /= 19;
!       wide_int wm = wi::uhwi (pow10s[18], w.get_precision ());
!       while (scale)
! 	{
! 	  if (scale & 1)
! 	    {
! 	      w = wi::umul (w, wm, &ovf);
! 	      if (ovf)
! 		break;
! 	    }
! 	  scale >>= 1;
! 	  if (!scale)
! 	    break;
! 	  wm = wi::umul (wm, wm, &ovf);
! 	  if (ovf)
! 	    break;
! 	}
!       if (ovf)
! 	{
! 	  *fail = true;
! 	  if (isneg)
! 	    return wi::set_bit_in_zero (precision - 1, precision);
! 	  else
! 	    return ~wi::set_bit_in_zero (precision - 1, precision);
! 	}
!       if (isneg)
! 	w = -w;
!     }
!   return w;
  }
  
  /* Perform the decimal floating point operation described by CODE.
diff -Nrcpad gcc-14-20250613/gcc/real.cc gcc-14-20250620/gcc/real.cc
*** gcc-14-20250613/gcc/real.cc	Fri Jun 13 22:32:52 2025
--- gcc-14-20250620/gcc/real.cc	Fri Jun 20 22:32:19 2025
*************** static int do_compare (const REAL_VALUE_
*** 101,107 ****
  static void do_fix_trunc (REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
  
  static unsigned long rtd_divmod (REAL_VALUE_TYPE *, REAL_VALUE_TYPE *);
! static void decimal_from_integer (REAL_VALUE_TYPE *);
  static void decimal_integer_string (char *, const REAL_VALUE_TYPE *,
  				    size_t);
  
--- 101,107 ----
  static void do_fix_trunc (REAL_VALUE_TYPE *, const REAL_VALUE_TYPE *);
  
  static unsigned long rtd_divmod (REAL_VALUE_TYPE *, REAL_VALUE_TYPE *);
! static void decimal_from_integer (REAL_VALUE_TYPE *, int);
  static void decimal_integer_string (char *, const REAL_VALUE_TYPE *,
  				    size_t);
  
*************** real_from_integer (REAL_VALUE_TYPE *r, f
*** 2309,2315 ****
      }
  
    if (fmt.decimal_p ())
!     decimal_from_integer (r);
    if (fmt)
      real_convert (r, fmt, r);
  }
--- 2309,2317 ----
      }
  
    if (fmt.decimal_p ())
!     /* We need at most one decimal digits for each 3 bits of input
!        precision.  */
!     decimal_from_integer (r, val_in.get_precision () / 3);
    if (fmt)
      real_convert (r, fmt, r);
  }
*************** decimal_integer_string (char *str, const
*** 2364,2375 ****
  /* Convert a real with an integral value to decimal float.  */
  
  static void
! decimal_from_integer (REAL_VALUE_TYPE *r)
  {
    char str[256];
  
!   decimal_integer_string (str, r, sizeof (str) - 1);
!   decimal_real_from_string (r, str);
  }
  
  /* Returns 10**2**N.  */
--- 2366,2386 ----
  /* Convert a real with an integral value to decimal float.  */
  
  static void
! decimal_from_integer (REAL_VALUE_TYPE *r, int digits)
  {
    char str[256];
  
!   if (digits <= 256)
!     {
!       decimal_integer_string (str, r, sizeof (str) - 1);
!       decimal_real_from_string (r, str);
!     }
!   else
!     {
!       char *s = XALLOCAVEC (char, digits);
!       decimal_integer_string (s, r, digits - 1);
!       decimal_real_from_string (r, s);
!     }
  }
  
  /* Returns 10**2**N.  */
diff -Nrcpad gcc-14-20250613/gcc/testsuite/ChangeLog gcc-14-20250620/gcc/testsuite/ChangeLog
*** gcc-14-20250613/gcc/testsuite/ChangeLog	Fri Jun 13 22:32:53 2025
--- gcc-14-20250620/gcc/testsuite/ChangeLog	Fri Jun 20 22:32:20 2025
***************
*** 1,3 ****
--- 1,53 ----
+ 2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120631
+ 	* gcc.dg/dfp/bitint-10.c: New test.
+ 	* gcc.dg/dfp/pr120631.c: New test.
+ 
+ 2025-06-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120631
+ 	* gcc.dg/dfp/bitint-9.c: New test.
+ 
+ 2025-06-13  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-06-12  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR middle-end/117811
+ 	PR testsuite/52641
+ 	* gcc.dg/torture/pr117811.c: Fix for int < 32 bit.
+ 
+ 2025-06-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2025-03-25  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR middle-end/117811
+ 	* gcc.dg/torture/pr117811.c: New test.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/120638
+ 	* gcc.dg/pr120638.c: New test.
+ 
+ 2025-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-06-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/120547
+ 	* gcc.dg/bitint-123.c: New test.
+ 
  2025-06-05  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gnat.dg/specs/opt7.ads: New test.
diff -Nrcpad gcc-14-20250613/gcc/testsuite/g++.dg/vect/pr116674.cc gcc-14-20250620/gcc/testsuite/g++.dg/vect/pr116674.cc
*** gcc-14-20250613/gcc/testsuite/g++.dg/vect/pr116674.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20250620/gcc/testsuite/g++.dg/vect/pr116674.cc	Fri Jun 20 22:32:23 2025
***************
*** 0 ****
--- 1,85 ----
+ // { dg-do compile }
+ // { dg-require-effective-target c++11 }
+ // { dg-additional-options "-Ofast" }
+ // { dg-additional-options "-march=x86-64-v3" { target { x86_64-*-* i?86-*-* } } }
+ 
+ namespace std {
+     typedef int a;
+     template <typename> struct b;
+     template <typename> class aa {};
+     template <typename c> c d(c e, c) { return e; }
+     template <typename c> struct b<aa<c>> {
+ 	using f = c;
+ 	using g = c *;
+ 	template <typename h> using j = aa<h>;
+     };
+ } // namespace std
+ namespace l {
+     template <typename ab> struct m : std::b<ab> {
+ 	typedef std::b<ab> n;
+ 	typedef typename n::f &q;
+ 	template <typename c> struct ac { typedef typename n::j<c> ad; };
+     };
+ } // namespace l
+ namespace std {
+     template <typename c, typename ab> struct o {
+ 	typedef typename l::m<ab>::ac<c>::ad ae;
+ 	typedef typename l::m<ae>::g g;
+ 	struct p {
+ 	    g af;
+ 	};
+ 	struct ag : p {
+ 	    ag(ae) {}
+ 	};
+ 	typedef ab u;
+ 	o(a, u e) : ah(e) {}
+ 	ag ah;
+     };
+     template <typename c, typename ab = aa<c>> class r : o<c, ab> {
+ 	typedef o<c, ab> s;
+ 	typedef typename s::ae ae;
+ 	typedef l::m<ae> w;
+ 
+     public:
+ 	c f;
+ 	typedef typename w::q q;
+ 	typedef a t;
+ 	typedef ab u;
+ 	r(t x, u e = u()) : s(ai(x, e), e) {}
+ 	q operator[](t x) { return *(this->ah.af + x); }
+ 	t ai(t x, u) { return x; }
+     };
+     extern "C" __attribute__((__simd__)) double exp(double);
+ } // namespace std
+ using namespace std;
+ int ak;
+ double v, y;
+ void am(double, int an, double, double, double, double, double, double, double,
+ 	double, double, double, int, double, double, double, double,
+ 	r<double> ap, double, double, double, double, double, double, double,
+ 	double, r<double> ar, r<double> as, double, double, r<double> at,
+ 	r<double> au, r<double> av, double, double) {
+     double ba;
+     for (int k;;)
+       for (int i; i < an; ++i) {
+ 	  y = i;
+ 	  v = d(y, 25.0);
+ 	  ba = exp(v);
+ 	  ar[i * (ak + 1)] = ba;
+ 	  as[i * (ak + 1)] = ar[i * (ak + 1)];
+ 	  if (k && ap[k]) {
+ 	      at[i * (ak + 1)] = av[i * (ak + 1)] = as[i * (ak + 1)];
+ 	      au[i * (ak + 1)] = ar[i * (ak + 1)];
+ 	  } else {
+ 	      au[i * (ak + 1)] = ba;
+ 	      at[i * (ak + 1)] = av[i * (ak + 1)] = k;
+ 	  }
+       }
+ }
+ void b(int bc) {
+     double bd, be, bf, bg, bh, ao, ap, bn, bo, bp, bq, br, bs, bt, bu, bv, bw, bx,
+     by, aq, ar, as, bz, ca, at, au, av, cb, aw;
+     int bi;
+     am(bh, bc, bi, bi, bi, bi, bv, bw, bx, by, bu, bt, bi, ao, bn, bo, bp, ap, bq,
+        br, bs, bd, be, bf, bg, aq, ar, as, bz, ca, at, au, av, cb, aw);
+ }
diff -Nrcpad gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/bitint-10.c gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/bitint-10.c
*** gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/bitint-10.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/bitint-10.c	Fri Jun 20 22:32:26 2025
***************
*** 0 ****
--- 1,49 ----
+ /* PR middle-end/120631 */
+ /* { dg-do run { target bitint } } */
+ /* { dg-options "-O2" } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 128
+ _Decimal128 a = 123456789135792468012345678900000000000.0dl;
+ _BitInt(128) b = 123456789135792468012345678900000000000wb;
+ _Decimal64 c = 12345678913579000000000000000000000000.0dd;
+ _BitInt(127) d = 12345678913579000000000000000000000000wb;
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 256
+ _Decimal128 m = 1234567891357924680123456789000000000000000000000000000000000000000000000000.0dl;
+ _BitInt(256) n = 1234567891357924680123456789000000000000000000000000000000000000000000000000wb;
+ _Decimal64 o = 1234567891357900000000000000000000000000000000000000000000000000000000000000.0dd;
+ _BitInt(255) p = 1234567891357900000000000000000000000000000000000000000000000000000000000000wb;
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 128
+   if (a != b || (_BitInt(128)) a != b || c != d || (_BitInt(127)) c != d)
+     __builtin_abort ();
+   _Decimal128 e = 123456789135792468012345678900000000000.0dl;
+   _BitInt(128) f = 123456789135792468012345678900000000000wb;
+   _Decimal128 g = 123456789135792468012345678900000000000wb;
+   _BitInt(128) h = 123456789135792468012345678900000000000.0dl;
+   _Decimal64 i = 12345678913579000000000000000000000000.0dd;
+   _BitInt(128) j = 12345678913579000000000000000000000000wb;
+   _Decimal64 k = 12345678913579000000000000000000000000wb;
+   _BitInt(128) l = 12345678913579000000000000000000000000.0dd;
+   if (e != g || f != h || i != k || j != l)
+     __builtin_abort ();
+ #endif
+ #if __BITINT_MAXWIDTH__ >= 256
+   if (m != n || (_BitInt(256)) m != n || o != p || (_BitInt(255)) o != p)
+     __builtin_abort ();
+   _Decimal128 q = 1234567891357924680123456789000000000000000000000000000000000000000000000000.0dl;
+   _BitInt(256) r = 1234567891357924680123456789000000000000000000000000000000000000000000000000wb;
+   _Decimal128 s = 1234567891357924680123456789000000000000000000000000000000000000000000000000wb;
+   _BitInt(256) t = 1234567891357924680123456789000000000000000000000000000000000000000000000000.0dl;
+   _Decimal64 u = 1234567891357900000000000000000000000000000000000000000000000000000000000000.0dd;
+   _BitInt(255) v = 1234567891357900000000000000000000000000000000000000000000000000000000000000wb;
+   _Decimal64 w = 1234567891357900000000000000000000000000000000000000000000000000000000000000wb;
+   _BitInt(255) x = 1234567891357900000000000000000000000000000000000000000000000000000000000000.0dd;
+   if (q != s || r != t || u != w || v != x)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/bitint-9.c gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/bitint-9.c
*** gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/bitint-9.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/bitint-9.c	Fri Jun 20 22:32:26 2025
***************
*** 0 ****
--- 1,29 ----
+ /* PR middle-end/120631 */
+ /* { dg-do run { target bitint } } */
+ /* { dg-options "-O2" } */
+ 
+ #if __BITINT_MAXWIDTH__ >= 2048
+ _Decimal128 a =  .0dl;
+ _BitInt(2048) b =  ;
+ _Decimal64 c = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0dd;
+ _BitInt(1536) d = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb;
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __BITINT_MAXWIDTH__ >= 2048
+   if (a != b || (_BitInt(2048)) a != b || c != d || (_BitInt(1536)) c != d)
+     __builtin_abort ();
+   _Decimal128 e =  .0dl;
+   _BitInt(2048) f =  ;
+   _Decimal128 g =  ;
+   _BitInt(2048) h =  .0dl;
+   _Decimal64 i = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0dd;
+   _BitInt(1536) j = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb;
+   _Decimal64 k = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000wb;
+   _BitInt(1536) l = 123456789135790000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0dd;
+   if (e != g || f != h || i != k || j != l)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/pr120631.c gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/pr120631.c
*** gcc-14-20250613/gcc/testsuite/gcc.dg/dfp/pr120631.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20250620/gcc/testsuite/gcc.dg/dfp/pr120631.c	Fri Jun 20 22:32:26 2025
***************
*** 0 ****
--- 1,25 ----
+ /* PR middle-end/120631 */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ 
+ _Decimal64 a = 1234567891357900000.0dd;
+ long long b = 1234567891357900000LL;
+ _Decimal32 c = 1234567000000000000.0df;
+ long long d = 1234567000000000000LL;
+ 
+ int
+ main ()
+ {
+   if (a != b || (long long) a != b || c != d || (long long) c != d)
+     __builtin_abort ();
+   _Decimal64 e = 1234567891357900000.0dd;
+   long long f = 1234567891357900000LL;
+   _Decimal64 g = 1234567891357900000LL;
+   long long h = 1234567891357900000.0dd;
+   _Decimal32 i = 1234567000000000000.0df;
+   long long j = 1234567000000000000LL;
+   _Decimal32 k = 1234567000000000000LL;
+   long long l = 1234567000000000000.0df;
+   if (e != g || f != h || i != k || j != l)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20250613/gcc/tree-vect-stmts.cc gcc-14-20250620/gcc/tree-vect-stmts.cc
*** gcc-14-20250613/gcc/tree-vect-stmts.cc	Fri Jun 13 22:33:20 2025
--- gcc-14-20250620/gcc/tree-vect-stmts.cc	Fri Jun 20 22:32:36 2025
*************** vectorizable_simd_clone_call (vec_info *
*** 3945,3950 ****
--- 3945,3952 ----
  
    vec<tree>& simd_clone_info = (slp_node ? SLP_TREE_SIMD_CLONE_INFO (slp_node)
  				: STMT_VINFO_SIMD_CLONE_INFO (stmt_info));
+   if (!vec_stmt)
+     simd_clone_info.truncate (0);
    arginfo.reserve (nargs, true);
    auto_vec<slp_tree> slp_op;
    slp_op.safe_grow_cleared (nargs);
*************** vectorizable_simd_clone_call (vec_info *
*** 3993,4002 ****
  
        /* For linear arguments, the analyze phase should have saved
  	 the base and step in {STMT_VINFO,SLP_TREE}_SIMD_CLONE_INFO.  */
!       if (i * 3 + 4 <= simd_clone_info.length ()
  	  && simd_clone_info[i * 3 + 2])
  	{
- 	  gcc_assert (vec_stmt);
  	  thisarginfo.linear_step = tree_to_shwi (simd_clone_info[i * 3 + 2]);
  	  thisarginfo.op = simd_clone_info[i * 3 + 1];
  	  thisarginfo.simd_lane_linear
--- 3995,4004 ----
  
        /* For linear arguments, the analyze phase should have saved
  	 the base and step in {STMT_VINFO,SLP_TREE}_SIMD_CLONE_INFO.  */
!       if (vec_stmt
! 	  && i * 3 + 4 <= simd_clone_info.length ()
  	  && simd_clone_info[i * 3 + 2])
  	{
  	  thisarginfo.linear_step = tree_to_shwi (simd_clone_info[i * 3 + 2]);
  	  thisarginfo.op = simd_clone_info[i * 3 + 1];
  	  thisarginfo.simd_lane_linear
*************** vectorizable_simd_clone_call (vec_info *
*** 4051,4057 ****
    unsigned group_size = slp_node ? SLP_TREE_LANES (slp_node) : 1;
    unsigned int badness = 0;
    struct cgraph_node *bestn = NULL;
!   if (simd_clone_info.exists ())
      bestn = cgraph_node::get (simd_clone_info[0]);
    else
      for (struct cgraph_node *n = node->simd_clones; n != NULL;
--- 4053,4059 ----
    unsigned group_size = slp_node ? SLP_TREE_LANES (slp_node) : 1;
    unsigned int badness = 0;
    struct cgraph_node *bestn = NULL;
!   if (vec_stmt)
      bestn = cgraph_node::get (simd_clone_info[0]);
    else
      for (struct cgraph_node *n = node->simd_clones; n != NULL;
