diff -Nrcpad gcc-14-20251003/LAST_UPDATED gcc-14-20251010/LAST_UPDATED
*** gcc-14-20251003/LAST_UPDATED	Fri Oct  3 22:34:07 2025
--- gcc-14-20251010/LAST_UPDATED	Fri Oct 10 22:33:50 2025
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision a6d8b6104123197f3c519e9810e32a7d5a26119a
--- 1 ----
! Obtained from git: releases/gcc-14 revision cf0cf4712fd1c3ec611278089f9f1b02c61b43d9
diff -Nrcpad gcc-14-20251003/MD5SUMS gcc-14-20251010/MD5SUMS
*** gcc-14-20251003/MD5SUMS	Fri Oct  3 22:34:25 2025
--- gcc-14-20251010/MD5SUMS	Fri Oct 10 22:33:56 2025
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20251003.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-20251010.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
! 134f93e11191d066333108b104d6058e  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 9e4ff5db2d9c7e0f3a2dc0e2106da6b0  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
! ab0499044203ecdc7cacbb05f43925b1  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
! a24c7d9aedaa7d7799f6f62054c4a45e  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
! b366e9d7c37faca2364ee9051fecdb1b  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
! 3bd14ded7b4d5333f90c7cbb451ec6e9  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ec6799501b2eb2923d5de6a66169dbd2  gcc/ON
*** 553,559 ****
  4ff8b6b00464fd6c37969f80145dca46  gcc/acinclude.m4
  496cb89e62ed3dbfd1af1db0975a4c04  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 5fcc45eb0d27a67d3f7b1e7f086a4d2a  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 553,559 ----
  4ff8b6b00464fd6c37969f80145dca46  gcc/acinclude.m4
  496cb89e62ed3dbfd1af1db0975a4c04  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! fb2346d7c3beb7b5304b7371eb69c0cc  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** bb1ac51d891c2c88e66b325ec4ba37b6  gcc/ad
*** 728,734 ****
  c36c56653344092753d38d009f78b7d3  gcc/ada/exp_aggr.ads
  505062d76424b26ea35495f992e978ec  gcc/ada/exp_atag.adb
  f9d94a939aaa986fb1957454afcc5783  gcc/ada/exp_atag.ads
! a1e4480e82cd509ee409e3cb2a1b283d  gcc/ada/exp_attr.adb
  1f0d00e4f924cd79fcb70a729dcad92f  gcc/ada/exp_attr.ads
  33fd3e67f2d31ec03f6c604e5824bdfd  gcc/ada/exp_cg.adb
  ac19bd8c659aa1e17cfa0e35d7b09495  gcc/ada/exp_cg.ads
--- 728,734 ----
  c36c56653344092753d38d009f78b7d3  gcc/ada/exp_aggr.ads
  505062d76424b26ea35495f992e978ec  gcc/ada/exp_atag.adb
  f9d94a939aaa986fb1957454afcc5783  gcc/ada/exp_atag.ads
! ade95a70582e67a48e9a828b19fad287  gcc/ada/exp_attr.adb
  1f0d00e4f924cd79fcb70a729dcad92f  gcc/ada/exp_attr.ads
  33fd3e67f2d31ec03f6c604e5824bdfd  gcc/ada/exp_cg.adb
  ac19bd8c659aa1e17cfa0e35d7b09495  gcc/ada/exp_cg.ads
*************** c57f11c8377690ba9023949f07b9355d  gcc/co
*** 3655,3661 ****
  e463aeaf15d36b313935a1486e19fe50  gcc/config/avr/avr-passes.def
  b812676480e10c55ca64c09cae522a6a  gcc/config/avr/avr-protos.h
  f6bd61a4d455db58f9425812a337b890  gcc/config/avr/avr-stdint.h
! 7c55f9227a7765e262484b93f6858d24  gcc/config/avr/avr.cc
  7cc3c5e2451b04c38f10f0bd06790ba0  gcc/config/avr/avr.h
  90199e05652dd3c55b8064a234c53d28  gcc/config/avr/avr.md
  d966b0c41bfba722c0e38c55d7256e8b  gcc/config/avr/avr.opt
--- 3655,3661 ----
  e463aeaf15d36b313935a1486e19fe50  gcc/config/avr/avr-passes.def
  b812676480e10c55ca64c09cae522a6a  gcc/config/avr/avr-protos.h
  f6bd61a4d455db58f9425812a337b890  gcc/config/avr/avr-stdint.h
! c8063963aee784a28028e6e23db0757d  gcc/config/avr/avr.cc
  7cc3c5e2451b04c38f10f0bd06790ba0  gcc/config/avr/avr.h
  90199e05652dd3c55b8064a234c53d28  gcc/config/avr/avr.md
  d966b0c41bfba722c0e38c55d7256e8b  gcc/config/avr/avr.opt
*************** d36a2aabdf8da39363d9be0efef739b0  gcc/co
*** 5362,5368 ****
  11daa3f7f65177eb32e2dad6fd437637  gcc/coroutine-passes.cc
  f1ae4baa11bd5b6dd111907d100e7c0c  gcc/coverage.cc
  bf1a3b3570d1b69e07f60f5150f38a93  gcc/coverage.h
! 57050cf24740f2b24cc12a938678f2f8  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 5362,5368 ----
  11daa3f7f65177eb32e2dad6fd437637  gcc/coroutine-passes.cc
  f1ae4baa11bd5b6dd111907d100e7c0c  gcc/coverage.cc
  bf1a3b3570d1b69e07f60f5150f38a93  gcc/coverage.h
! ff5787fd81f8e41bd09b55daea1c9c60  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** e5de0a6c0e25db99122b38cfbd158f92  gcc/cp
*** 5447,5453 ****
  b4ea7976f776ee37fce22b16756ad0e0  gcc/cp/optimize.cc
  3005c54da5bb91ee03256ad352be3db5  gcc/cp/parser.cc
  64953966b085a9e770be93c5d1bdca4e  gcc/cp/parser.h
! 5c23dd92167e6b23deaf502b2e9c2639  gcc/cp/pt.cc
  c59b967f38f4705696e11724814e2a06  gcc/cp/ptree.cc
  5e3e9c87ee323734a11e7081aaa64fa5  gcc/cp/rtti.cc
  7764edeba26dbb6b15962e6395cba9d2  gcc/cp/search.cc
--- 5447,5453 ----
  b4ea7976f776ee37fce22b16756ad0e0  gcc/cp/optimize.cc
  3005c54da5bb91ee03256ad352be3db5  gcc/cp/parser.cc
  64953966b085a9e770be93c5d1bdca4e  gcc/cp/parser.h
! 0d881462a928e82d7dd979b5f3a3fb53  gcc/cp/pt.cc
  c59b967f38f4705696e11724814e2a06  gcc/cp/ptree.cc
  5e3e9c87ee323734a11e7081aaa64fa5  gcc/cp/rtti.cc
  7764edeba26dbb6b15962e6395cba9d2  gcc/cp/search.cc
*************** dce7dac7e905ada28c6563d930b531eb  gcc/fo
*** 5873,5879 ****
  090850db6c719557b18e35fafc041a4c  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! 1214b43630828e38490c297a7dbe73a4  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5873,5879 ----
  090850db6c719557b18e35fafc041a4c  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! ba4639d958c3d1fd0c011c6d7a985737  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** c420f80da3e0e794311a9b90c49abce5  gcc/fo
*** 5965,5971 ****
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
  a13796bc19ee899957fa78d9652f5ff5  gcc/fortran/trans-decl.cc
  21a44c257ad7cf25a62a230c8e619afb  gcc/fortran/trans-expr.cc
! 7376d3754fcb67bb3d440eedfce78b31  gcc/fortran/trans-intrinsic.cc
  cd62c1c77bf122047b8b1222354a9b5b  gcc/fortran/trans-io.cc
  be2abe61b914863c8dce5e37cb7f1491  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
--- 5965,5971 ----
  5644e20cd4aa0324875834a377cf89a4  gcc/fortran/trans-const.h
  a13796bc19ee899957fa78d9652f5ff5  gcc/fortran/trans-decl.cc
  21a44c257ad7cf25a62a230c8e619afb  gcc/fortran/trans-expr.cc
! 50146a04d803fafbc56c31ef04c375c3  gcc/fortran/trans-intrinsic.cc
  cd62c1c77bf122047b8b1222354a9b5b  gcc/fortran/trans-io.cc
  be2abe61b914863c8dce5e37cb7f1491  gcc/fortran/trans-openmp.cc
  0a23775591d7d3e4fdb603d7bd9febb1  gcc/fortran/trans-stmt.cc
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8061,8067 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 46de3e21ad8e2abd4c3f62e3de5fc866  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8061,8067 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 00782cbd977f390c3e1870645e1bce3c  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** b48de652a269ba0411d9c971e6b06869  gcc/te
*** 19863,19868 ****
--- 19863,19869 ----
  966bf7435554a7a150aa0fb09697b04c  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder11.C
  f57d40e8c8a062ab42228a604dc8b336  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C
  3d20f95d326918d497b3b309b9eda0d9  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder13.C
+ 10165b900c5003d3691cd5cf5fae858b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C
  9a1776b1d9b3c080e847b78507e8c1c6  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
  d4ce4a5306e35eff2b78390b50d6c95b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder3.C
  e428d578c8a0c5a61ab85eddccb24071  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder4.C
*************** a1131491d67160098e775860b91e3021  gcc/te
*** 68467,68474 ****
--- 68468,68479 ----
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
  c80b20e750ebef437da2bce443dea236  gcc/testsuite/gcc.target/avr/attribute-io.h
  ccbfc33e8dfbece89b515e3a31919e02  gcc/testsuite/gcc.target/avr/avr.exp
+ 5c31309787a1c63d40dce18c252c37a1  gcc/testsuite/gcc.target/avr/cmpdi-1.c
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
+ 14ec7b85b2ab003574d858aa229c3112  gcc/testsuite/gcc.target/avr/dtofx.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
+ 6c83d167de5a523cffe112594bd1cd56  gcc/testsuite/gcc.target/avr/fminfmax-1.c
+ f99b6b374e8532e344331366048bd0b9  gcc/testsuite/gcc.target/avr/fxtod.c
  01c5f01bf5db7494c293de76bfa7ad3f  gcc/testsuite/gcc.target/avr/isr-test.h
  d258157b4a9f2a166772579aaadca0be  gcc/testsuite/gcc.target/avr/lra-cpymem_qi.c
  c1c7be0795b89f4d537c95e15050d230  gcc/testsuite/gcc.target/avr/lra-elim.c
*************** e6cd0765dea3fde235455229d90597c7  gcc/te
*** 68491,68496 ****
--- 68496,68503 ----
  539ce3aab7106b8babfeb6e60c71880b  gcc/testsuite/gcc.target/avr/pr114975-popcount.c
  33de71bb615aba171af02ad7f1fc8faa  gcc/testsuite/gcc.target/avr/pr114981-powif.c
  b336e6f4d1af14f79b0e9e2451c8046e  gcc/testsuite/gcc.target/avr/pr114981-powil.c
+ c8dee67a2567af17cd08c345a4ef3aea  gcc/testsuite/gcc.target/avr/pr122220.c
+ abbae4b0f7390ccdb0c5394f5172173a  gcc/testsuite/gcc.target/avr/pr122222-sitod.c
  8d351de18b6ca99f76c43eaa14213d53  gcc/testsuite/gcc.target/avr/pr46779-1.c
  2887bd8c777e4696616590f0d60653b6  gcc/testsuite/gcc.target/avr/pr46779-2.c
  d92831f37e30237d1dc568f585e4c2c9  gcc/testsuite/gcc.target/avr/pr50739.c
*************** cbd676b663043514bbc26a8a6c3b7a9d  gcc/te
*** 68528,68533 ****
--- 68535,68541 ----
  57cf0cd622a50ae70434f57249214c0a  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
  06a40c47b5a1c6fd69f69a33ab43a52e  gcc/testsuite/gcc.target/avr/progmem.h
+ d0517d381fce8d1c143604ebcf5f58cc  gcc/testsuite/gcc.target/avr/sincos-1.c
  2b06671686db85920f5618751e2f29b6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-0.c
  74d75d6b9b2f092a0eaf81b8ffe81ced  gcc/testsuite/gcc.target/avr/torture/addr-space-1-1.c
  e1c7151f17ec114f6529f690e6145cb6  gcc/testsuite/gcc.target/avr/torture/addr-space-1-g.c
*************** c02c9b09a64e3c14adfe954730cf8f3c  gcc/te
*** 68576,68581 ****
--- 68584,68590 ----
  caa7b81fc83f2373b987ae3dec63aa32  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-3.c
  9d65901f178212417bd03274e7a0ff1d  gcc/testsuite/gcc.target/avr/torture/pr119989-memx-4.c
  51d04706ca0c4216d8d453fbe55f52ca  gcc/testsuite/gcc.target/avr/torture/pr119989.h
+ d0438290469e79373f6dd3933d324608  gcc/testsuite/gcc.target/avr/torture/pr122187.c
  0844a939ea2464d30cc8892c85b4aecc  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
*************** ad625f0340741a09e4be8d42e070139e  gcc/te
*** 100352,100357 ****
--- 100361,100367 ----
  7f1199fe5fa90085dcbb4f81cbcf7062  gcc/testsuite/gfortran.dg/transfer_class_2.f90
  4003da30901edcfc6adf19924dc746a2  gcc/testsuite/gfortran.dg/transfer_class_3.f90
  d9a1040ed4fe93e5d91936d8b26af4cc  gcc/testsuite/gfortran.dg/transfer_class_4.f90
+ d265a0bb0e3067107f69caac520518ea  gcc/testsuite/gfortran.dg/transfer_class_5.f90
  dc67674921059cc6c14a48ba9f6e8515  gcc/testsuite/gfortran.dg/transfer_hollerith_1.f90
  adc172acf631bf550ac06d92fba37d99  gcc/testsuite/gfortran.dg/transfer_intrinsic_1.f90
  e26ab1b7e21f778b1135b8600958bcd1  gcc/testsuite/gfortran.dg/transfer_intrinsic_2.f90
*************** d470ada2b4a8aa6d586007ab8f6e7e5f  gcc/te
*** 105116,105121 ****
--- 105126,105132 ----
  fde5d5ed0c271572ac7da0e31e22bc5c  gcc/testsuite/gnat.dg/range_check7.adb
  25b5534a4bc4502074ce6463c2f5e96b  gcc/testsuite/gnat.dg/rational_arithmetic.ads
  46cc8f530fa18a6afd30b9d241f7967e  gcc/testsuite/gnat.dg/recursive_call.adb
+ 0b27bcc5788ce003bc049b34d20d5c88  gcc/testsuite/gnat.dg/reduce2.adb
  50be8d98f4f9ac99d64926a10596a2df  gcc/testsuite/gnat.dg/ref_type.adb
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
  222b5d10f23a2e8e8a5e4d41e86e66ed  gcc/testsuite/gnat.dg/regpat1.adb
*************** c12365a0fd0bfbb153c9b75f558feba5  libgcc
*** 111439,111459 ****
  c7b2e09c1a819d37ab91db3294159732  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  b7792b93ec270f682ce38eb52297254e  libgcc/config/avr/lib2funcs.c
! 8110a879f89877ea27de80b940d01c4b  libgcc/config/avr/libf7/ChangeLog
  159c564e8ed539925b0a82879e077648  libgcc/config/avr/libf7/asm-defs.h
! 434f68c401e93814081ae499ba72ffaf  libgcc/config/avr/libf7/f7-renames.h
! f65ef9e7ada883e17a2dd60b931ad23b  libgcc/config/avr/libf7/f7-wraps.h
! c0d4a5a9b2844505ec941ff60cae008f  libgcc/config/avr/libf7/f7renames.sh
  4026813a3a56ecdf28b1fe38fc63cdec  libgcc/config/avr/libf7/f7wraps.sh
  b6e24d20e3f00cbfe5078999558011c5  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 1803ab20d43890ba103d196f4e55b924  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 47dccabf16372b55fb7154bd70ce141f  libgcc/config/avr/libf7/libf7-common.mk
  c29107694f22e1434011033331235b51  libgcc/config/avr/libf7/libf7-const.def
  e55ce8934ace33b814bf03fbbfd9ba5f  libgcc/config/avr/libf7/libf7-constdef.h
! 9f0c02fe426113aa8e7eb23939a8d3f4  libgcc/config/avr/libf7/libf7.c
! c242f404ef73dc81c1dc9b99ffa63920  libgcc/config/avr/libf7/libf7.h
  606c568e8f2d692bc5762eaba8d8e7b0  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
--- 111450,111470 ----
  c7b2e09c1a819d37ab91db3294159732  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
  b7792b93ec270f682ce38eb52297254e  libgcc/config/avr/lib2funcs.c
! ab2ffec49fef3d39e9c6f1ae99636541  libgcc/config/avr/libf7/ChangeLog
  159c564e8ed539925b0a82879e077648  libgcc/config/avr/libf7/asm-defs.h
! 7a562dc89f8d63e5a7d235666268e2b4  libgcc/config/avr/libf7/f7-renames.h
! 242b56b2def38ab8671130aa24953e46  libgcc/config/avr/libf7/f7-wraps.h
! b9901623ec29c1c4dd98d6fae040518c  libgcc/config/avr/libf7/f7renames.sh
  4026813a3a56ecdf28b1fe38fc63cdec  libgcc/config/avr/libf7/f7wraps.sh
  b6e24d20e3f00cbfe5078999558011c5  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 865c42d81ebcb9d3b4bdd6760fad0117  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
! 021ea561bcc2bc07286c89e312af685b  libgcc/config/avr/libf7/libf7-common.mk
  c29107694f22e1434011033331235b51  libgcc/config/avr/libf7/libf7-const.def
  e55ce8934ace33b814bf03fbbfd9ba5f  libgcc/config/avr/libf7/libf7-constdef.h
! 31a638f6449e0aae209af7e0fc5c964c  libgcc/config/avr/libf7/libf7.c
! ed6f3fd8579fc38947541f372f4f21b4  libgcc/config/avr/libf7/libf7.h
  606c568e8f2d692bc5762eaba8d8e7b0  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
*************** d828e38384c506bf5e7d5a3c02725a37  libssp
*** 123681,123687 ****
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 3cc3ad1b8c6b67f618b2eae07c318503  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 123692,123698 ----
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 1d27c10ce343b99eb642d2698db50ed7  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** eca6ccbf51d82ff5b987cd9aaced3795  libstd
*** 126738,126744 ****
  5e7b70871875efa66006547f45751b27  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
  35e3f31c6c42678d93aeefed4ebccd02  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
  1d65030d6917c2356c86c0e586da9a0f  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 9f7b918a43fdd2e4eb3a6a46119f97d4  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
  0214e01b9866348ef658b509210a5c3e  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
  a33853183d3467306152eb66eea86f42  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
  d8bbe2c17046f08594a91f5a8e216ba7  libstdc++-v3/testsuite/20_util/ratio/requirements/type_constraints.cc
--- 126749,126755 ----
  5e7b70871875efa66006547f45751b27  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
  35e3f31c6c42678d93aeefed4ebccd02  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
  1d65030d6917c2356c86c0e586da9a0f  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 1bc18b458101f724d60332748dfff23f  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
  0214e01b9866348ef658b509210a5c3e  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
  a33853183d3467306152eb66eea86f42  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
  d8bbe2c17046f08594a91f5a8e216ba7  libstdc++-v3/testsuite/20_util/ratio/requirements/type_constraints.cc
diff -Nrcpad gcc-14-20251003/gcc/ChangeLog gcc-14-20251010/gcc/ChangeLog
*** gcc-14-20251003/gcc/ChangeLog	Fri Oct  3 22:32:48 2025
--- gcc-14-20251010/gcc/ChangeLog	Fri Oct 10 22:32:53 2025
***************
*** 1,3 ****
--- 1,20 ----
+ 2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122187
+ 	* config/avr/avr.cc (avr_out_extr, avr_out_extr_not):
+ 	Make a local copy of the passed rtx[] operands.
+ 
+ 2025-10-03  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2025-09-15  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR tree-optimization/121772
+ 	* match.pd: Add type check to reduc(ctor) pattern.
+ 
  2025-09-20  Michael Eager  <eager@eagercon.com>
  
  	PR target/118280
diff -Nrcpad gcc-14-20251003/gcc/DATESTAMP gcc-14-20251010/gcc/DATESTAMP
*** gcc-14-20251003/gcc/DATESTAMP	Fri Oct  3 22:32:51 2025
--- gcc-14-20251010/gcc/DATESTAMP	Fri Oct 10 22:32:53 2025
***************
*** 1 ****
! 20251002
--- 1 ----
! 20251010
diff -Nrcpad gcc-14-20251003/gcc/ada/ChangeLog gcc-14-20251010/gcc/ada/ChangeLog
*** gcc-14-20251003/gcc/ada/ChangeLog	Fri Oct  3 22:32:51 2025
--- gcc-14-20251010/gcc/ada/ChangeLog	Fri Oct 10 22:32:53 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-10-05  Steve Baird  <baird@adacore.com>
+ 
+ 	PR ada/113536
+ 	* exp_attr.adb:	Move computation of Accum_Typ entirely into the
+ 	function Build_Stat.
+ 
  2025-07-03  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* gcc-interface/Makefile.in (gnatlib-sjlj): Delete.
diff -Nrcpad gcc-14-20251003/gcc/ada/exp_attr.adb gcc-14-20251010/gcc/ada/exp_attr.adb
*** gcc-14-20251003/gcc/ada/exp_attr.adb	Fri Oct  3 22:32:52 2025
--- gcc-14-20251010/gcc/ada/exp_attr.adb	Fri Oct 10 22:32:53 2025
***************
*** 24,30 ****
  ------------------------------------------------------------------------------
  
  with Accessibility;  use Accessibility;
- with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
  with Debug;          use Debug;
--- 24,29 ----
*************** package body Exp_Attr is
*** 6058,6063 ****
--- 6057,6063 ----
  
              begin
                 if Nkind (E1) = N_Attribute_Reference then
+                   Accum_Typ := Base_Type (Entity (Prefix (E1)));
                    Stat := Make_Assignment_Statement (Loc,
                              Name => New_Occurrence_Of (Bnn, Loc),
                              Expression => Make_Attribute_Reference (Loc,
*************** package body Exp_Attr is
*** 6068,6079 ****
--- 6068,6082 ----
                                  Comp)));
  
                 elsif Ekind (Entity (E1)) = E_Procedure then
+                   Accum_Typ := Etype (First_Formal (Entity (E1)));
                    Stat := Make_Procedure_Call_Statement (Loc,
                              Name => New_Occurrence_Of (Entity (E1), Loc),
                                 Parameter_Associations => New_List (
                                   New_Occurrence_Of (Bnn, Loc),
                                   Comp));
+ 
                 else
+                   Accum_Typ := Etype (Entity (E1));
                    Stat := Make_Assignment_Statement (Loc,
                              Name => New_Occurrence_Of (Bnn, Loc),
                              Expression => Make_Function_Call (Loc,
*************** package body Exp_Attr is
*** 6083,6088 ****
--- 6086,6113 ----
                                  Comp)));
                 end if;
  
+                --  Try to cope if E1 is wrong because it is an overloaded
+                --  subprogram that happens to be the first candidate
+                --  on a homonym chain, but that resolution candidate turns
+                --  out to be the wrong one.
+                --  This workaround usually gets the right type, but it can
+                --  yield the wrong subtype of that type.
+ 
+                if Base_Type (Accum_Typ) /= Base_Type (Etype (N)) then
+                   Accum_Typ := Etype (N);
+                end if;
+ 
+                --  Try to cope with wrong E1 when Etype (N) doesn't help
+                if Is_Universal_Numeric_Type (Accum_Typ) then
+                   if Is_Array_Type (Etype (Prefix (N))) then
+                      Accum_Typ := Component_Type (Etype (Prefix (N)));
+                   else
+                      --  Further hackery can be added here when there is a
+                      --  demonstrated need.
+                      null;
+                   end if;
+                end if;
+ 
                 return Stat;
              end Build_Stat;
  
*************** package body Exp_Attr is
*** 6133,6142 ****
                        End_Label => Empty,
                        Statements =>
                          New_List (Build_Stat (Relocate_Node (Expr))));
- 
-                   --  Look at the context to find the type.
- 
-                   Accum_Typ := Etype (N);
                 end;
  
              else
--- 6158,6163 ----
*************** package body Exp_Attr is
*** 6166,6205 ****
                        Statements => New_List (
                          Build_Stat (New_Occurrence_Of (Elem, Loc))));
  
-                   --  Look at the prefix to find the type. This is
-                   --  modeled on Analyze_Iterator_Specification in Sem_Ch5.
- 
-                   declare
-                      Ptyp : constant Entity_Id :=
-                               Base_Type (Etype (Prefix (N)));
- 
-                   begin
-                      if Is_Array_Type (Ptyp) then
-                         Accum_Typ := Component_Type (Ptyp);
- 
-                      elsif Has_Aspect (Ptyp, Aspect_Iterable) then
-                         declare
-                            Element : constant Entity_Id :=
-                                        Get_Iterable_Type_Primitive
-                                          (Ptyp, Name_Element);
-                         begin
-                            if Present (Element) then
-                               Accum_Typ := Etype (Element);
-                            end if;
-                         end;
- 
-                      else
-                         declare
-                            Element : constant Node_Id :=
-                                        Find_Value_Of_Aspect
-                                          (Ptyp, Aspect_Iterator_Element);
-                         begin
-                            if Present (Element) then
-                               Accum_Typ := Entity (Element);
-                            end if;
-                         end;
-                      end if;
-                   end;
                 end;
              end if;
  
--- 6187,6192 ----
diff -Nrcpad gcc-14-20251003/gcc/config/avr/avr.cc gcc-14-20251010/gcc/config/avr/avr.cc
*** gcc-14-20251003/gcc/config/avr/avr.cc	Fri Oct  3 22:32:54 2025
--- gcc-14-20251010/gcc/config/avr/avr.cc	Fri Oct 10 22:32:54 2025
*************** avr_out_insv (rtx_insn *insn, rtx xop[],
*** 10093,10108 ****
  }
  
  
! /* Output instructions to extract a bit to 8-bit register XOP[0].
!    The input XOP[1] is a register or an 8-bit MEM in the lower I/O range.
!    XOP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr (rtx_insn *insn, rtx xop[], int *plen)
  {
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
--- 10093,10109 ----
  }
  
  
! /* Output instructions to extract a bit to 8-bit register OP[0].
!    The input OP[1] is a register or an 8-bit MEM in the lower I/O range.
!    OP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr (rtx_insn *insn, rtx op[], int *plen)
  {
+   rtx xop[] = { op[0], op[1], op[2] };
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
*************** avr_out_extr (rtx_insn *insn, rtx xop[],
*** 10160,10175 ****
  }
  
  
! /* Output instructions to extract a negated bit to 8-bit register XOP[0].
!    The input XOP[1] is an 8-bit register or MEM in the lower I/O range.
!    XOP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr_not (rtx_insn * /* insn */, rtx xop[], int *plen)
  {
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
--- 10161,10177 ----
  }
  
  
! /* Output instructions to extract a negated bit to 8-bit register OP[0].
!    The input OP[1] is an 8-bit register or MEM in the lower I/O range.
!    OP[2] is the const_int bit position.  Return "".
  
     PLEN != 0: Set *PLEN to the code length in words.  Don't output anything.
     PLEN == 0: Output instructions.  */
  
  const char *
! avr_out_extr_not (rtx_insn * /* insn */, rtx op[], int *plen)
  {
+   rtx xop[] = { op[0], op[1], op[2] };
    rtx dest = xop[0];
    rtx src = xop[1];
    int bit = INTVAL (xop[2]);
diff -Nrcpad gcc-14-20251003/gcc/cp/ChangeLog gcc-14-20251010/gcc/cp/ChangeLog
*** gcc-14-20251003/gcc/cp/ChangeLog	Fri Oct  3 22:32:55 2025
--- gcc-14-20251010/gcc/cp/ChangeLog	Fri Oct 10 22:32:54 2025
***************
*** 1,3 ****
--- 1,12 ----
+ 2025-10-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121981
+ 	* pt.cc (any_template_parm_r) <case TEMPLATE_TYPE_PARM>:
+ 	Don't walk TREE_TYPE.
+ 
  2025-09-15  Matthias Kretz  <m.kretz@gsi.de>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251003/gcc/cp/pt.cc gcc-14-20251010/gcc/cp/pt.cc
*** gcc-14-20251003/gcc/cp/pt.cc	Fri Oct  3 22:32:55 2025
--- gcc-14-20251010/gcc/cp/pt.cc	Fri Oct 10 22:32:54 2025
*************** any_template_parm_r (tree t, void *data)
*** 10990,10996 ****
        break;
  
      case TEMPLATE_PARM_INDEX:
!       WALK_SUBTREE (TREE_TYPE (t));
        break;
  
      case TEMPLATE_DECL:
--- 10990,10999 ----
        break;
  
      case TEMPLATE_PARM_INDEX:
!       /* No need to consider template parameters within the type of an NTTP:
! 	 substitution into an NTTP is done directly with the corresponding
! 	 template argument, and its type only comes into play earlier during
! 	 coercion.  */
        break;
  
      case TEMPLATE_DECL:
diff -Nrcpad gcc-14-20251003/gcc/fortran/ChangeLog gcc-14-20251010/gcc/fortran/ChangeLog
*** gcc-14-20251003/gcc/fortran/ChangeLog	Fri Oct  3 22:32:55 2025
--- gcc-14-20251010/gcc/fortran/ChangeLog	Fri Oct 10 22:32:54 2025
***************
*** 1,3 ****
--- 1,13 ----
+ 2025-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121263
+ 	* trans-intrinsic.cc (gfc_conv_intrinsic_transfer): For an
+ 	unlimited polymorphic SOURCE to TRANSFER use saved descriptor
+ 	if possible.
+ 
  2025-09-23  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251003/gcc/fortran/trans-intrinsic.cc gcc-14-20251010/gcc/fortran/trans-intrinsic.cc
*** gcc-14-20251003/gcc/fortran/trans-intrinsic.cc	Fri Oct  3 22:32:55 2025
--- gcc-14-20251010/gcc/fortran/trans-intrinsic.cc	Fri Oct 10 22:32:54 2025
*************** gfc_conv_intrinsic_transfer (gfc_se * se
*** 8512,8518 ****
  				       argse.string_length);
        else if (arg->expr->ts.type == BT_CLASS)
  	{
! 	  class_ref = TREE_OPERAND (argse.expr, 0);
  	  tmp = gfc_class_vtab_size_get (class_ref);
  	  if (UNLIMITED_POLY (arg->expr))
  	    tmp = gfc_resize_class_size_with_len (&argse.pre, class_ref, tmp);
--- 8512,8523 ----
  				       argse.string_length);
        else if (arg->expr->ts.type == BT_CLASS)
  	{
! 	  if (UNLIMITED_POLY (source_expr)
! 	      && DECL_LANG_SPECIFIC (source_expr->symtree->n.sym->backend_decl))
! 	    class_ref = GFC_DECL_SAVED_DESCRIPTOR
! 	      (source_expr->symtree->n.sym->backend_decl);
! 	  else
! 	    class_ref = TREE_OPERAND (argse.expr, 0);
  	  tmp = gfc_class_vtab_size_get (class_ref);
  	  if (UNLIMITED_POLY (arg->expr))
  	    tmp = gfc_resize_class_size_with_len (&argse.pre, class_ref, tmp);
diff -Nrcpad gcc-14-20251003/gcc/testsuite/ChangeLog gcc-14-20251010/gcc/testsuite/ChangeLog
*** gcc-14-20251003/gcc/testsuite/ChangeLog	Fri Oct  3 22:32:58 2025
--- gcc-14-20251010/gcc/testsuite/ChangeLog	Fri Oct 10 22:32:55 2025
***************
*** 1,3 ****
--- 1,94 ----
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122222
+ 	* gcc.target/avr/pr122222-sitod.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122220
+ 	* gcc.target/avr/pr122220.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122210
+ 	* gcc.target/avr/dtofx.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122210
+ 	* gcc.target/avr/fxtod.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* gcc.target/avr/sincos-1.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122177
+ 	* gcc.target/avr/fminfmax-1.c: New test.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* gcc.target/avr/cmpdi-1.c: New test.
+ 
+ 2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-07  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122187
+ 	* gcc.target/avr/torture/pr122187.c: New test.
+ 
+ 2025-10-07  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	Backported from master:
+ 	2025-09-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/121981
+ 	* g++.dg/cpp2a/concepts-placeholder15.C: New test.
+ 
+ 2025-10-05  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2025-09-03  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/121263
+ 	* gfortran.dg/transfer_class_5.f90: New test.
+ 
+ 2025-10-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/113536
+ 	* gnat.dg/reduce2.adb: New test.
+ 
+ 2025-10-03  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	Backported from master:
+ 	2025-09-15  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	PR tree-optimization/121772
+ 	* gcc.target/aarch64/torture/pr121772.c: New test.
+ 
  2025-09-23  Paul Thomas  <pault@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251003/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C gcc-14-20251010/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C
*** gcc-14-20251003/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/g++.dg/cpp2a/concepts-placeholder15.C	Fri Oct 10 22:32:56 2025
***************
*** 0 ****
--- 1,17 ----
+ // PR c++/121981
+ // { dg-do compile { target c++20 } }
+ 
+ template<auto V>
+ concept C = requires { V; };
+ 
+ template<class T, auto V>
+ concept D = C<V>;
+ 
+ template<auto V, D<V> auto W>
+ struct A { };
+ 
+ template<auto V, D<V> T>
+ struct B { };
+ 
+ A<0, 1> a;
+ B<0, int> b;
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/cmpdi-1.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/cmpdi-1.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/cmpdi-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/cmpdi-1.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,149 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ typedef __INT8_TYPE__   int8_t;
+ typedef __UINT8_TYPE__  uint8_t;
+ typedef __UINT16_TYPE__ uint16_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef __INT64_TYPE__  int64_t;
+ 
+ #define ARRAY_SIZE(X) (sizeof(X) / sizeof(*X))
+ 
+ const __flash uint64_t mant[] =
+   {
+     0x0000000000000,
+     0x0000000000001,
+     0x0000000000100,
+     0x0000000010000,
+     0x0000001000000,
+     0x0000100000000,
+     0x0010000000000,
+     0x1000000000000,
+     0x00000000000ff,
+     0x00000000000ff,
+     0x000000000ffff,
+     0x0000000ffffff,
+     0x00000ffffffff,
+     0x000ffffffffff,
+     0x0ffffffffffff,
+     0xfffffffffffff,
+     0xfffffffffff00,
+     0xfffffffff0000,
+     0xfffffff000000,
+     0xfffff00000000,
+     0xfff0000000000,
+     0xff00000000000,
+     0xf000000000000,
+     0x7ffffffffffff,
+     0x8000000000000,
+     0x8000000000001,
+     0xffffffffffffe
+   };
+ 
+ const __flash uint16_t expo[] =
+   {
+     0x000,
+     0x001,
+     0x002,
+     0x7fe,
+     0x7ff
+   };
+ 
+ #define SMASK ((uint64_t) 1 << 63)
+ #define xNAN 0x7f
+ 
+ char d64_nan_p (uint64_t a)
+ {
+   return (a & ~SMASK) > (uint64_t) 0x7ff << 52;
+ }
+ 
+ int8_t cmp_d64 (uint64_t a, uint64_t b)
+ {
+   if (d64_nan_p (a) || d64_nan_p (b))
+     return xNAN;
+ 
+   if (a & SMASK)     a = SMASK - a;
+   if (b & SMASK)     b = SMASK - b;
+   __asm ("" : "+r" (a));
+   __asm ("" : "+r" (b));
+ 
+   return a == b
+     ? 0
+     : (int64_t) a > (int64_t) b ? 1 : -1;
+ }
+ 
+ extern int8_t eq (uint64_t, uint64_t) __asm("__eqdf2");
+ extern int8_t ne (uint64_t, uint64_t) __asm("__nedf2");
+ extern int8_t ge (uint64_t, uint64_t) __asm("__gedf2");
+ extern int8_t gt (uint64_t, uint64_t) __asm("__gtdf2");
+ extern int8_t le (uint64_t, uint64_t) __asm("__ledf2");
+ extern int8_t lt (uint64_t, uint64_t) __asm("__ltdf2");
+ extern int8_t unord (uint64_t, uint64_t) __asm("__unorddf2");
+ 
+ void test1 (uint64_t a, uint64_t b)
+ {
+   int8_t d, c = cmp_d64 (a, b);
+   d = eq (a, b);
+   if (c == xNAN && d) __builtin_exit (1);
+   if (c != xNAN && d != (c == 0)) __builtin_exit (2);
+ 
+   d = ne (a, b);
+   if (c == xNAN && d) __builtin_exit (3);
+   if (c != xNAN && d != (c != 0)) __builtin_exit (4);
+ 
+   d = ge (a, b);
+   if (c == xNAN && d) __builtin_exit (5);
+   if (c != xNAN && d != (c >= 0)) __builtin_exit (6);
+ 
+   d = gt (a, b);
+   if (c == xNAN && d) __builtin_exit (7);
+   if (c != xNAN && d != (c > 0)) __builtin_exit (8);
+ 
+   d = le (a, b);
+   if (c == xNAN && d) __builtin_exit (9);
+   if (c != xNAN && d != (c <= 0)) __builtin_exit (10);
+ 
+   d = lt (a, b);
+   if (c == xNAN && d) __builtin_exit (11);
+   if (c != xNAN && d != (c < 0)) __builtin_exit (12);
+ 
+   d = unord (a, b);
+   if (c == xNAN && !d) __builtin_exit (13);
+   if (c != xNAN && d) __builtin_exit (14);
+ }
+ 
+ 
+ void testAB (uint64_t a, uint64_t b)
+ {
+   test1 (a, b);
+   test1 (a, b ^ SMASK);
+   test1 (a ^ SMASK, b);
+   test1 (a ^ SMASK, b ^ SMASK);
+ }
+ 
+ void testA (uint64_t a)
+ {
+   for (uint8_t i = 0; i < ARRAY_SIZE (mant); ++i)
+     {
+       uint64_t b = mant[i];
+       for (uint8_t j = 0; j < ARRAY_SIZE (expo); ++j)
+ 	testAB (a, b | ((uint64_t) expo[j] << 52));
+     }
+ }
+ 
+ void tests (void)
+ {
+   for (uint8_t i = 0; i < ARRAY_SIZE (mant); ++i)
+     {
+       uint64_t a = mant[i];
+       for (uint8_t j = 0; j < ARRAY_SIZE (expo); ++j)
+ 	testA (a | ((uint64_t) expo[j] << 52));
+     }
+ }
+ 
+ 
+ int main (void)
+ {
+   tests ();
+   return 0;
+ }
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/dtofx.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/dtofx.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/dtofx.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/dtofx.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,98 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues -Wno-pedantic } } */
+ 
+ #include <stdfix.h>
+ 
+ #if __SIZEOF_LONG_DOUBLE__ == 8
+ 
+ typedef long double D;
+ 
+ volatile D d0 = 0;
+ volatile D dm15 = -1.5;
+ volatile D dp15 = +1.5;
+ volatile D dm05 = -0.5;
+ volatile D dp05 = +0.5;
+ 
+ void test0 (void)
+ {
+   if (0hk != (short accum) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0uhk != (unsigned short accum) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0hr != (short fract) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0uhr != (unsigned short fract) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0k != (accum) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0uk != (unsigned accum) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0r != (fract) d0)
+     __builtin_exit (__LINE__);
+ 
+   if (0ur != (unsigned fract) d0)
+     __builtin_exit (__LINE__);
+ }
+ 
+ void testp (void)
+ {
+   if (0.5hr != (short fract) dp05)
+     __builtin_exit (__LINE__);
+ 
+   if (0.5uhr != (unsigned short fract) dp05)
+     __builtin_exit (__LINE__);
+ 
+   if (0.5r != (fract) dp05)
+     __builtin_exit (__LINE__);
+ 
+   if (0.5ur != (unsigned fract) dp05)
+     __builtin_exit (__LINE__);
+ 
+   if (1.5hk != (short accum) dp15)
+     __builtin_exit (__LINE__);
+ 
+   if (1.5uhk != (unsigned short accum) dp15)
+     __builtin_exit (__LINE__);
+ 
+   if (1.5k != (accum) dp15)
+     __builtin_exit (__LINE__);
+ 
+   if (1.5uk != (unsigned accum) dp15)
+     __builtin_exit (__LINE__);
+ }
+ 
+ void testm (void)
+ {
+   if (-0.5hr != (short fract) dm05)
+     __builtin_exit (__LINE__);
+ 
+   if (-0.5r != (fract) dm05)
+     __builtin_exit (__LINE__);
+ 
+   if (-1.5hk != (short accum) dm15)
+     __builtin_exit (__LINE__);
+ 
+   if (-1.5k != (accum) dm15)
+     __builtin_exit (__LINE__);
+ }
+ 
+ int main (void)
+ {
+   test0 ();
+   testp ();
+   testm ();
+ 
+   return 0;
+ }
+ #else
+ int main (void)
+ {
+   return 0;
+ }
+ #endif
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/fminfmax-1.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/fminfmax-1.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/fminfmax-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/fminfmax-1.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,116 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ typedef __INT8_TYPE__   int8_t;
+ typedef __UINT8_TYPE__  uint8_t;
+ typedef __UINT16_TYPE__ uint16_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef __INT64_TYPE__  int64_t;
+ 
+ #define ARRAY_SIZE(X) (sizeof(X) / sizeof(*X))
+ 
+ const __flash uint64_t vals[] =
+   {
+     // NaNs
+     0xffffffffffffffff,
+     0x7fffffffffffffff,
+     0xfff0000000000001,
+     0x7ff0000000000001,
+ 
+     // Some non-NaN doubles, increasing in magnitude.
+     0xfff0000000000000, // -Inf
+     0xffefffffffffffff,
+     0xffe0000000000000,
+     0x8010000000000000,
+     0x800fffffffffffff,
+     0x800ffffffffffffe,
+     0x8007fffffffffffe,
+     0x8000000000000001,
+     0x0000000000000000,
+     0x0000000000000001,
+     0x0007fffffffffffe,
+     0x000ffffffffffffe,
+     0x000fffffffffffff,
+     0x0010000000000000,
+     0x7fe0000000000000,
+     0x7fefffffffffffff,
+     0x7ff0000000000000  // +Inf
+   };
+ 
+ #define SMASK ((uint64_t) 1 << 63)
+ 
+ char d64_nan_p (uint64_t a)
+ {
+   return (a & ~SMASK) > (uint64_t) 0x7ff << 52;
+ }
+ 
+ extern uint64_t xmin (uint64_t, uint64_t) __asm("__fmin");
+ extern uint64_t xmax (uint64_t, uint64_t) __asm("__fmax");
+ 
+ void test_fmin (uint8_t i, uint8_t j)
+ {
+   uint64_t a = vals[i];
+   uint64_t b = vals[j];
+   uint64_t m = xmin (a, b);
+ 
+   char a_nan_p = d64_nan_p (a);
+   char b_nan_p = d64_nan_p (b);
+ 
+   if (a_nan_p + b_nan_p == 2)
+     {
+       if (!d64_nan_p (m))
+ 	__builtin_exit (__LINE__);
+     }
+   else
+     {
+       uint64_t r = 0?0
+ 	: a_nan_p ? b
+ 	: b_nan_p ? a
+ 	: i < j ? a : b;
+       if (r != m)
+ 	__builtin_exit (__LINE__);
+     }
+ }
+ 
+ 
+ void test_fmax (uint8_t i, uint8_t j)
+ {
+   uint64_t a = vals[i];
+   uint64_t b = vals[j];
+   uint64_t m = xmax (a, b);
+ 
+   char a_nan_p = d64_nan_p (a);
+   char b_nan_p = d64_nan_p (b);
+ 
+   if (a_nan_p + b_nan_p == 2)
+     {
+       if (!d64_nan_p (m))
+ 	__builtin_exit (__LINE__);
+     }
+   else
+     {
+       uint64_t r = 0?0
+ 	: a_nan_p ? b
+ 	: b_nan_p ? a
+ 	: i > j ? a : b;
+       if (r != m)
+ 	__builtin_exit (__LINE__);
+     }
+ }
+ 
+ 
+ void tests (void)
+ {
+   for (uint8_t i = 0; i < ARRAY_SIZE (vals); ++i)
+     for (uint8_t j = 0; j < ARRAY_SIZE (vals); ++j)
+       {
+ 	test_fmin (i, j);
+       }
+ }
+ 
+ 
+ int main (void)
+ {
+   tests ();
+   return 0;
+ }
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/fxtod.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/fxtod.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/fxtod.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/fxtod.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,115 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues -fwrapv -Wno-overflow } } */
+ 
+ #include <stdfix.h>
+ 
+ #if __SIZEOF_LONG_DOUBLE__ == 8
+ 
+ #define NI __attribute__((noipa))
+ 
+ typedef long double D;
+ 
+ extern D ldexpl (D, int);
+ 
+ typedef short fract hr_t;
+ typedef unsigned short fract uhr_t;
+ typedef fract r_t;
+ typedef unsigned fract ur_t;
+ 
+ typedef short accum hk_t;
+ typedef unsigned short accum uhk_t;
+ typedef accum k_t;
+ typedef unsigned accum uk_t;
+ 
+ #define FBITuhr 8
+ #define FBIThr  7
+ #define FBITur  16
+ #define FBITr   15
+ 
+ #define FBITuhk 8
+ #define FBIThk  7
+ #define FBITuk  16
+ #define FBITk   15
+ 
+ #define VALff(S) ((2ul << (8 * sizeof (S##bits(0)) - 1)) - 1)
+ #define VAL80(S) (1ul << (8 * sizeof (S##bits(0)) - 1))
+ #define VAL00(S) 0
+ #define VAL01(S) 1
+ 
+ 
+ #define TEST_U(S, V)				\
+   NI void test_##S##_##V (void)			\
+   {						\
+     S##_t x = S##bits (VAL##V (S));		\
+     __asm ("" : "+r" (x));			\
+     D d = (D) x;				\
+     D z = ldexpl (VAL##V (S), - FBIT##S);	\
+     if (d != z)					\
+       __builtin_exit (1);			\
+   }
+ 
+ #define TEST_S(S, V)				\
+   NI void test_##S##_##V (void)			\
+   {						\
+     uint32_t u32 = (VAL##V (S) & VAL80 (S))	\
+       ? 1u + (VAL##V (S) ^ VALff (S))		\
+       : VAL##V (S);				\
+     S##_t x = S##bits (VAL##V (S));		\
+     __asm ("" : "+r" (x));			\
+     D d = (D) x;				\
+     D z = ldexpl (u32, - FBIT##S);		\
+     int s = (VAL##V (S) & VAL80 (S)) != 0;	\
+     if (s == 0 && d != z)			\
+       __builtin_exit (2);			\
+     if (s == 1 && d != -z)			\
+       __builtin_exit (3);			\
+   }
+ 
+ #define TESTS_U(S)				\
+   TEST_U (S, 00)				\
+   TEST_U (S, 01)				\
+   TEST_U (S, ff)				\
+   TEST_U (S, 80)
+ 
+ #define TESTS_S(S)				\
+   TEST_S (S, 00)				\
+   TEST_S (S, 01)				\
+   TEST_S (S, ff)				\
+   TEST_S (S, 80)
+ 
+ TESTS_U (uhr)
+ TESTS_U (ur)
+ TESTS_U (uhk)
+ TESTS_U (uk)
+ 
+ TESTS_S (hr)
+ TESTS_S (r)
+ TESTS_S (hk)
+ TESTS_S (k)
+ 
+ #define RUN(S)		\
+   test_##S##_00 ();	\
+   test_##S##_01 ();	\
+   test_##S##_ff ();	\
+   test_##S##_80 ()
+   
+ int main (void)
+ {
+   RUN (uhr);
+   RUN (ur);
+   RUN (uhk);
+   RUN (uk);
+ 
+   RUN (hr);
+   RUN (r);
+   RUN (hk);
+   RUN (k);
+ 
+   return 0;
+ }
+ #else
+ int main (void)
+ {
+   return 0;
+ }
+ #endif
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/pr122220.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/pr122220.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/pr122220.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/pr122220.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ #if __SIZEOF_LONG_DOUBLE__ == 8
+ 
+ typedef long double D;
+ typedef __INT32_TYPE__ int32_t;
+ 
+ D dd = -0x1p31L;
+   
+ int main (void)
+ {
+   if ((int32_t) dd != -0x7fffffff - 1)
+     __builtin_abort();
+ 
+   return 0;
+ }
+ #else
+ int main (void)
+ {
+   return 0;
+ }
+ #endif
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/pr122222-sitod.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/pr122222-sitod.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/pr122222-sitod.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/pr122222-sitod.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,60 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ #if __SIZEOF_LONG_DOUBLE__ == 8
+ 
+ typedef long double D;
+ typedef __INT32_TYPE__  int32_t;
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT8_TYPE__  uint8_t;
+ 
+ #define ARRAY_SIZE(X) (sizeof(X) / sizeof(*X))
+ 
+ void testu (void)
+ {
+   static const volatile __flash uint32_t vals[] =
+     {
+       0, 1ul, -1ul, (-1ul) << 1,
+       1ul << 31, 1ul << 30, 1ul << 29, 1ul << 28, 1ul << 27, 1ul << 26,
+       1ul << 25, 1ul << 24, 0xff, 123456789
+     };
+ 
+   for (uint8_t i = 0; i < ARRAY_SIZE (vals); ++i)
+     {
+       D x = (D) vals[i];
+       __asm ("" : "+r" (x));
+       if ((uint32_t) x != vals[i])
+ 	__builtin_exit (__LINE__);
+     }
+ }
+ 
+ void tests (void)
+ {
+   static const volatile __flash int32_t vals[] =
+     {
+       0, 1L, -1L, 0x7fffffff, -0x7fffffff, -0x7fffffff - 1,
+       -123456789
+     };
+ 
+   for (uint8_t i = 0; i < ARRAY_SIZE (vals); ++i)
+     {
+       D x = (D) vals[i];
+       __asm ("" : "+r" (x));
+       if ((int32_t) x != vals[i])
+ 	__builtin_exit (__LINE__);
+     }
+ }
+ 
+ int main (void)
+ {
+   testu ();
+   tests ();
+ 
+   return 0;
+ }
+ #else
+ int main (void)
+ {
+   return 0;
+ }
+ #endif
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/sincos-1.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/sincos-1.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/sincos-1.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/sincos-1.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,35 ----
+ /* { dg-do run { target { ! avr_tiny } } } */
+ /* { dg-additional-options { -std=gnu99 -Os -mcall-prologues } } */
+ 
+ #if __SIZEOF_LONG_DOUBLE__ == 8
+ typedef long double D;
+ 
+ extern void sincosl (D, D*, D*);
+ extern D sinl (D);
+ extern D cosl (D);
+ 
+ D s1, c1;
+ 
+ int main (void)
+ {
+   for (D x = -20; x < 20; x += 1.1)
+     {
+       sincosl (x, &s1, &c1);
+ 
+       __asm ("" : "+r" (x) :: "memory");
+ 
+       if (s1 != sinl (x))
+ 	__builtin_exit (1);
+ 
+       if (c1 != cosl (x))
+ 	__builtin_exit (2);
+     }
+ 
+   return 0;
+ }
+ #else
+ int main (void)
+ {
+   return 0;
+ }
+ #endif
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gcc.target/avr/torture/pr122187.c gcc-14-20251010/gcc/testsuite/gcc.target/avr/torture/pr122187.c
*** gcc-14-20251003/gcc/testsuite/gcc.target/avr/torture/pr122187.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gcc.target/avr/torture/pr122187.c	Fri Oct 10 22:33:00 2025
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options { -std=c99 } } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT16_TYPE__ uint16_t;
+ typedef __UINT8_TYPE__ uint8_t;
+ 
+ #define PINB (*(volatile uint8_t*) (13 + __AVR_SFR_OFFSET__))
+ #define PB1 1
+ 
+ uint16_t fun (void)
+ {
+     uint16_t h = 0;
+     for (uint32_t s = 0; s < 0x10000; ++s)
+         h += (PINB >> PB1) & 1;
+     return h;
+ }
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gfortran.dg/transfer_class_5.f90 gcc-14-20251010/gcc/testsuite/gfortran.dg/transfer_class_5.f90
*** gcc-14-20251003/gcc/testsuite/gfortran.dg/transfer_class_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gfortran.dg/transfer_class_5.f90	Fri Oct 10 22:33:02 2025
***************
*** 0 ****
--- 1,53 ----
+ ! { dg-do run }
+ ! PR fortran/121263 - fix TRANSFER with rank 1 unlimited polymorhpic
+ !
+ ! Based on original testcase by Chris Cox.
+ 
+ module stdlib_hashmap_wrappers
+   implicit none
+ contains
+   subroutine set_rank_one_key_int( key, value )
+     integer, allocatable, intent(inout) :: key(:)
+     class(*), intent(in)                :: value(:)
+     key = transfer( value, key )
+   end subroutine
+ 
+   subroutine set_rank_one_key_cx ( key, value )
+     complex, allocatable, intent(inout) :: key(:)
+     class(*), intent(in)                :: value(:)
+     key = transfer( value, key )
+   end subroutine
+ 
+   subroutine set_first_key_int   ( key, value )
+     integer, intent(inout) :: key
+     class(*), intent(in)   :: value(:)
+     key = transfer( value(1), key )
+   end subroutine
+ end module
+ 
+ program p
+   use stdlib_hashmap_wrappers
+   implicit none
+   integer, allocatable :: a(:), b(:)
+   complex, allocatable :: c(:), d(:)
+   class(*),allocatable :: z(:)
+   integer :: m
+   a = [1, 2, 3, 4, 5]
+   c = cmplx (a, -a)
+   call set_rank_one_key_int (b, a)
+   call set_rank_one_key_cx  (d, c)
+   call set_first_key_int    (m, a)
+ ! print *, b
+ ! print *, d
+   if (size (a) /= size (b)) stop 1
+   if (any  (a  /=       b)) stop 2
+   if (size (c) /= size (d)) stop 3
+   if (any  (c  /=       d)) stop 4
+   if (m /= 1) stop 5
+   deallocate (d)
+   z = c
+   d = transfer (z, d)
+   if (size (c) /= size (d)) stop 6
+   if (any  (c  /=       d)) stop 7
+   deallocate (a, b, c, d, z)
+ end program p
diff -Nrcpad gcc-14-20251003/gcc/testsuite/gnat.dg/reduce2.adb gcc-14-20251010/gcc/testsuite/gnat.dg/reduce2.adb
*** gcc-14-20251003/gcc/testsuite/gnat.dg/reduce2.adb	Thu Jan  1 00:00:00 1970
--- gcc-14-20251010/gcc/testsuite/gnat.dg/reduce2.adb	Fri Oct 10 22:33:03 2025
***************
*** 0 ****
--- 1,18 ----
+ -- { dg-do compile }
+ -- { dg-options "-gnat2022" }
+ 
+ procedure Reduce2 is
+ 
+   subtype Value is Natural range 0 .. 255;
+ 
+   function Do_Something (Accumulator : Value; Symbol : Character) return Value
+     is (((Accumulator + Character'Pos (Symbol)) * 17) mod 256);
+ 
+   function Do_It_By_Reduction (S : String) return Value is
+     (S'Reduce (Do_Something, 0));
+ 
+   Test_It : constant Value := Do_It_By_Reduction ("Hello, world!");
+ 
+ begin
+   null;
+ end;
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/ChangeLog gcc-14-20251010/libgcc/config/avr/libf7/ChangeLog
*** gcc-14-20251003/libgcc/config/avr/libf7/ChangeLog	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/ChangeLog	Fri Oct 10 22:33:06 2025
***************
*** 1,3 ****
--- 1,86 ----
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122222
+ 	* libf7-asm.sx (D_floatsidf, D_floatunsidf): New modules.
+ 	* libf7-common.mk (F7_ASM_PARTS): Add D_floatsidf, D_floatunsidf.
+ 	(F7F, g_dx): Remove floatunsidf, floatsidf.
+ 	* libf7.c (f7_set_s32): Don't alias to f7_floatsidf.
+ 	(f7_set_u32): Don't alias to f7_floatunsidf.
+ 	* f7-renames.h: Rebuild
+ 	* f7-wraps.h: Rebuild.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122220
+ 	* libf7-asm.sx (to_integer): Return 0x80... on negative overflow.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122210
+ 	* libf7-common.mk (F7_ASM_PARTS): Add D2<fx> modules.
+ 	* libf7-asm.sx: Implement the D2<fx> modules.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122210
+ 	* libf7-common.mk (F7_ASM_PARTS): Add <fx>2D modules.
+ 	* libf7-asm.sx: Implement the <fx>2D modules.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* libf7-common.mk (F7_ASM_PARTS): Add D_sincos.
+ 	* libf7-asm.sx: (D_sincos): New module implements sincos / sincosl.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/122177
+ 	* libf7-common.mk (m_ddd): Remove: fmin, fmax.
+ 	(F7_ASM_PARTS): Add: D_fminfmax.
+ 	* libf7-asm.sx (D_fmanfmax): New module.
+ 	* f7-wraps.h: Rebuild.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-10-06  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* libf7-common.mk (g_xdd_cmp): Remove le, lt, ge, gt, ne, eq, unord.
+ 	(F7_ASM_PARTS): Add D_cmp, D_eq, D_ne, D_ge, D_gt, D_le, D_lt, D_unord.
+ 	* libf7-asm.sx (D_cmp, D_eq, D_ne, D_ge, D_gt, D_le, D_lt, D_unord):
+ 	New modules.
+ 	* f7-wraps.h: Rebuild.
+ 
+ 2025-10-09  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	Backported from master:
+ 	2025-05-27  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	PR target/120442
+ 	* libf7-common.mk (LIBF_C_PARTS, m_ddd): Add fdim.
+ 	* libf7.h (f7_fdim): New proto.
+ 	* libf7.c (f7_fdim): New function.
+ 	* f7renames.sh (f7_fdim): Add rename.
+ 	* f7-wraps.h: Rebuild
+ 	* f7-renames.h: Rebuild
+ 
  2025-05-27  Georg-Johann Lay  <avr@gjlay.de>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/f7-renames.h gcc-14-20251010/libgcc/config/avr/libf7/f7-renames.h
*** gcc-14-20251003/libgcc/config/avr/libf7/f7-renames.h	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/f7-renames.h	Fri Oct 10 22:33:06 2025
***************
*** 97,102 ****
--- 97,103 ----
  #define f7_acos __f7_acos
  #define f7_atan __f7_atan
  #define f7_atan2 __f7_atan2
+ #define f7_fdim __f7_fdim
  #define f7_mul_noround __f7_mul_noround
  #define f7_sqrt16_round __f7_sqrt16_round
  #define f7_sqrt16_floor __f7_sqrt16_floor
***************
*** 158,165 ****
  #define f7_min __f7_min
  #define f7_max __f7_max
  #define f7_exp10 __f7_exp10
- #define f7_floatunsidf __f7_floatunsidf
- #define f7_floatsidf __f7_floatsidf
  #define f7_extendsfdf2 __f7_extendsfdf2
  #define f7_fixdfsi __f7_fixdfsi
  #define f7_fixdfdi __f7_fixdfdi
--- 159,164 ----
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/f7-wraps.h gcc-14-20251010/libgcc/config/avr/libf7/f7-wraps.h
*** gcc-14-20251003/libgcc/config/avr/libf7/f7-wraps.h	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/f7-wraps.h	Fri Oct 10 22:33:06 2025
*************** _ENDF __divdf3
*** 79,155 ****
  #endif /* F7MOD_D_div_ */
  
  ;; Functions that usually live in libgcc: __<name>df2 for <name> in:
! ;; le lt ge gt ne eq unord
! 
! ;; bool __ledf2 (double, double)  ; le
! #ifdef F7MOD_D_le_
! _DEFUN __ledf2
!     .global F7_NAME(le_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(le_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(le_impl)))
!     F7jmp   call_xdd
! _ENDF __ledf2
! #endif /* F7MOD_D_le_ */
! 
! ;; bool __ltdf2 (double, double)  ; lt
! #ifdef F7MOD_D_lt_
! _DEFUN __ltdf2
!     .global F7_NAME(lt_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(lt_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(lt_impl)))
!     F7jmp   call_xdd
! _ENDF __ltdf2
! #endif /* F7MOD_D_lt_ */
! 
! ;; bool __gedf2 (double, double)  ; ge
! #ifdef F7MOD_D_ge_
! _DEFUN __gedf2
!     .global F7_NAME(ge_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(ge_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(ge_impl)))
!     F7jmp   call_xdd
! _ENDF __gedf2
! #endif /* F7MOD_D_ge_ */
! 
! ;; bool __gtdf2 (double, double)  ; gt
! #ifdef F7MOD_D_gt_
! _DEFUN __gtdf2
!     .global F7_NAME(gt_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(gt_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(gt_impl)))
!     F7jmp   call_xdd
! _ENDF __gtdf2
! #endif /* F7MOD_D_gt_ */
! 
! ;; bool __nedf2 (double, double)  ; ne
! #ifdef F7MOD_D_ne_
! _DEFUN __nedf2
!     .global F7_NAME(ne_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(ne_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(ne_impl)))
!     F7jmp   call_xdd
! _ENDF __nedf2
! #endif /* F7MOD_D_ne_ */
! 
! ;; bool __eqdf2 (double, double)  ; eq
! #ifdef F7MOD_D_eq_
! _DEFUN __eqdf2
!     .global F7_NAME(eq_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(eq_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(eq_impl)))
!     F7jmp   call_xdd
! _ENDF __eqdf2
! #endif /* F7MOD_D_eq_ */
! 
! ;; bool __unorddf2 (double, double)  ; unord
! #ifdef F7MOD_D_unord_
! _DEFUN __unorddf2
!     .global F7_NAME(unord_impl)
!     ldi     ZH,     hi8(gs(F7_NAME(unord_impl)))
!     ldi     ZL,     lo8(gs(F7_NAME(unord_impl)))
!     F7jmp   call_xdd
! _ENDF __unorddf2
! #endif /* F7MOD_D_unord_ */
  
  ;; Functions that usually live in libgcc: __<name> for <name> in:
  ;; fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
--- 79,85 ----
  #endif /* F7MOD_D_div_ */
  
  ;; Functions that usually live in libgcc: __<name>df2 for <name> in:
! ;; (none)
  
  ;; Functions that usually live in libgcc: __<name> for <name> in:
  ;; fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
*************** _ENDF __truncdfsf2
*** 205,231 ****
  #endif /* F7MOD_D_truncdfsf2_ */
  
  ;; Functions that usually live in libgcc: __<name> for <name> in:
! ;; floatunsidf floatsidf extendsfdf2
! 
! ;; double __floatunsidf (type_t)  ; floatunsidf
! #ifdef F7MOD_D_floatunsidf_
! _DEFUN __floatunsidf
!     .global F7_NAME(floatunsidf)
!     ldi     ZH,     hi8(gs(F7_NAME(floatunsidf)))
!     ldi     ZL,     lo8(gs(F7_NAME(floatunsidf)))
!     F7jmp   call_dx
! _ENDF __floatunsidf
! #endif /* F7MOD_D_floatunsidf_ */
! 
! ;; double __floatsidf (type_t)  ; floatsidf
! #ifdef F7MOD_D_floatsidf_
! _DEFUN __floatsidf
!     .global F7_NAME(floatsidf)
!     ldi     ZH,     hi8(gs(F7_NAME(floatsidf)))
!     ldi     ZL,     lo8(gs(F7_NAME(floatsidf)))
!     F7jmp   call_dx
! _ENDF __floatsidf
! #endif /* F7MOD_D_floatsidf_ */
  
  ;; double __extendsfdf2 (type_t)  ; extendsfdf2
  #ifdef F7MOD_D_extendsfdf2_
--- 135,141 ----
  #endif /* F7MOD_D_truncdfsf2_ */
  
  ;; Functions that usually live in libgcc: __<name> for <name> in:
! ;; extendsfdf2
  
  ;; double __extendsfdf2 (type_t)  ; extendsfdf2
  #ifdef F7MOD_D_extendsfdf2_
*************** _ENDF __extendsfdf2
*** 239,245 ****
  
  ;; Functions that usually live in libm:  Depending on [long] double layout,
  ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
! ;; pow fmin fmax fmod hypot atan2
  
  ;; double __pow (double, double)
  #ifdef F7MOD_D_pow_
--- 149,155 ----
  
  ;; Functions that usually live in libm:  Depending on [long] double layout,
  ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
! ;; pow fmod hypot atan2 fdim
  
  ;; double __pow (double, double)
  #ifdef F7MOD_D_pow_
*************** _DEFUN __pow
*** 253,282 ****
  _ENDF __pow
  #endif /* F7MOD_D_pow_ */
  
- ;; double __fmin (double, double)
- #ifdef F7MOD_D_fmin_
- _DEFUN __fmin
-     DALIAS fmin
-     LALIAS fminl
-     .global F7_NAME(fmin)
-     ldi     ZH,     hi8(gs(F7_NAME(fmin)))
-     ldi     ZL,     lo8(gs(F7_NAME(fmin)))
-     F7jmp   call_ddd
- _ENDF __fmin
- #endif /* F7MOD_D_fmin_ */
- 
- ;; double __fmax (double, double)
- #ifdef F7MOD_D_fmax_
- _DEFUN __fmax
-     DALIAS fmax
-     LALIAS fmaxl
-     .global F7_NAME(fmax)
-     ldi     ZH,     hi8(gs(F7_NAME(fmax)))
-     ldi     ZL,     lo8(gs(F7_NAME(fmax)))
-     F7jmp   call_ddd
- _ENDF __fmax
- #endif /* F7MOD_D_fmax_ */
- 
  ;; double __fmod (double, double)
  #ifdef F7MOD_D_fmod_
  _DEFUN __fmod
--- 163,168 ----
*************** _DEFUN __atan2
*** 313,318 ****
--- 199,216 ----
  _ENDF __atan2
  #endif /* F7MOD_D_atan2_ */
  
+ ;; double __fdim (double, double)
+ #ifdef F7MOD_D_fdim_
+ _DEFUN __fdim
+     DALIAS fdim
+     LALIAS fdiml
+     .global F7_NAME(fdim)
+     ldi     ZH,     hi8(gs(F7_NAME(fdim)))
+     ldi     ZL,     lo8(gs(F7_NAME(fdim)))
+     F7jmp   call_ddd
+ _ENDF __fdim
+ #endif /* F7MOD_D_fdim_ */
+ 
  ;; Functions that usually live in libm:  Depending on [long] double layout,
  ;; define <name> and <name>l as weak alias(es) of __<name> for <name> in:
  ;; ldexp frexp
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/f7renames.sh gcc-14-20251010/libgcc/config/avr/libf7/f7renames.sh
*** gcc-14-20251003/libgcc/config/avr/libf7/f7renames.sh	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/f7renames.sh	Fri Oct 10 22:33:06 2025
*************** EOF
*** 35,43 ****
  
      c)
          if [ x${PRE} != xf7_ ]; then
!             echo " "
              echo "/* Renames for libf7.c, libf7.h.  */"
!             echo " "
              for x in $*; do
                  echo "#define f7_$x ${PRE}$x"
              done
--- 35,43 ----
  
      c)
          if [ x${PRE} != xf7_ ]; then
!             echo ""
              echo "/* Renames for libf7.c, libf7.h.  */"
!             echo ""
              for x in $*; do
                  echo "#define f7_$x ${PRE}$x"
              done
*************** EOF
*** 46,54 ****
  
      cst)
          if [ x${PRE} != xf7_ ]; then
!             echo " "
              echo "/* Renames for libf7.c, libf7.h.  */"
!             echo " "
              for x in $*; do
                  echo "#define f7_const_${x}   ${PRE}const_${x}"
                  echo "#define f7_const_${x}_P ${PRE}const_${x}_P"
--- 46,54 ----
  
      cst)
          if [ x${PRE} != xf7_ ]; then
!             echo ""
              echo "/* Renames for libf7.c, libf7.h.  */"
!             echo ""
              for x in $*; do
                  echo "#define f7_const_${x}   ${PRE}const_${x}"
                  echo "#define f7_const_${x}_P ${PRE}const_${x}_P"
*************** EOF
*** 58,66 ****
  
      asm)
          if [ x${PRE} != xf7_ ]; then
!             echo " "
              echo "/* Renames for libf7-asm.sx, f7-wraps.h.  */"
!             echo " "
              for x in $*; do
                  echo "#define f7_${x}_asm ${PRE}${x}_asm"
              done
--- 58,66 ----
  
      asm)
          if [ x${PRE} != xf7_ ]; then
!             echo ""
              echo "/* Renames for libf7-asm.sx, f7-wraps.h.  */"
!             echo ""
              for x in $*; do
                  echo "#define f7_${x}_asm ${PRE}${x}_asm"
              done
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/libf7-asm.sx gcc-14-20251010/libgcc/config/avr/libf7/libf7-asm.sx
*** gcc-14-20251003/libgcc/config/avr/libf7/libf7-asm.sx	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/libf7-asm.sx	Fri Oct 10 22:33:06 2025
*************** DEFUN to_integer
*** 618,638 ****
  .Lsaturate.T:
  
  #if F7_HAVE_Inf
!     brtc .Lset_0x7fff
!     ;; -Inf  =>  return 1 + INTxx_MIN
!     mov     ZL,     Flags
!     .global __clr_8
!     XCALL   __clr_8
!     ldi     C6,     0x80
! 
!     ldi     CA+0,   0x01
! 
!     sbrs    Mask,   5
!     ldi     CA+4,   0x01
! 
!     sbrs    Mask,   4
!     ldi     CA+6,   0x01
!     ret
  
  .Lset_0x7fff:
      ;; +Inf  =>  return INTxx_MAX
--- 618,624 ----
  .Lsaturate.T:
  
  #if F7_HAVE_Inf
!     brts .Lset_0x8000
  
  .Lset_0x7fff:
      ;; +Inf  =>  return INTxx_MAX
*************** DEFUN to_integer
*** 644,650 ****
  #endif /* F7_HAVE_Inf */
  
  .Lset_0x8000:
!     ;; NaN  =>  return INTxx_MIN
      .global __clr_8
      XCALL   __clr_8
      ldi     C6,     0x80
--- 630,636 ----
  #endif /* F7_HAVE_Inf */
  
  .Lset_0x8000:
!     ;; NaN  or -Inf =>  return INTxx_MIN
      .global __clr_8
      XCALL   __clr_8
      ldi     C6,     0x80
*************** ENDF class_D
*** 1727,1732 ****
--- 1713,2033 ----
  #endif /* F7MOD_D_class_ */
  
  
+ #ifdef F7MOD_D_cmp_
+ 
+ #define A0  18
+ #define A1  A0 + 1
+ #define A2  A0 + 2
+ #define A3  A0 + 3
+ #define A4  A0 + 4
+ #define A5  A0 + 5
+ #define A6  A0 + 6
+ #define A7  A0 + 7
+ 
+ #define B0  10
+ #define B1  B0 + 1
+ #define B2  B0 + 2
+ #define B3  B0 + 3
+ #define B4  B0 + 4
+ #define B5  B0 + 5
+ #define B6  B0 + 6
+ #define B7  B0 + 7
+ 
+ #define AA5  XH
+ #define AA6  ZL
+ #define AA7  ZH
+ 
+ #define BB0  A0
+ #define BB1  A1
+ #define BB2  A2
+ #define BB3  A3
+ #define BB4  A4
+ #define BB5  A5
+ #define BB6  A6
+ #define BB7  A7
+ 
+ ;;; Helper for __<cmp>df2 and __unorddf2.
+ ;;; T = 1: Comparison is unordered.
+ ;;; T = 0: Comparison is ordered, and Z, N, C, S flags are set according
+ ;;; to compare (double A, double B) as if set by a signed int comparison.
+ ;;; Note that f(+0) = f(-0) = 0.
+ ;;; In any case:
+ ;;; -  return R24 = 1.
+ ;;; -  return R25.0 = isNaN (A)
+ ;;; -  return R25.1 = isNaN (B)
+ DEFUN D_cmp
+     rcall   D_cmp.map_i64
+     bld     __tmp_reg__, 0
+     push    __tmp_reg__
+     ;; Save A somewhere else...
+     wmov    AA6, A6
+     mov     AA5, A5
+     push    A4
+     push    A3
+     push    A2
+     push    A1
+     mov     r0,  A0
+     ;; ... so that we can use D_cmp.map_i64 on B.
+     wmov    BB6, B6
+     wmov    BB4, B4
+     wmov    BB2, B2
+     wmov    BB0, B0
+     rcall   D_cmp.map_i64
+     ;; Run the following code even when B is NaN (T=1) so as to pop the regs.
+     ;; In the non-NaN case, AA and BB can be compared like int64_t for the
+     ;; sake of comparing A and B as double.
+     CP      r0,  BB0  $  pop r0
+     cpc     r0,  BB1  $  pop r0
+     cpc     r0,  BB2  $  pop r0
+     cpc     r0,  BB3  $  pop r0
+     cpc     r0,  BB4
+     cpc     AA5, BB5
+     cpc     AA6, BB6
+     cpc     AA7, BB7
+     pop     r25
+     ;; R25.0 <=> A is NaN
+     ;; R25.1 <=> B is NaN
+     ;; T <=> comparison is unordered
+     bld     r25, 1
+     sbrc    r25, 0
+     set
+     ldi     r24, 1
+     ret
+ 
+ ;;; A is NaN: Set T=1.
+ ;;; A is not a NaN: Set T=0, and map double A to int64_t such that
+ ;;; f(A) <cmp> f(B)  iff  A <cmp> B, i.e. we can treat the result
+ ;;; as int64_t for the matter of double comparison.
+ ;;; Clobbers: XL.
+ D_cmp.map_i64:
+     bst     A7, 7
+     cbr     A7, 0x80
+     ;; If Inf < |A|, then we have a NaN.
+     CP      __zero_reg__, A0
+     cpc     __zero_reg__, A1
+     cpc     __zero_reg__, A2
+     cpc     __zero_reg__, A3
+     cpc     __zero_reg__, A4
+     cpc     __zero_reg__, A5
+     ldi     XL, lo8(0x7ff0)     $    cpc    XL, A6
+     ldi     XL, hi8(0x7ff0)     $    cpc    XL, A7
+     brlo .Lunord
+     brtc 9f
+     clt
+     .global __negdi2
+     XJMP    __negdi2
+ .Lunord:
+     set
+ 9:  ret
+ 
+ ENDF D_cmp
+ #endif /* F7MOD_D_cmp_ */
+ 
+ 
+ ;; bool __ledf2 (double, double);
+ #ifdef F7MOD_D_le_
+ _DEFUN __ledf2
+     F7call  D_cmp
+     brts 0f
+     breq 1f
+     brlt 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __ledf2
+ #endif /* F7MOD_D_le_ */
+ 
+ ;; bool __ltdf2 (double, double);
+ #ifdef F7MOD_D_lt_
+ _DEFUN __ltdf2
+     F7call  D_cmp
+     brts 0f
+     brlt 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __ltdf2
+ #endif /* F7MOD_D_lt_ */
+ 
+ ;; bool __gedf2 (double, double);
+ #ifdef F7MOD_D_ge_
+ _DEFUN __gedf2
+     F7call  D_cmp
+     brts 0f
+     brge 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __gedf2
+ #endif /* F7MOD_D_ge_ */
+ 
+ ;; bool __gtdf2 (double, double);
+ #ifdef F7MOD_D_gt_
+ _DEFUN __gtdf2
+     F7call  D_cmp
+     brts 0f
+     breq 0f
+     brge 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __gtdf2
+ #endif /* F7MOD_D_gt_ */
+ 
+ ;; bool __nedf2 (double, double);
+ #ifdef F7MOD_D_ne_
+ _DEFUN __nedf2
+     F7call  D_cmp
+     brts 0f
+     brne 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __nedf2
+ #endif /* F7MOD_D_ne_ */
+ 
+ ;; bool __eqdf2 (double, double);
+ #ifdef F7MOD_D_eq_
+ _DEFUN __eqdf2
+     F7call  D_cmp
+     brts 0f
+     breq 1f
+ 0:  ldi     r24, 0
+ 1:  ret
+ _ENDF __eqdf2
+ #endif /* F7MOD_D_eq_ */
+ 
+ ;; bool __unorddf2 (double, double);
+ #ifdef F7MOD_D_unord_
+ _DEFUN __unorddf2
+     F7call  D_cmp
+     bld     r24, 0
+     ret
+ _ENDF __unorddf2
+ #endif /* F7MOD_D_unord_ */
+ 
+ #ifdef F7MOD_D_fminfmax_
+ _DEFUN __fmin
+ DALIAS fmin
+ LALIAS fminl
+     inc     __zero_reg__
+ 
+ _LABEL __fmax
+ DALIAS fmax
+ LALIAS fmaxl
+     ;; Push A[].
+     push    r25
+     push    r24
+     push    r23
+     push    r22
+     push    r21
+     push    r20
+     push    r19
+     push    r18
+     ;; fmin or fmax
+     push    __zero_reg__
+     clr     __zero_reg__
+ 
+     XCALL   __gedf2
+ 
+     pop     __tmp_reg__
+     andi    r25, 0x3            ; NaNs?
+     brne .Lnan
+     ;; No NaNs involved.
+     eor     __tmp_reg__, r24    ; (f == fmin) ^ (A >= B)
+     brne 1f
+ 2:
+     ;; Return B since the cases are:
+     ;; fmax && A < B
+     ;; fmin && A >= B
+ #ifdef __AVR_XMEGA__
+     in      XL, __SP_L__
+     in      XH, __SP_H__
+     adiw    XL, 8
+     out     __SP_L__, XL
+     out     __SP_H__, XH
+ #else
+     pop r0  $  pop r0  $  pop r0  $  pop r0
+     pop r0  $  pop r0  $  pop r0  $  pop r0
+ #endif
+     wmov    r24, r16
+     wmov    r22, r14
+     wmov    r20, r12
+     wmov    r18, r10
+     ret
+ 1:
+     ;; Return A since the cases are:
+     ;; fmax && A >= B
+     ;; fmin && A < B
+     pop     r18
+     pop     r19
+     pop     r20
+     pop     r21
+     pop     r22
+     pop     r23
+     pop     r24
+     pop     r25
+     ret
+ 
+ .Lnan:
+     ;; There are NaNs.
+     ;; When only the 1st argument is a NaN, then return the 2nd argument
+     cpi     r25, 0x1
+     breq 2b
+     ;; When the 2nd argument is a NaN, then return the 1st argument.
+     ;; When both arguments are NaNs, then return NaN (e.g. the 1st argument).
+     rjmp 1b
+ _ENDF __fmax
+ #endif /* F7MOD_D_fminfmax_ */
+ 
+ 
+ #ifdef F7MOD_D_sincos_
+ ;;; void sincos (double R18, double *R16, double *R14);
+ _DEFUN __sincos
+ DALIAS sincos
+ LALIAS sincosl
+ 
+ #define n_pushed    4
+ #define n_frame    (2 * F7_SIZEOF)
+     do_prologue_saves n_pushed, n_frame
+     ;; Y = FramePointer + 1
+     adiw    Y,      1
+     ;; R16 = frame-arg 1
+     wmov    r16,    Y
+     ;; The double argument is in R18[].
+     XCALL   F7_NAME (set_double_impl)
+     ;; void f7_sincos (f7_t *ss, f7_t *cc, const f7_t *aa)
+     ;; Note that aa may equal ss or cc.
+     wmov    r20,    r16                 ; aa
+     wmov    r24,    r16                 ; ss = FP + 1
+     subi    r16,    lo8(-F7_SIZEOF)
+     sbci    r17,    hi8(-F7_SIZEOF)
+     wmov    r22,    r16                 ; cc = FP + 1 + F7_SIZEOF
+     XCALL   F7_NAME (sincos)
+ 
+     ;; double R18 = get_double (cc)
+     wmov    r24,    r16
+     XCALL   F7_NAME (get_double)
+     wmov    XL,     r14                 ; double *pcos
+     rcall   store.r18.X                 ; *pcos = R18
+ 
+     ;; double R18 = get_double (ss)
+     wmov    r24,    Y
+     XCALL   F7_NAME (get_double)
+     ldd     XL,     Y + n_frame + 3     ; Saved R16
+     ldd     XH,     Y + n_frame + 2     ; Saved R17
+     rcall   store.r18.X                 ; *psin = R18
+ 
+     do_epilogue_restores n_pushed, n_frame
+ 
+ store.r18.X:
+     st      X+,     r18
+     st      X+,     r19
+     st      X+,     r20
+     st      X+,     r21
+     st      X+,     r22
+     st      X+,     r23
+     st      X+,     r24
+     st      X+,     r25
+     ret
+ _ENDF __sincos
+ #endif /* F7MOD_D_sincos_ */
+ 
  #ifdef F7MOD_call_dd_
  
  ;; Provide double wrappers for functions that operate on f7_t and get f7_t*.
*************** _DEFUN __powidf2
*** 1894,1897 ****
--- 2195,2471 ----
  _ENDF __powidf2
  #endif /* F7MOD_D_powi_ */
  
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Fixed-point -> double conversions.
+ 
+ ;;; The double exponent starts at bit 52 since the encoded mantissa has 52 bits.
+ ;;; Note that when X is a multiple of 16, then dex_lo(x) evaluates to 0.
+ #define DEX16(x)  (x) << (52 - 48)
+ #define dex_lo(x) lo8 (DEX16 (x))
+ #define dex_hi(x) hi8 (DEX16 (x))
+ 
+ #ifdef F7MOD_usa2D_
+ _DEFUN __fractusadf
+     ;; Convert USI to DF.
+     XCALL   __floatunsidf
+     ;; The MSB indicates a value of 0.
+     cpse    r25, __zero_reg__
+     ;; Divide non-zero values by 2^16 in order to adjust for FBIT = 16.
+     subi    r25, dex_hi (16)
+     ret
+ _ENDF __fractusadf
+ #endif /* F7MOD_usa2D_ */
+ 
+ #ifdef F7MOD_sa2D_
+ _DEFUN __fractsadf
+     ;; Convert SI to DF.
+     XCALL   __floatsidf
+     ;; The MSB indicates a value of 0.
+     tst     r25
+     breq 0f
+     ;; Divide non-zero values by 2^15 in order to adjust for FBIT = 15.
+     subi    r24, dex_lo (15)
+     sbci    r25, dex_hi (15)
+ 0:  ret
+ _ENDF __fractsadf
+ #endif /* F7MOD_sa2D_ */
+ 
+ #ifdef F7MOD_uha2D_
+ _DEFUN __fractuhadf
+     ;; Extend UHA to USA.
+     clr     r22
+     mov     r23, r24
+     mov     r24, r25
+     clr     r25
+     XJMP    __fractusadf
+ _ENDF __fractuhadf
+ #endif /* F7MOD_uha2D_ */
+ 
+ #ifdef F7MOD_ha2D_
+ _DEFUN __fracthadf
+     ;; Extend HA to SA.
+     clr     r22
+     mov     r23, r24
+     mov     r24, r25
+     lsl     r25
+     sbc     r25, r25
+     XJMP    __fractsadf
+ _ENDF __fracthadf
+ #endif /* F7MOD_ha2D_ */
+ 
+ 
+ #ifdef F7MOD_usq2D_
+ _DEFUN __fractusqdf
+     ;; Convert USI to DF.
+     XCALL   __floatunsidf
+     ;; The MSB indicates a value of 0.
+     cpse    r25, __zero_reg__
+     ;; Divide non-zero values by 2^32 in order to adjust for FBIT = 32.
+     subi    r25, dex_hi (32)
+     ret
+ _ENDF __fractusqdf
+ #endif /* F7MOD_usq2D_ */
+ 
+ #ifdef F7MOD_sq2D_
+ _DEFUN __fractsqdf
+     ;; Convert SI to DF.
+     XCALL   __floatsidf
+     ;; The MSB indicates a value of 0.
+     tst     r25
+     breq 0f
+     ;; Divide non-zero values by 2^31 in order to adjust for FBIT = 31.
+     subi    r24, dex_lo (31)
+     sbci    r25, dex_hi (31)
+ 0:  ret
+ _ENDF __fractsqdf
+ #endif /* F7MOD_sq2D_ */
+ 
+ #ifdef F7MOD_uqq2D_
+ _DEFUN __fractuqqdf
+     ;; Extend UQQ to UHQ.
+     mov     r25, r24
+     clr     r24
+ _LABEL __fractuhqdf
+     ;; Extend UHQ to USQ.
+     clr     r23
+     clr     r22
+     XJMP    __fractusqdf
+ _ENDF __fractuqqdf
+ #endif /* F7MOD_uqq2D_ */
+ 
+ #ifdef F7MOD_qq2D_
+ _DEFUN __fractqqdf
+     ;; Extend QQ to HQ.
+     mov     r25, r24
+     clr     r24
+ _LABEL __fracthqdf
+     ;; Extend HQ to SQ.
+     clr     r23
+     clr     r22
+     XJMP    __fractsqdf
+ _ENDF __fractqqdf
+ #endif /* F7MOD_qq2D_ */
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; Fixed-point -> double conversions.
+ 
+ #ifdef F7MOD_D2qq_
+ _DEFUN __fractdfqq
+     ;; Multiply with 2^{24+7} to get a QQ result in r25.
+     subi    r24, dex_lo (-31)
+     sbci    r25, dex_hi (-31)
+     XCALL   __fixdfsi
+     mov     r24, r25
+     ret
+ _ENDF __fractdfqq
+ #endif /* F7MOD_D2qq_ */
+ 
+ #ifdef F7MOD_D2uqq_
+ _DEFUN __fractdfuqq
+     ;; Multiply with 2^{24+8} to get a UQQ result in r25.
+     subi    r25, dex_hi (-32)
+     XCALL   __fixunsdfsi
+     mov     r24, r25
+     ret
+ _ENDF __fractdfuqq
+ #endif /* F7MOD_D2uqq_ */
+ 
+ #ifdef F7MOD_D2ha_
+ _DEFUN __fractdfha
+     ;; Multiply with 2^{16+7} to get a HA result in r25:r24
+     subi    r24, dex_lo (-23)
+     sbci    r25, dex_hi (-23)
+     XJMP    __fixdfsi
+ _ENDF __fractdfha
+ #endif /* F7MOD_D2ha_ */
+ 
+ #ifdef F7MOD_D2uha_
+ _DEFUN __fractdfuha
+     ;; Multiply with 2^24 to get a UHA result in r25:r24.
+     subi    r24, dex_lo (-24)
+     sbci    r25, dex_hi (-24)
+     XJMP    __fixunsdfsi
+ _ENDF __fractdfuha
+ #endif /* F7MOD_D2uha_ */
+ 
+ #ifdef F7MOD_D2hq_
+ _DEFUN __fractdfhq
+     ;; Multiply with 2^{16+15} to get a HQ result in r25:r24
+     ;; resp. with 2^31 to get a SQ result in r25:r22.
+ _LABEL __fractdfsq
+     subi    r24, dex_lo (-31)
+     sbci    r25, dex_hi (-31)
+     XJMP    __fixdfsi
+ _ENDF __fractdfhq
+ #endif /* F7MOD_D2hq_ */
+ 
+ #ifdef F7MOD_D2uhq_
+ _DEFUN __fractdfuhq
+     ;; Multiply with 2^{16+16} to get a UHQ result in r25:r24
+     ;; resp. with 2^32 to get a USQ result in r25:r22.
+ _LABEL  __fractdfusq
+     subi    r25, dex_hi (-32)
+     XJMP    __fixunsdfsi
+ _ENDF __fractdfuhq
+ #endif /* F7MOD_D2uhq_ */
+ 
+ #ifdef F7MOD_D2sa_
+ _DEFUN __fractdfsa
+     ;; Multiply with 2^15 to get a SA result in r25:r22.
+     subi    r24, dex_lo (-15)
+     sbci    r25, dex_hi (-15)
+     XJMP    __fixdfsi
+ _ENDF __fractdfsa
+ #endif /* F7MOD_D2sa_ */
+ 
+ #ifdef F7MOD_D2usa_
+ _DEFUN __fractdfusa
+     ;; Multiply with 2^16 to get a USA result in r25:r22.
+     subi    r25, dex_hi (-16)
+     XJMP    __fixunsdfsi
+ _ENDF __fractdfusa
+ #endif /* F7MOD_D2usa_ */
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;; [u]int32_t -> double conversions.
+ 
+ ;; double __floatsidf (int32_t);
+ #ifdef F7MOD_D_floatsidf_
+ _DEFUN __floatsidf
+     bst     r25, 7
+     brtc    0f
+     XCALL   __negsi2
+ 0:  XJMP    __floatunsidf.ge0
+ _ENDF __floatsidf
+ #endif /* F7MOD_D_floatsidf_ */
+ 
+ ;; double __floatunsidf (uint32_t);
+ #ifdef F7MOD_D_floatunsidf_
+ _DEFUN __floatunsidf
+     clt
+ _LABEL __floatunsidf.ge0
+     ;; Zero-extend SI at the low end.
+     clr     r18
+     clr     r19
+     wmov    r20,    r18
+     ;; Input is zero?
+     sbiw    r24,    0
+     sbci    r23,    0
+     sbci    r22,    0
+     breq 9f
+     ;; No: The double exponent of 0x80000000 is 31 plus a bias of 1023.
+     ;; Align the SI value such that the MSBit is as R25.4.
+     ;; For each << we have to subtract 1 from the exponent, and for
+     ;; each >> we have to add 1.  Since we want the MSB in R25.4 and
+     ;; not in R25.7, the initial exponent must be reduced by 3.
+     ldi     Xl,     dex_lo (31 + 1023 - 3)
+     ldi     Xh,     dex_hi (31 + 1023 - 3)
+     ;; Move the MSByte to R25.
+ 1:  tst     r25
+     brne 2f
+     subi    Xl,     dex_lo (8)
+     sbci    Xh,     dex_hi (8)
+     mov     r25,    r24
+     mov     r24,    r23
+     mov     r23,    r22
+     clr     r22
+     rjmp    1b
+ 2:  ;; Now we have R25 != 0.
+     cpi     r25,    0x20
+     brlo 3f
+     adiw    Xl,     DEX16 (1)
+     lsr     r25
+     ror     r24
+     ror     r23
+     ror     r22
+     ror     r21
+     rjmp 2b
+ 3:  cpi     r25,    0x10
+     brsh 4f
+     sbiw    Xl,     DEX16 (1)
+     lsl     r22
+     rol     r23
+     rol     r24
+     rol     r25
+     rjmp 3b
+ 4:  ;; Move the mantissa into place and clear the redundant leading 1.
+     cbr     r25,    0x10
+     mov     r20,    r21
+     mov     r21,    r22
+     mov     r22,    r23
+     mov     r23,    r24
+     mov     r24,    r25
+     ;; Insert the biased exponent.
+     or      r24,    Xl
+     mov     r25,    Xh
+     ;; Insert the sign.
+     bld     r25,    7
+ 9:  ret
+ _ENDF __floatunsidf
+ #endif /* F7MOD_D_floatunsidf_ */
+ 
+ 
  #endif /* !AVR_TINY */
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/libf7-common.mk gcc-14-20251010/libgcc/config/avr/libf7/libf7-common.mk
*** gcc-14-20251003/libgcc/config/avr/libf7/libf7-common.mk	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/libf7-common.mk	Fri Oct 10 22:33:06 2025
*************** F7_C_PARTS += set_float get_float get_do
*** 8,14 ****
  F7_C_PARTS += fabs neg fmin fmax minmax truncx trunc floor ceil round lround
  F7_C_PARTS += horner logx log log10 log2 exp pow10 pow powi
  F7_C_PARTS += sin cos tan cotan sincos sinh cosh tanh sinhcosh
! F7_C_PARTS += asinacos asin acos atan atan2
  F7_C_PARTS += abscmp_msb_ge cmp cmp_abs cmp_unordered
  
  F7_C_PARTS += const_1 const_1_2 const_1_3
--- 8,14 ----
  F7_C_PARTS += fabs neg fmin fmax minmax truncx trunc floor ceil round lround
  F7_C_PARTS += horner logx log log10 log2 exp pow10 pow powi
  F7_C_PARTS += sin cos tan cotan sincos sinh cosh tanh sinhcosh
! F7_C_PARTS += asinacos asin acos atan atan2 fdim
  F7_C_PARTS += abscmp_msb_ge cmp cmp_abs cmp_unordered
  
  F7_C_PARTS += const_1 const_1_2 const_1_3
*************** F7_ASM_PARTS += addsub_mant_scaled store
*** 22,40 ****
  F7_ASM_PARTS += to_integer to_unsigned clz normalize_with_carry normalize
  F7_ASM_PARTS += store_expo sqrt16 sqrt_approx div
  
! F7_ASM_PARTS += D_class D_fma D_powi
  F7_ASM_PARTS += D_isnan D_isinf D_isfinite D_signbit D_copysign D_neg D_fabs
  
  F7_ASM_PARTS += call_dd call_ddd
  
  # Stuff that will be wrapped in f7-wraps.h (included by libf7-asm.sx)
  # and give f7_asm_D_*.o modules.
  g_ddd += add sub mul div
! g_xdd_cmp += le lt ge gt ne eq unord
! g_dx += floatunsidf floatsidf extendsfdf2
  g_xd += fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
  
! m_ddd += pow fmin fmax fmod hypot atan2
  m_ddx += ldexp frexp
  m_dd += sqrt cbrt exp exp10 pow10 log log10 log2 sin cos tan cotan asin acos atan
  m_dd += ceil floor trunc round sinh cosh tanh
--- 22,52 ----
  F7_ASM_PARTS += to_integer to_unsigned clz normalize_with_carry normalize
  F7_ASM_PARTS += store_expo sqrt16 sqrt_approx div
  
! F7_ASM_PARTS += D_class D_fma D_powi D_sincos
  F7_ASM_PARTS += D_isnan D_isinf D_isfinite D_signbit D_copysign D_neg D_fabs
+ F7_ASM_PARTS += D_cmp D_eq D_ne D_ge D_gt D_le D_lt D_unord D_fminfmax
  
  F7_ASM_PARTS += call_dd call_ddd
  
+ # Fixed-point -> double conversions
+ F7_ASM_PARTS += qq2D uqq2D            sq2D usq2D
+ F7_ASM_PARTS +=            ha2D uha2D sa2D usa2D
+ 
+ # Double -> fixed-point conversions
+ F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq
+ F7_ASM_PARTS +=            D2ha D2uha D2sa D2usa
+ 
+ # Integer -> double conversions
+ F7_ASM_PARTS += D_floatsidf D_floatunsidf
+ 
  # Stuff that will be wrapped in f7-wraps.h (included by libf7-asm.sx)
  # and give f7_asm_D_*.o modules.
  g_ddd += add sub mul div
! g_xdd_cmp +=
! g_dx += extendsfdf2
  g_xd += fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
  
! m_ddd += pow fmod hypot atan2 fdim
  m_ddx += ldexp frexp
  m_dd += sqrt cbrt exp exp10 pow10 log log10 log2 sin cos tan cotan asin acos atan
  m_dd += ceil floor trunc round sinh cosh tanh
*************** F7F += lrint ldexp frexp exp logx log lo
*** 59,65 ****
  F7F += minmax fmax fmin floor ceil round lround trunc truncx
  F7F += horner pow10 exp10 pow powi
  F7F += sin cos tan cotan sincos sinh cosh tanh sinhcosh
! F7F += asinacos asin acos atan atan2
  F7F += mul_noround sqrt16_round sqrt16_floor
  F7F += clr_mant_lsbs abscmp_msb_ge lshrdi3 ashldi3
  F7F += assert
--- 71,77 ----
  F7F += minmax fmax fmin floor ceil round lround trunc truncx
  F7F += horner pow10 exp10 pow powi
  F7F += sin cos tan cotan sincos sinh cosh tanh sinhcosh
! F7F += asinacos asin acos atan atan2 fdim
  F7F += mul_noround sqrt16_round sqrt16_floor
  F7F += clr_mant_lsbs abscmp_msb_ge lshrdi3 ashldi3
  F7F += assert
*************** F7F += set_eps set_1pow2
*** 82,88 ****
  
  # Renames for ALIASes without own module.
  F7F += min max exp10
! F7F += floatunsidf floatsidf extendsfdf2
  F7F += fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
  
  # Renames for f7-const.def.
--- 94,100 ----
  
  # Renames for ALIASes without own module.
  F7F += min max exp10
! F7F += extendsfdf2
  F7F += fixdfsi fixdfdi fixunsdfdi fixunsdfsi truncdfsf2
  
  # Renames for f7-const.def.
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/libf7.c gcc-14-20251010/libgcc/config/avr/libf7/libf7.c
*** gcc-14-20251003/libgcc/config/avr/libf7/libf7.c	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/libf7.c	Fri Oct 10 22:33:06 2025
*************** f7_t* f7_set_s32 (f7_t *cc, int32_t i32)
*** 207,213 ****
    cc->flags = flags;
    return cc;
  }
- ALIAS (f7_set_s32, f7_floatsidf)
  #endif // F7MOD_set_s32_
  
  
--- 207,212 ----
*************** f7_t* f7_set_u32 (f7_t *cc, uint32_t u32
*** 219,225 ****
    cc->expo = 31;
    return f7_normalize_asm (cc);
  }
- ALIAS (f7_set_u32, f7_floatunsidf)
  #endif // F7MOD_set_u32_
  
  
--- 218,223 ----
*************** void f7_sub (f7_t *cc, const f7_t *aa, c
*** 918,923 ****
--- 916,936 ----
  #endif // F7MOD_sub_
  
  
+ #ifdef F7MOD_fdim_
+ F7_WEAK
+ void f7_fdim (f7_t *cc, const f7_t *aa, const f7_t *bb)
+ {
+   int8_t cmp = f7_cmp_unordered (aa, bb, true /*with_sign*/);
+   if (cmp == INT8_MIN)
+     return f7_set_nan (cc);
+   if (cmp < 0)
+     return f7_clr (cc);
+ 
+   f7_sub (cc, aa, bb);
+ }
+ #endif // F7MOD_fdim_
+ 
+ 
  #ifdef F7MOD_addsub_
  static void return_with_sign (f7_t *cc, const f7_t *aa, int8_t c_sign)
  {
diff -Nrcpad gcc-14-20251003/libgcc/config/avr/libf7/libf7.h gcc-14-20251010/libgcc/config/avr/libf7/libf7.h
*** gcc-14-20251003/libgcc/config/avr/libf7/libf7.h	Fri Oct  3 22:33:40 2025
--- gcc-14-20251010/libgcc/config/avr/libf7/libf7.h	Fri Oct 10 22:33:06 2025
*************** extern void f7_cos (f7_t*, const f7_t*);
*** 608,613 ****
--- 608,614 ----
  extern void f7_tan (f7_t*, const f7_t*);
  extern void f7_atan (f7_t*, const f7_t*);
  extern void f7_atan2 (f7_t*, const f7_t*, const f7_t*);
+ extern void f7_fdim (f7_t*, const f7_t*, const f7_t*);
  extern void f7_asin (f7_t*, const f7_t*);
  extern void f7_acos (f7_t*, const f7_t*);
  extern void f7_tanh (f7_t*, const f7_t*);
diff -Nrcpad gcc-14-20251003/libstdc++-v3/ChangeLog gcc-14-20251010/libstdc++-v3/ChangeLog
*** gcc-14-20251003/libstdc++-v3/ChangeLog	Fri Oct  3 22:33:46 2025
--- gcc-14-20251010/libstdc++-v3/ChangeLog	Fri Oct 10 22:33:24 2025
***************
*** 1,3 ****
--- 1,9 ----
+ 2025-10-06  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/122168
+ 	* testsuite/20_util/ratio/operations/ops_overflow_neg.cc: Add
+ 	dg-error for additional error seen with -Wsystem-headers.
+ 
  2025-10-01  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20251003/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc gcc-14-20251010/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
*** gcc-14-20251003/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc	Fri Oct  3 22:33:48 2025
--- gcc-14-20251010/libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc	Fri Oct 10 22:33:25 2025
*************** test02()
*** 48,52 ****
--- 48,53 ----
  // { dg-error "overflow in multiplication" "" { target *-*-* } 105 }
  // { dg-error "overflow in constant expression" "" { target *-*-* } 0 }
  // { dg-error "narrowing conversion" "" { target *-*-* } 0 }
+ // { dg-error "overflow in expression" "" { target *-*-* } 112 }
  // { dg-prune-output "out of range" }
  // { dg-prune-output "not usable in a constant expression" }
