diff -Nrcpad gcc-14-20260730/LAST_UPDATED gcc-14-20260806/LAST_UPDATED
*** gcc-14-20260730/LAST_UPDATED	Thu Jul 30 22:32:22 2026
--- gcc-14-20260806/LAST_UPDATED	Thu Aug  6 22:32:21 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-14 revision bd236a3b41d5292c47dd239e187580db2464440f
--- 1 ----
! Obtained from git: releases/gcc-14 revision e57597862659f77a7ee1f934a7d5a36f44c6bae8
diff -Nrcpad gcc-14-20260730/MD5SUMS gcc-14-20260806/MD5SUMS
*** gcc-14-20260730/MD5SUMS	Thu Jul 30 22:32:27 2026
--- gcc-14-20260806/MD5SUMS	Thu Aug  6 22:32:25 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-14-20260730.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-20260806.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
*************** d32239bcb673463ab874e80d47fae504  COPYIN
*** 23,29 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 403417498fd9bab7ac2e52bdfa764312  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
--- 23,29 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! c975fc6c36b459dbf310df2b8158ed4e  LAST_UPDATED
  1671040823f8eb8436a06fdd18065e02  MAINTAINERS
  304c3887135aefa27c21292ec585b0a3  Makefile.def
  8dd93fbf2e32bcbd2faba10e3b8ba2b0  Makefile.in
*************** dc52c51af1f9b66c50b2cf01afeee11d  gcc/BA
*** 505,511 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 26df853c613e2008566a82fd85d4192c  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
! e4eeca03c97faf8f2e34ae65f25af31d  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
! 1013e7ed2d6bf54c87dd14c18974e564  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
! 4241c4c113da4352e24de962a325bd1f  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** ad007817aa7619a468ed1170813b6db5  gcc/an
*** 3129,3135 ****
  20cf893a8e7f88fef7aa563cfe69aacf  gcc/analyzer/varargs.cc
  733d03ce2ca95a5f394a941608eceacd  gcc/analyzer/varargs.dot
  a5d1710bd0815aedfadf000a59e4e6e8  gcc/array-traits.h
! 74d6156c3360be89d615412f3072fc2c  gcc/asan.cc
  5cd39cb21293297fd59456f58fd96a63  gcc/asan.h
  41363d1e7b0909805289fb8a9fa0d421  gcc/attr-fnspec.h
  1db285d3f372c074b1a97d80f047c148  gcc/attribs.cc
--- 3129,3135 ----
  20cf893a8e7f88fef7aa563cfe69aacf  gcc/analyzer/varargs.cc
  733d03ce2ca95a5f394a941608eceacd  gcc/analyzer/varargs.dot
  a5d1710bd0815aedfadf000a59e4e6e8  gcc/array-traits.h
! f5d8b9842502ffdca13ce9f6df382e4a  gcc/asan.cc
  5cd39cb21293297fd59456f58fd96a63  gcc/asan.h
  41363d1e7b0909805289fb8a9fa0d421  gcc/attr-fnspec.h
  1db285d3f372c074b1a97d80f047c148  gcc/attribs.cc
*************** a4714f98b53e073b615a5d93fe6fdba9  gcc/co
*** 4051,4057 ****
  897e293401e4dea789e26918f76f414d  gcc/config/i386/i386-c.cc
  fbc24076c7e09cff381fd3713e0e35b8  gcc/config/i386/i386-d.cc
  bc57c8d6121c70b7f671f4551d518806  gcc/config/i386/i386-d.h
! ff2f7e233732dce4a79fa7ad9685cde1  gcc/config/i386/i386-expand.cc
  aad6a1409988666a85b150e3fe82bb3e  gcc/config/i386/i386-expand.h
  5580cf7a1c9325867e3e62112532e650  gcc/config/i386/i386-features.cc
  fccc6d65638a2ce66ebc6b06766912c2  gcc/config/i386/i386-features.h
--- 4051,4057 ----
  897e293401e4dea789e26918f76f414d  gcc/config/i386/i386-c.cc
  fbc24076c7e09cff381fd3713e0e35b8  gcc/config/i386/i386-d.cc
  bc57c8d6121c70b7f671f4551d518806  gcc/config/i386/i386-d.h
! 24abbcceb45f78846c62f842b5546cc9  gcc/config/i386/i386-expand.cc
  aad6a1409988666a85b150e3fe82bb3e  gcc/config/i386/i386-expand.h
  5580cf7a1c9325867e3e62112532e650  gcc/config/i386/i386-features.cc
  fccc6d65638a2ce66ebc6b06766912c2  gcc/config/i386/i386-features.h
*************** dce7dac7e905ada28c6563d930b531eb  gcc/fo
*** 5874,5880 ****
  b954a317257afa3149e46a5bce58d9c2  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! 510a23566148d908c64cb4195bdce026  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5874,5880 ----
  b954a317257afa3149e46a5bce58d9c2  gcc/fold-const.cc
  62f9c541bc34eb653f289ecd29c7848a  gcc/fold-const.h
  5cce8057cb6a40c0ce23fcd6497d35c0  gcc/fold-mem-offsets.cc
! bd8ec6ee89fed674976f37e664789e12  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** c4bd3bd07738a9a85beae142aa8054e3  gcc/fo
*** 5918,5926 ****
  fb3b0f1414056b23597f5e270a953409  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  8e370801f4b220b49e7bc0024382e8b7  gcc/fortran/error.cc
! bc1f18ba2210cae506aafc11286af0e6  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
! 9398ad939dcc6b0a2300a8f78cd9e8d8  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
  21286a817891898ac50a2b843007652d  gcc/fortran/gfc-internals.texi
  c4a213d76d236acb33bf86ba3c71e93d  gcc/fortran/gfortran.h
--- 5918,5926 ----
  fb3b0f1414056b23597f5e270a953409  gcc/fortran/dependency.h
  af59533c4bfc13e7b07e6ec1c164832c  gcc/fortran/dump-parse-tree.cc
  8e370801f4b220b49e7bc0024382e8b7  gcc/fortran/error.cc
! ff462dcdae49740cf86a48132dd28062  gcc/fortran/expr.cc
  5790e4e2fb5a21288fcb647a0dca23c4  gcc/fortran/f95-lang.cc
! a005d3637599acc7036b7801fd26fe78  gcc/fortran/frontend-passes.cc
  f12471f71a85ea43d5295d1190faf890  gcc/fortran/gfc-diagnostic.def
  21286a817891898ac50a2b843007652d  gcc/fortran/gfc-internals.texi
  c4a213d76d236acb33bf86ba3c71e93d  gcc/fortran/gfortran.h
*************** e11d0a72564cc6ee2349354a27e269ac  gcc/gi
*** 6064,6070 ****
  2c9bf44778a0d4078822e0867f454d35  gcc/gimple-harden-conditionals.cc
  c7112787b043c022d8874ce63d5b7a10  gcc/gimple-harden-control-flow.cc
  7b9c652a539854b936cc26f338cbb75d  gcc/gimple-if-to-switch.cc
! 224b3669ba4bbfa6c9493f47603df324  gcc/gimple-isel.cc
  a81f7f0172ce4eb3ca285e0cc9ddbd68  gcc/gimple-iterator.cc
  1a7fa33c9fca25ddfbd2d1424ee5a53a  gcc/gimple-iterator.h
  15643e1e01d585f6452ec246a61a2053  gcc/gimple-laddress.cc
--- 6064,6070 ----
  2c9bf44778a0d4078822e0867f454d35  gcc/gimple-harden-conditionals.cc
  c7112787b043c022d8874ce63d5b7a10  gcc/gimple-harden-control-flow.cc
  7b9c652a539854b936cc26f338cbb75d  gcc/gimple-if-to-switch.cc
! d0e0ebc4794d078a382c2b3d5c060b10  gcc/gimple-isel.cc
  a81f7f0172ce4eb3ca285e0cc9ddbd68  gcc/gimple-iterator.cc
  1a7fa33c9fca25ddfbd2d1424ee5a53a  gcc/gimple-iterator.h
  15643e1e01d585f6452ec246a61a2053  gcc/gimple-laddress.cc
*************** f3cd4a37afdd5c50fd88f8bea73656f2  gcc/gi
*** 6073,6079 ****
  9061d044f3fa87c56e4207cfed15dbd4  gcc/gimple-loop-versioning.cc
  5aa7e08e0bae2dfcbc188dcbbf48e035  gcc/gimple-low.cc
  1011dfdbac8762024379fe999e10572d  gcc/gimple-low.h
! d40523ea5db6129ba4a36bf936541cb6  gcc/gimple-lower-bitint.cc
  0da9234d337390e5ca66679b3e055deb  gcc/gimple-lower-bitint.h
  77bf05ef21f77c3ea4b0b145cd57240b  gcc/gimple-match-exports.cc
  9abca7865ad0fa60c0d19e6acebba08e  gcc/gimple-match-head.cc
--- 6073,6079 ----
  9061d044f3fa87c56e4207cfed15dbd4  gcc/gimple-loop-versioning.cc
  5aa7e08e0bae2dfcbc188dcbbf48e035  gcc/gimple-low.cc
  1011dfdbac8762024379fe999e10572d  gcc/gimple-low.h
! e973316cf5b2f5f90dda99dd59cd6f84  gcc/gimple-lower-bitint.cc
  0da9234d337390e5ca66679b3e055deb  gcc/gimple-lower-bitint.h
  77bf05ef21f77c3ea4b0b145cd57240b  gcc/gimple-match-exports.cc
  9abca7865ad0fa60c0d19e6acebba08e  gcc/gimple-match-head.cc
*************** c4df74d81805c4bd5129d36bb2a68562  gcc/gi
*** 6129,6135 ****
  a258d10df4637ff8630240180753d325  gcc/gimple.h
  b3e54b7b3aedffdb3afbd50b4f98e51b  gcc/gimplify-me.cc
  85e953ee7730a9690d8c9449d974b5c9  gcc/gimplify-me.h
! 3b5b3871fb0ce233eecb0abc50fdeb52  gcc/gimplify.cc
  8f261c08379d1ad7b5ca607ff26ae1fb  gcc/gimplify.h
  82fc433faa62fad9f37c79e38dc2bf1c  gcc/ginclude/float.h
  f792d34f340e2e7a7655cf10325a519d  gcc/ginclude/iso646.h
--- 6129,6135 ----
  a258d10df4637ff8630240180753d325  gcc/gimple.h
  b3e54b7b3aedffdb3afbd50b4f98e51b  gcc/gimplify-me.cc
  85e953ee7730a9690d8c9449d974b5c9  gcc/gimplify-me.h
! 916369faf6c87aa9894693bda009a373  gcc/gimplify.cc
  8f261c08379d1ad7b5ca607ff26ae1fb  gcc/gimplify.h
  82fc433faa62fad9f37c79e38dc2bf1c  gcc/ginclude/float.h
  f792d34f340e2e7a7655cf10325a519d  gcc/ginclude/iso646.h
*************** f9608e9005487c369e6c38949ab36fa1  gcc/m2
*** 7419,7425 ****
  d24a84209a835c9cd933ec6c0cd756a2  gcc/machmode.h
  db4aa18553273d5e513c430bdea3d79a  gcc/main.cc
  a209940893eb5d9d9edc9f1e0fa3a88d  gcc/make-unique.h
! 8a4fd44ef17d81bb8c29e18a54d2bd17  gcc/match.pd
  3eb7fce4670eed35821ef049a1488347  gcc/mcf.cc
  258cf9819c6a00e19b88c5a07c9b8991  gcc/mem-stats-traits.h
  b9810957b2a5920aa47c04774895c26b  gcc/mem-stats.h
--- 7419,7425 ----
  d24a84209a835c9cd933ec6c0cd756a2  gcc/machmode.h
  db4aa18553273d5e513c430bdea3d79a  gcc/main.cc
  a209940893eb5d9d9edc9f1e0fa3a88d  gcc/make-unique.h
! 1a124145fc447b015acd84531a1b0be9  gcc/match.pd
  3eb7fce4670eed35821ef049a1488347  gcc/mcf.cc
  258cf9819c6a00e19b88c5a07c9b8991  gcc/mem-stats-traits.h
  b9810957b2a5920aa47c04774895c26b  gcc/mem-stats.h
*************** f6a5b259097198d66b14186f87695b46  gcc/pr
*** 7563,7569 ****
  15c1fef5c89feec6af5f61c909e35410  gcc/profile-count.h
  c65c577b485a33a088eeda9f4269a0de  gcc/profile.cc
  d9deb5fb04bc9bc87a486a5ccfbba806  gcc/profile.h
! d7e60ea24629e0e9a2be715e1da6d224  gcc/range-op-float.cc
  997ac266d2595ff4eebf8329161f81d8  gcc/range-op-mixed.h
  8ba824feefe86c2918eab3ecee628a5d  gcc/range-op-ptr.cc
  67ce46df5da5afd1294d814e8330c2e2  gcc/range-op.cc
--- 7563,7569 ----
  15c1fef5c89feec6af5f61c909e35410  gcc/profile-count.h
  c65c577b485a33a088eeda9f4269a0de  gcc/profile.cc
  d9deb5fb04bc9bc87a486a5ccfbba806  gcc/profile.h
! bce73ca04f8094cceac85aef10b711e1  gcc/range-op-float.cc
  997ac266d2595ff4eebf8329161f81d8  gcc/range-op-mixed.h
  8ba824feefe86c2918eab3ecee628a5d  gcc/range-op-ptr.cc
  67ce46df5da5afd1294d814e8330c2e2  gcc/range-op.cc
*************** e8a9eb01b9451a357155e7152df1c669  gcc/ta
*** 8062,8068 ****
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 990680d466fa606b40ce16a5480ba5b6  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 8062,8068 ----
  a05663c52c607143c607d3ecf1391979  gcc/targhooks.cc
  51d240e574a3f9ecec346d64a04ac634  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! b4ba1faddcd35aed44ecdf813a2f5b6f  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** c446cf331d60d19eea3950d7f444f8b3  gcc/te
*** 41292,41298 ****
--- 41292,41300 ----
  3fa6e340272f61c5b425b6a54732c94f  gcc/testsuite/gcc.dg/bitint-127.c
  a7f36d213cef759e44b1ea369391b70d  gcc/testsuite/gcc.dg/bitint-128.c
  aa6e262f1d508ec048e76ac4af6675a4  gcc/testsuite/gcc.dg/bitint-13.c
+ 1ed8e005daa6b40a0c9b7b239c98c8be  gcc/testsuite/gcc.dg/bitint-139.c
  e6db29256563268a3c327706e78c79a4  gcc/testsuite/gcc.dg/bitint-14.c
+ b76f22f76bafd555d897bb0b2bd338fa  gcc/testsuite/gcc.dg/bitint-141.c
  c748706240385773f27caba61cbbcbd8  gcc/testsuite/gcc.dg/bitint-15.c
  acfbe287f11e3faf0020cde57be42822  gcc/testsuite/gcc.dg/bitint-16.c
  5fe723ea15779d8c01ab2c2fd255acaf  gcc/testsuite/gcc.dg/bitint-17.c
*************** c24af1592de8918050b279c29b0300ce  gcc/te
*** 47096,47101 ****
--- 47098,47104 ----
  ab60b475998ea1ed92a9002d6336bfd6  gcc/testsuite/gcc.dg/pr125501.c
  bc5ddfbbc46f4e0cce1629d1b58d3090  gcc/testsuite/gcc.dg/pr12603.c
  72a2fca76cb69617ae36bab93c7ec0d7  gcc/testsuite/gcc.dg/pr12625-1.c
+ f3ad76ba5080e5c627e1d54c8e3fc967  gcc/testsuite/gcc.dg/pr126464.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
  86dc5cfaafafc79e11d0559d71baea6b  gcc/testsuite/gcc.dg/pr13804-1.c
  2a52cc05fb1415e0eafbc468a7ccc138  gcc/testsuite/gcc.dg/pr14092-1.c
*************** b17b4527a47b2b6306755793803b481f  gcc/te
*** 50024,50029 ****
--- 50027,50036 ----
  8e57ed5237e8f0f6918760eea643be09  gcc/testsuite/gcc.dg/torture/bitint-10.c
  c734177ecafb4719b93f00d1dab788d2  gcc/testsuite/gcc.dg/torture/bitint-101.c
  d21799d1355d134c49fbb279e9061c5d  gcc/testsuite/gcc.dg/torture/bitint-102.c
+ 4cd35e190f8a05b09f5f598b569b1b60  gcc/testsuite/gcc.dg/torture/bitint-103.c
+ 6ba65cff2455ee6dc281876d27829fa1  gcc/testsuite/gcc.dg/torture/bitint-104.c
+ ff8cf5c09693d848fab5f482d5bb2be3  gcc/testsuite/gcc.dg/torture/bitint-105.c
+ 8dbb47772e9818aa86f1d571c4503063  gcc/testsuite/gcc.dg/torture/bitint-106.c
  6e0edfd615730c144c767fcf9cebc844  gcc/testsuite/gcc.dg/torture/bitint-11.c
  70badd65fbc9d51f24c59244ff200b8c  gcc/testsuite/gcc.dg/torture/bitint-12.c
  d43d461c9733529f16abae58889c550b  gcc/testsuite/gcc.dg/torture/bitint-13.c
*************** e394027559c72da3f714e1f0bce86a7c  gcc/te
*** 50652,50657 ****
--- 50659,50665 ----
  16b777622562135656ac0ab96375cfb5  gcc/testsuite/gcc.dg/torture/pr124868.c
  fbe779467ae6f7cb7ee578922f1e8686  gcc/testsuite/gcc.dg/torture/pr125025.c
  13a26b482c0abe9bba6de7ad78d38472  gcc/testsuite/gcc.dg/torture/pr125774-1.c
+ 41ed1d0a724d4e7e08239b14b14a1043  gcc/testsuite/gcc.dg/torture/pr126464.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** a6cf066e6e502eee358c3db0aee78926  gcc/te
*** 54259,54264 ****
--- 54267,54273 ----
  3bb3d7147b5445fd4f17d2be28e5a317  gcc/testsuite/gcc.dg/ubsan/bitint-2.c
  199adf7daa04d85435a3c1a0995f955f  gcc/testsuite/gcc.dg/ubsan/bitint-3.c
  209487ed7251c08b5d467814d7e24249  gcc/testsuite/gcc.dg/ubsan/bitint-4.c
+ c66016f07e4c6af135d26f68b6ee23fb  gcc/testsuite/gcc.dg/ubsan/bitint-5.c
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
*************** f9c098fee9a454404b6c994c1b481bc0  gcc/te
*** 70563,70568 ****
--- 70572,70578 ----
  b2a5408a9b77cab42d5d95146250a38f  gcc/testsuite/gcc.target/i386/avx2-pr108599.c
  f6a4ee4d223cdf4463f296171468844c  gcc/testsuite/gcc.target/i386/avx2-pr114157.c
  1e455b321989ce8198e2a5cd0ab772ff  gcc/testsuite/gcc.target/i386/avx2-pr114783.c
+ a1410da90f646f82394ac1561d97a301  gcc/testsuite/gcc.target/i386/avx2-pr126446.c
  a544282846ec57648b2f38abf14119f0  gcc/testsuite/gcc.target/i386/avx2-pr51581-1.c
  46ffedd4e5e66cd46ad561ee8562eb7b  gcc/testsuite/gcc.target/i386/avx2-pr51581-2.c
  adf63582badc02467af57f768108628f  gcc/testsuite/gcc.target/i386/avx2-pr57233.c
*************** dcb4fe6d926f672dd118a4a8ec9b6625  gcc/te
*** 99040,99045 ****
--- 99050,99057 ----
  b1cb2c9a52574c2df5df49bd13ee7e5d  gcc/testsuite/gfortran.dg/pr120196.f90
  9aa1b21c93a3838e52245be748b9b301  gcc/testsuite/gfortran.dg/pr124161.f90
  5bfaeea8d13a5035cf46aaab485c2803  gcc/testsuite/gfortran.dg/pr124450.f90
+ d2d5151630bb11e6342143dc4afe5e96  gcc/testsuite/gfortran.dg/pr125866.f90
+ 79f761eaecad212ada45e8ca1650129e  gcc/testsuite/gfortran.dg/pr126303.f
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** e0bd9b8669e44ec6010f92da1d5188ad  libqua
*** 123547,123553 ****
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 6ab99ed50e87a53f40d8fa20b3b500bc  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  894b596d6d81ab8f2fb0708e8bc83e83  libsanitizer/LOCAL_PATCHES
--- 123559,123565 ----
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! be8b3e75c7cb095ea7e1dcc26f3b8a55  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
  894b596d6d81ab8f2fb0708e8bc83e83  libsanitizer/LOCAL_PATCHES
*************** fcdf88c4922b4bf531859f5e19f37f19  libsan
*** 124008,124014 ****
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
  ac99e2a1604f10691ceb3d4a4600d0ed  libsanitizer/tsan/tsan_sync.cpp
  6f7b135e2c27d09f0db426a5f7427966  libsanitizer/tsan/tsan_sync.h
! 8ca6a9e7f5c97b2069ca2eb034d7b61f  libsanitizer/tsan/tsan_trace.h
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
  5f66ec32201aa975081f4ec4905d1343  libsanitizer/tsan/tsan_vector_clock.h
  a579dd7891454b86a0c06d5cd95fe628  libsanitizer/ubsan/Makefile.am
--- 124020,124026 ----
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
  ac99e2a1604f10691ceb3d4a4600d0ed  libsanitizer/tsan/tsan_sync.cpp
  6f7b135e2c27d09f0db426a5f7427966  libsanitizer/tsan/tsan_sync.h
! f1ca5453760bb7bd86e35914eb6a4cc2  libsanitizer/tsan/tsan_trace.h
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
  5f66ec32201aa975081f4ec4905d1343  libsanitizer/tsan/tsan_vector_clock.h
  a579dd7891454b86a0c06d5cd95fe628  libsanitizer/ubsan/Makefile.am
*************** d828e38384c506bf5e7d5a3c02725a37  libssp
*** 124073,124079 ****
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 38dcaf1a872980bd8a1e0de9406b6c8d  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 124085,124091 ----
  7bb3c32ba0a48d1cf785305e1b783eb6  libssp/strncpy-chk.c
  a19c79c1d86436e86b0fee41e6cf6b15  libssp/vsnprintf-chk.c
  145156e880b03115b393070d0ed37be3  libssp/vsprintf-chk.c
! 1e550b228d10c53ad47f0bf5a0355f7a  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** d3813c41a1a392d3bd3fc819324240d4  libstd
*** 125816,125822 ****
  1a78ce3875810d2fbde4c0259e6da49c  libstdc++-v3/src/c++20/Makefile.in
  bc750f6d75cc3d48552863c2403f8857  libstdc++-v3/src/c++20/sstream-inst.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 59c47c266be6acb340eebc5d5a52ea78  libstdc++-v3/src/c++20/tzdb.cc
  5cda0f038c8a42d9ac9d35d23cac6c57  libstdc++-v3/src/c++20/tzdb_globals.h
  b65cec48a384351b09d3d7d12ee37660  libstdc++-v3/src/c++23/Makefile.am
  5405bc5d3053e91ab5f6209a6e20a377  libstdc++-v3/src/c++23/Makefile.in
--- 125828,125834 ----
  1a78ce3875810d2fbde4c0259e6da49c  libstdc++-v3/src/c++20/Makefile.in
  bc750f6d75cc3d48552863c2403f8857  libstdc++-v3/src/c++20/sstream-inst.cc
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
! 9b83422c522969d029dcab5a95bc023c  libstdc++-v3/src/c++20/tzdb.cc
  5cda0f038c8a42d9ac9d35d23cac6c57  libstdc++-v3/src/c++20/tzdb_globals.h
  b65cec48a384351b09d3d7d12ee37660  libstdc++-v3/src/c++23/Makefile.am
  5405bc5d3053e91ab5f6209a6e20a377  libstdc++-v3/src/c++23/Makefile.in
*************** a0be85b8053be995a48a4cfec6a5b675  libstd
*** 134957,134966 ****
  4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.cc
  4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  f6f08359417bfbb402eb9bddff78a6c1  libstdc++-v3/testsuite/std/time/syn_c++20.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! d041367e20c424ad627fce102335edd0  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
  177951f44d73c4d37968affebeee98f5  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
  3c922068cf98b21e732c0de16c319289  libstdc++-v3/testsuite/std/time/tzdb/1.cc
  c142573e06d5c52d53f0f20e1e72e973  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
--- 134969,134982 ----
  4547b0badce5668333f08490264f6870  libstdc++-v3/testsuite/std/time/parse/125369.cc
  4650244d174eff0342f84405e248bbfe  libstdc++-v3/testsuite/std/time/parse/parse.cc
  f6f08359417bfbb402eb9bddff78a6c1  libstdc++-v3/testsuite/std/time/syn_c++20.cc
+ 20a3aeab320cb801731b51309979937b  libstdc++-v3/testsuite/std/time/time_zone/116110.cc
+ e5f71dc7f2292314c0c9b06c3b8acf2e  libstdc++-v3/testsuite/std/time/time_zone/124513.cc
  f9d9d1cb483f1731762a8e5787c8020b  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! 5c55d9e35cb8c9c5e0a207bd53fa37d2  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
! 1e7ccd27fe0a3cf8d6428f6f2710fcb9  libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
  efdc68d548df15089ce510e6bf1c33c7  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
  105f0ca3c8074ef3b2c1751d37ec2b96  libstdc++-v3/testsuite/std/time/time_zone/sys_info_abbrev.cc
+ 57d3f5cb0b34d16a612546952b82dafa  libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
  177951f44d73c4d37968affebeee98f5  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
  3c922068cf98b21e732c0de16c319289  libstdc++-v3/testsuite/std/time/tzdb/1.cc
  c142573e06d5c52d53f0f20e1e72e973  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
*************** db2342ab5aa62775fcff2371992f119d  libstd
*** 134996,135002 ****
  87daeaa88e2f3d911785507d88a44563  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  c2f53197b596c13f15dfe63dd08f77dc  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! 728832c3eb4e89e18aaf1a2ed1be2271  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
  d959748416b21daaf2d235599ad8a5f4  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
--- 135012,135018 ----
  87daeaa88e2f3d911785507d88a44563  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
  c2f53197b596c13f15dfe63dd08f77dc  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
  e794c3c683b129a1bc27715ff3ee3b37  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! fa43bb38cebbbda727864c9b2ac9b67b  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
  6e26d84ca6efe0ea496ba2fcc8ee280b  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
  6abf80ca9a7f01e8d061066eecdd2022  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
  d959748416b21daaf2d235599ad8a5f4  libstdc++-v3/testsuite/std/time/zoned_time/io.cc
diff -Nrcpad gcc-14-20260730/gcc/ChangeLog gcc-14-20260806/gcc/ChangeLog
*** gcc-14-20260730/gcc/ChangeLog	Thu Jul 30 22:32:05 2026
--- gcc-14-20260806/gcc/ChangeLog	Thu Aug  6 22:32:05 2026
***************
*** 1,3 ****
--- 1,128 ----
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126504
+ 	* match.pd ((CST1 << A) == CST2 -> A == ctz (CST2) - ctz (CST1)):
+ 	If cand isn't representable in TREE_TYPE (@1), simplify to
+ 	cmp == NE_EXPR.
+ 	(((1 << n) & M) != 0 -> n == log2 (M)): Don't simplify if
+ 	log2 doesn't fit into TREE_TYPE (@0).
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126503
+ 	* gimple-lower-bitint.cc (bitint_large_huge::handle_plus_minus): If
+ 	IFN_ADDC/IFN_SUBC can't be used and rhs1_type is not the limb type
+ 	and is signed, perform both additions or both subtractions in
+ 	unsigned type for the rhs1_type and cast to rhs1_type at the end.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126497
+ 	* gimplify.cc (recalculate_side_effects): Return for
+ 	tcc_declaration.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126490
+ 	* match.pd ((a & b) == (a ^ b) -> !(a | b)): If @0 has
+ 	integral one bit precision type, use (convert:type ...) around the
+ 	bit_not just in case the comparison has a different result type
+ 	from the type of its operands.  Otherwise do that too but with
+ 	bit_not replaced with bit_xor with one of the appropriate type.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* range-op-float.cc (float_widen_lhs_range): Remove also_inf
+ 	argument, replace its uses as if it was always true.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126476
+ 	* match.pd (((C << A) & D) != 0 -> A == 0,
+ 	((C << A) & D) == 0 -> A != 0): Fold to false/true if
+ 	c1 - c2 resp. c2 - c1 doesn't fit into TREE_TYPE (@0).
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* range-op-float.cc (float_widen_lhs_range): Add also_inf argument
+ 	defaulted to false, if true, extend even lb of +inf and ub of -inf.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126084
+ 	* asan.cc (maybe_instrument_call): Don't instrument
+ 	BUILT_IN_ASAN_REPORT_{LOAD,STORE}{1,2,4,8,16,_N} builtins.
+ 	(initialize_sanitizer_builtins): Use
+ 	(*lang_hooks.types.type_for_mode) (ptr_mode, 0) instead of
+ 	pointer_sized_int_mode for PTRMODE arguments.
+ 	(asan_expand_poison_ifn): Likewise.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126471
+ 	* match.pd (parity(~X) is parity(X)): Only optimize this way
+ 	if element_precision is even, otherwise optimize into parity(X) ^ 1.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* gimple-isel.cc (gimple_expand_vec_set_extract_expr): Punt if
+ 	idx doesn't fit into poly_uint64 but is poly_int_tree_p.  Use
+ 	known_ge rather than known_gt for out of bounds check.  Formatting
+ 	fixes.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_set): If elt is
+ 	out of bounds, emit a no-op move.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126447
+ 	* gimple-lower-bitint.cc (gimple_lower_bitint): For
+ 	ifn calls with large/huge _BitInt (ab) SSA_NAME lhs if they
+ 	have such (ab) argument too, force it into temporary SSA_NAME
+ 	for IFN_UBSAN_CHECK_MUL.
+ 
  2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260730/gcc/DATESTAMP gcc-14-20260806/gcc/DATESTAMP
*** gcc-14-20260730/gcc/DATESTAMP	Thu Jul 30 22:32:05 2026
--- gcc-14-20260806/gcc/DATESTAMP	Thu Aug  6 22:32:05 2026
***************
*** 1 ****
! 20260730
--- 1 ----
! 20260806
diff -Nrcpad gcc-14-20260730/gcc/asan.cc gcc-14-20260806/gcc/asan.cc
*** gcc-14-20260730/gcc/asan.cc	Thu Jul 30 22:32:06 2026
--- gcc-14-20260806/gcc/asan.cc	Thu Aug  6 22:32:06 2026
*************** maybe_instrument_call (gimple_stmt_itera
*** 3024,3029 ****
--- 3024,3041 ----
  	    case BUILT_IN_UNREACHABLE:
  	    case BUILT_IN_UNREACHABLE_TRAP:
  	    case BUILT_IN_TRAP:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD1:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD2:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD4:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD8:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD16:
+ 	    case BUILT_IN_ASAN_REPORT_LOAD_N:
+ 	    case BUILT_IN_ASAN_REPORT_STORE1:
+ 	    case BUILT_IN_ASAN_REPORT_STORE2:
+ 	    case BUILT_IN_ASAN_REPORT_STORE4:
+ 	    case BUILT_IN_ASAN_REPORT_STORE8:
+ 	    case BUILT_IN_ASAN_REPORT_STORE16:
+ 	    case BUILT_IN_ASAN_REPORT_STORE_N:
  	      /* Don't instrument these.  */
  	      return false;
  	    default:
*************** initialize_sanitizer_builtins (void)
*** 3424,3429 ****
--- 3436,3442 ----
    if (builtin_decl_implicit_p (BUILT_IN_ASAN_INIT))
      return;
  
+   tree ptrmode_type = (*lang_hooks.types.type_for_mode) (ptr_mode, 0);
    tree BT_FN_VOID = build_function_type_list (void_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR
      = build_function_type_list (void_type_node, ptr_type_node, NULL_TREE);
*************** initialize_sanitizer_builtins (void)
*** 3437,3443 ****
  				ptr_type_node, ptr_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
! 				pointer_sized_int_node, NULL_TREE);
    tree BT_FN_VOID_INT
      = build_function_type_list (void_type_node, integer_type_node, NULL_TREE);
    tree BT_FN_SIZE_CONST_PTR_INT
--- 3450,3456 ----
  				ptr_type_node, ptr_type_node, NULL_TREE);
    tree BT_FN_VOID_PTR_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
! 				ptrmode_type, NULL_TREE);
    tree BT_FN_VOID_INT
      = build_function_type_list (void_type_node, integer_type_node, NULL_TREE);
    tree BT_FN_SIZE_CONST_PTR_INT
*************** initialize_sanitizer_builtins (void)
*** 3472,3478 ****
    tree BT_FN_VOID_PTR_UINT8_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
  				unsigned_char_type_node,
! 				pointer_sized_int_node, NULL_TREE);
  
    tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5];
    tree BT_FN_IX_CONST_VPTR_INT[5];
--- 3485,3491 ----
    tree BT_FN_VOID_PTR_UINT8_PTRMODE
      = build_function_type_list (void_type_node, ptr_type_node,
  				unsigned_char_type_node,
! 				ptrmode_type, NULL_TREE);
  
    tree BT_FN_BOOL_VPTR_PTR_IX_INT_INT[5];
    tree BT_FN_IX_CONST_VPTR_INT[5];
*************** asan_expand_poison_ifn (gimple_stmt_iter
*** 4224,4234 ****
  	{
  	  tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
  					&nargs);
  	  call = gimple_build_call (fun, nargs,
  				    build_fold_addr_expr (shadow_var),
  				    nargs == 2
! 				    ? fold_convert (pointer_sized_int_node,
! 						    size)
  				    : NULL_TREE);
  	}
        gimple_set_location (call, gimple_location (use));
--- 4237,4249 ----
  	{
  	  tree fun = report_error_func (store_p, recover_p, tree_to_uhwi (size),
  					&nargs);
+ 	  tree ptrmode_type
+ 	    = (nargs == 2 ? (*lang_hooks.types.type_for_mode) (ptr_mode, 0)
+ 	       : NULL_TREE);
  	  call = gimple_build_call (fun, nargs,
  				    build_fold_addr_expr (shadow_var),
  				    nargs == 2
! 				    ? fold_convert (ptrmode_type, size)
  				    : NULL_TREE);
  	}
        gimple_set_location (call, gimple_location (use));
diff -Nrcpad gcc-14-20260730/gcc/config/i386/i386-expand.cc gcc-14-20260806/gcc/config/i386/i386-expand.cc
*** gcc-14-20260730/gcc/config/i386/i386-expand.cc	Thu Jul 30 22:32:07 2026
--- gcc-14-20260806/gcc/config/i386/i386-expand.cc	Thu Aug  6 22:32:07 2026
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 17261,17266 ****
--- 17261,17271 ----
    machine_mode mmode = VOIDmode;
    rtx (*gen_blendm) (rtx, rtx, rtx, rtx);
  
+   if (!IN_RANGE (elt, 0, GET_MODE_NUNITS (mode)))
+     {
+       emit_move_insn (target, target);
+       return;
+     }
    switch (mode)
      {
      case E_V2SImode:
diff -Nrcpad gcc-14-20260730/gcc/fortran/ChangeLog gcc-14-20260806/gcc/fortran/ChangeLog
*** gcc-14-20260730/gcc/fortran/ChangeLog	Thu Jul 30 22:32:07 2026
--- gcc-14-20260806/gcc/fortran/ChangeLog	Thu Aug  6 22:32:07 2026
***************
*** 1,3 ****
--- 1,20 ----
+ 2026-08-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125866
+ 	* expr.cc (is_CFI_desc): Add check for proc_name.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/126303
+ 	* frontend-passes.cc (inner_loop_may_be_skipped): If inner loop iterator
+ 	is not integral, return true.
+ 
  2026-07-27  Thomas Koenig  <tkoenig@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260730/gcc/fortran/expr.cc gcc-14-20260806/gcc/fortran/expr.cc
*** gcc-14-20260730/gcc/fortran/expr.cc	Thu Jul 30 22:32:07 2026
--- gcc-14-20260806/gcc/fortran/expr.cc	Thu Aug  6 22:32:07 2026
*************** is_CFI_desc (gfc_symbol *sym, gfc_expr *
*** 1128,1134 ****
        && e && e->expr_type == EXPR_VARIABLE)
      sym = e->symtree->n.sym;
  
!   if (sym && sym->attr.dummy
        && sym->ns->proc_name->attr.is_bind_c
        && (sym->attr.pointer
  	  || sym->attr.allocatable
--- 1128,1134 ----
        && e && e->expr_type == EXPR_VARIABLE)
      sym = e->symtree->n.sym;
  
!   if (sym && sym->attr.dummy && sym->ns && sym->ns->proc_name
        && sym->ns->proc_name->attr.is_bind_c
        && (sym->attr.pointer
  	  || sym->attr.allocatable
diff -Nrcpad gcc-14-20260730/gcc/fortran/frontend-passes.cc gcc-14-20260806/gcc/fortran/frontend-passes.cc
*** gcc-14-20260730/gcc/fortran/frontend-passes.cc	Thu Jul 30 22:32:07 2026
--- gcc-14-20260806/gcc/fortran/frontend-passes.cc	Thu Aug  6 22:32:07 2026
*************** inner_loop_may_be_skipped (int loop_inde
*** 2816,2821 ****
--- 2816,2824 ----
        if (loop == NULL || loop->ext.iterator == NULL || loop->ext.iterator->var == NULL)
  	return true;
  
+       if (loop->ext.iterator->var->symtree->n.sym->ts.type != BT_INTEGER)
+ 	return true;
+ 
        if (!evaluate_loop_bound (loop->ext.iterator->step, outer_sym, outer_val, do_step))
  	return true;
  
diff -Nrcpad gcc-14-20260730/gcc/gimple-isel.cc gcc-14-20260806/gcc/gimple-isel.cc
*** gcc-14-20260730/gcc/gimple-isel.cc	Thu Jul 30 22:32:08 2026
--- gcc-14-20260806/gcc/gimple-isel.cc	Thu Aug  6 22:32:08 2026
*************** gimple_expand_vec_set_extract_expr (stru
*** 93,102 ****
      return false;
  
    tree op0 = TREE_OPERAND (ref, 0);
!   if (TREE_CODE (op0) == VIEW_CONVERT_EXPR && DECL_P (TREE_OPERAND (op0, 0))
        && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
!       && TYPE_MODE (TREE_TYPE (ref))
! 	   == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0)))))
      {
        tree pos = TREE_OPERAND (ref, 1);
  
--- 93,103 ----
      return false;
  
    tree op0 = TREE_OPERAND (ref, 0);
!   if (TREE_CODE (op0) == VIEW_CONVERT_EXPR
!       && DECL_P (TREE_OPERAND (op0, 0))
        && VECTOR_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
!       && (TYPE_MODE (TREE_TYPE (ref))
! 	  == TYPE_MODE (TREE_TYPE (TREE_TYPE (TREE_OPERAND (op0, 0))))))
      {
        tree pos = TREE_OPERAND (ref, 1);
  
*************** gimple_expand_vec_set_extract_expr (stru
*** 108,116 ****
        if (poly_int_tree_p (idx, &idx_poly))
  	{
  	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
! 	  if (known_gt (idx_poly, nelts))
  	    return false;
  	}
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
--- 109,121 ----
        if (poly_int_tree_p (idx, &idx_poly))
  	{
  	  poly_uint64 nelts = TYPE_VECTOR_SUBPARTS (TREE_TYPE (view_op0));
! 	  if (known_ge (idx_poly, nelts))
  	    return false;
  	}
+       else if (poly_int_tree_p (idx))
+ 	// if idx doesn't fit into poly_uint64, but is constant, it
+ 	// must be out of bounds
+ 	return false;
        machine_mode outermode = TYPE_MODE (TREE_TYPE (view_op0));
        machine_mode extract_mode = TYPE_MODE (TREE_TYPE (ref));
  
diff -Nrcpad gcc-14-20260730/gcc/gimple-lower-bitint.cc gcc-14-20260806/gcc/gimple-lower-bitint.cc
*** gcc-14-20260730/gcc/gimple-lower-bitint.cc	Thu Jul 30 22:32:08 2026
--- gcc-14-20260806/gcc/gimple-lower-bitint.cc	Thu Aug  6 22:32:08 2026
*************** bitint_large_huge::handle_plus_minus (tr
*** 1209,1224 ****
      }
    else
      {
!       tree in = add_cast (rhs1_type, data_in);
!       lhs = make_ssa_name (rhs1_type);
        g = gimple_build_assign (lhs, code, rhs1, rhs2);
        insert_before (g);
!       rhs1 = make_ssa_name (rhs1_type);
        g = gimple_build_assign (rhs1, code, lhs, in);
        insert_before (g);
        m_data[m_data_cnt] = NULL_TREE;
        m_data_cnt += 2;
!       return rhs1;
      }
    rhs1 = make_ssa_name (m_limb_type);
    g = gimple_build_assign (rhs1, REALPART_EXPR,
--- 1209,1235 ----
      }
    else
      {
!       /* Always perform the two additions or subtractions in
! 	 unsigned type, avoid introducing a temporary UB.  While
! 	 the end result of the 2 additions or 2 subtractions in
! 	 a valid program should not overflow, temporarily it can.
! 	 See PR126503.  */
!       tree utype = unsigned_type_for (rhs1_type);
!       tree in = add_cast (utype, data_in);
!       lhs = make_ssa_name (utype);
!       if (utype != rhs1_type)
! 	{
! 	  rhs1 = add_cast (utype, rhs1);
! 	  rhs2 = add_cast (utype, rhs2);
! 	}
        g = gimple_build_assign (lhs, code, rhs1, rhs2);
        insert_before (g);
!       rhs1 = make_ssa_name (utype);
        g = gimple_build_assign (rhs1, code, lhs, in);
        insert_before (g);
        m_data[m_data_cnt] = NULL_TREE;
        m_data_cnt += 2;
!       return utype != rhs1_type ? add_cast (rhs1_type, rhs1) : rhs1;
      }
    rhs1 = make_ssa_name (m_limb_type);
    g = gimple_build_assign (rhs1, REALPART_EXPR,
*************** gimple_lower_bitint (void)
*** 6440,6445 ****
--- 6451,6489 ----
  		add_phi_arg (phi, rhs2, e3, UNKNOWN_LOCATION);
  		break;
  	      }
+ 	  else if (SSA_NAME_OCCURS_IN_ABNORMAL_PHI (s)
+ 		   && is_gimple_call (stmt)
+ 		   && gimple_call_internal_p (stmt))
+ 	    switch (gimple_call_internal_fn (stmt))
+ 	      {
+ 	      case IFN_UBSAN_CHECK_MUL:
+ 		for (unsigned i = 0; i < gimple_call_num_args (stmt); ++i)
+ 		  {
+ 		    location_t loc = gimple_location (stmt);
+ 		    gsi = gsi_for_stmt (stmt);
+ 		    /* Similar case to multiplication/division with (ab)
+ 		       above for internal functions which set muldiv_p.  */
+ 		    tree arg = gimple_call_arg (stmt, i);
+ 		    if (TREE_CODE (arg) == SSA_NAME
+ 			&& SSA_NAME_OCCURS_IN_ABNORMAL_PHI (arg))
+ 		      {
+ 			first_large_huge = 0;
+ 			tree t = make_ssa_name (TREE_TYPE (arg));
+ 			g = gimple_build_assign (t, SSA_NAME, arg);
+ 			gsi_insert_before (&gsi, g, GSI_SAME_STMT);
+ 			gimple_set_location (g, loc);
+ 			gimple_call_set_arg (stmt, i, t);
+ 			if (i == 0
+ 			    && gimple_call_num_args (stmt) >= 2
+ 			    && gimple_call_arg (stmt, 1) == arg)
+ 			  gimple_call_set_arg (stmt, 1, t);
+ 			update_stmt (stmt);
+ 		      }
+ 		  }
+ 		break;
+ 	      default:
+ 		break;
+ 	      }
  	}
        /* We need to also rewrite stores of large/huge _BitInt INTEGER_CSTs
  	 into memory.  Such functions could have no large/huge SSA_NAMEs.  */
diff -Nrcpad gcc-14-20260730/gcc/gimplify.cc gcc-14-20260806/gcc/gimplify.cc
*** gcc-14-20260730/gcc/gimplify.cc	Thu Jul 30 22:32:08 2026
--- gcc-14-20260806/gcc/gimplify.cc	Thu Aug  6 22:32:08 2026
*************** recalculate_side_effects (tree t)
*** 3372,3377 ****
--- 3372,3384 ----
        /* No side-effects.  */
        return;
  
+     case tcc_declaration:
+       /* These can have side-effects if TREE_THIS_VOLATILE,
+ 	 but those should be set elsewhere, not in
+ 	 recalculate_side_effects.  Can be triggered e.g. if
+ 	 a comparison is folded into one of its operands.  */
+       return;
+ 
      default:
        if (code == SSA_NAME)
  	/* No side-effects.  */
diff -Nrcpad gcc-14-20260730/gcc/match.pd gcc-14-20260806/gcc/match.pd
*** gcc-14-20260730/gcc/match.pd	Thu Jul 30 22:32:08 2026
--- gcc-14-20260806/gcc/match.pd	Thu Aug  6 22:32:08 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 2445,2451 ****
       second_op (eq bit_xor)
   (simplify
    (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op:c @0 @1))
!     (bit_not (bit_ior @0 @1))))
  
  /* Convert ~ (A - 1) or ~ (A + -1) to -A.  */
  (simplify
--- 2445,2454 ----
       second_op (eq bit_xor)
   (simplify
    (first_op:c (bit_and:c truth_valued_p@0 truth_valued_p@1) (second_op:c @0 @1))
!    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
! 	&& TYPE_PRECISION (TREE_TYPE (@0)) == 1)
!     (convert:type (bit_not (bit_ior @0 @1)))
!     (convert:type (bit_xor (bit_ior @0 @1) { build_one_cst (TREE_TYPE (@0)); })))))
  
  /* Convert ~ (A - 1) or ~ (A + -1) to -A.  */
  (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4437,4443 ****
    (cmp (bit_and (lshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (with { int c1 = wi::clz (wi::to_wide (@1));
  	   int c2 = wi::clz (wi::to_wide (@2)); }
!     (if (c1 < c2)
       { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
       (icmp @0 { build_int_cst (TREE_TYPE (@0), c1 - c2); }))))
   (simplify
--- 4440,4451 ----
    (cmp (bit_and (lshift integer_pow2p@1 @0) integer_pow2p@2) integer_zerop)
     (with { int c1 = wi::clz (wi::to_wide (@1));
  	   int c2 = wi::clz (wi::to_wide (@2)); }
!     (if (c1 < c2
! 	 /* If c1 - c2 isn't representable in TREE_TYPE (@0), it is also
! 	    never true, because for any valid x C << x will be smaller
! 	    than D.  See PR126476.  */
! 	 || !wi::fits_to_tree_p (wi::shwi (c1 - c2, HOST_BITS_PER_INT),
! 				 TREE_TYPE (@0)))
       { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
       (icmp @0 { build_int_cst (TREE_TYPE (@0), c1 - c2); }))))
   (simplify
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4445,4451 ****
     (if (tree_int_cst_sgn (@1) > 0)
      (with { int c1 = wi::clz (wi::to_wide (@1));
  	    int c2 = wi::clz (wi::to_wide (@2)); }
!      (if (c1 > c2)
        { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
        (icmp @0 { build_int_cst (TREE_TYPE (@0), c2 - c1); })))))
   /* `(1 >> X) != 0` -> `X == 0` */
--- 4453,4461 ----
     (if (tree_int_cst_sgn (@1) > 0)
      (with { int c1 = wi::clz (wi::to_wide (@1));
  	    int c2 = wi::clz (wi::to_wide (@2)); }
!      (if (c1 > c2
! 	  || !wi::fits_to_tree_p (wi::shwi (c2 - c1, HOST_BITS_PER_INT),
! 				  TREE_TYPE (@0)))
        { constant_boolean_node (cmp == NE_EXPR ? false : true, type); }
        (icmp @0 { build_int_cst (TREE_TYPE (@0), c2 - c1); })))))
   /* `(1 >> X) != 0` -> `X == 0` */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4464,4470 ****
    (with { int cand = wi::ctz (wi::to_wide (@2)) - wi::ctz (wi::to_wide (@0)); }
     (if (cand < 0
  	|| (!integer_zerop (@2)
! 	    && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2)))
      { constant_boolean_node (cmp == NE_EXPR, type); }
      (if (!integer_zerop (@2)
  	 && wi::lshift (wi::to_wide (@0), cand) == wi::to_wide (@2))
--- 4474,4482 ----
    (with { int cand = wi::ctz (wi::to_wide (@2)) - wi::ctz (wi::to_wide (@0)); }
     (if (cand < 0
  	|| (!integer_zerop (@2)
! 	    && wi::lshift (wi::to_wide (@0), cand) != wi::to_wide (@2))
! 	|| !wi::fits_to_tree_p (wi::shwi (cand, HOST_BITS_PER_INT),
! 				TREE_TYPE (@1)))
      { constant_boolean_node (cmp == NE_EXPR, type); }
      (if (!integer_zerop (@2)
  	 && wi::lshift (wi::to_wide (@0), cand) == wi::to_wide (@2))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4612,4619 ****
     (bit_and
      (nop_convert? (lshift integer_onep @0)) integer_pow2p@1) integer_zerop)
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)))
!    (icmp @0 { wide_int_to_tree (TREE_TYPE (@0),
! 				wi::exact_log2 (wi::to_wide (@1))); }))))
  
  /* Fold (X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)
     (X {&,^,|} C2) >> C1 into (X >> C1) & (C2 >> C1).  */
--- 4624,4632 ----
     (bit_and
      (nop_convert? (lshift integer_onep @0)) integer_pow2p@1) integer_zerop)
    (if (INTEGRAL_TYPE_P (TREE_TYPE (@0)))
!    (with { int c = wi::exact_log2 (wi::to_wide (@1)); }
!     (if (wi::fits_to_tree_p (wi::shwi (c, HOST_BITS_PER_INT), TREE_TYPE (@0)))
!      (icmp @0 { wide_int_to_tree (TREE_TYPE (@0), c); }))))))
  
  /* Fold (X {&,^,|} C2) << C1 into (X << C1) {&,^,|} (C2 << C1)
     (X {&,^,|} C2) >> C1 into (X >> C1) & (C2 >> C1).  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 9037,9046 ****
  #endif
  
  /* PARITY simplifications.  */
! /* parity(~X) is parity(X).  */
  (simplify
    (PARITY (bit_not @0))
!   (PARITY @0))
  
  /* parity(bswap(x)) is parity(x).  */
  (for parity (PARITY)
--- 9050,9061 ----
  #endif
  
  /* PARITY simplifications.  */
! /* parity(~X) is parity(X) for even precision and parity(X) ^ 1 otherwise.  */
  (simplify
    (PARITY (bit_not @0))
!   (if ((element_precision (TREE_TYPE (@0)) & 1) == 0)
!    (PARITY @0)
!    (bit_xor (PARITY:type @0) { build_one_cst (type); })))
  
  /* parity(bswap(x)) is parity(x).  */
  (for parity (PARITY)
diff -Nrcpad gcc-14-20260730/gcc/range-op-float.cc gcc-14-20260806/gcc/range-op-float.cc
*** gcc-14-20260730/gcc/range-op-float.cc	Thu Jul 30 22:32:10 2026
--- gcc-14-20260806/gcc/range-op-float.cc	Thu Aug  6 22:32:09 2026
*************** float_widen_lhs_range (tree type, const
*** 2373,2379 ****
      return ret;
    REAL_VALUE_TYPE lb = lhs.lower_bound ();
    REAL_VALUE_TYPE ub = lhs.upper_bound ();
!   if (real_isfinite (&lb))
      {
        frange_nextafter (TYPE_MODE (type), lb, dconstninf);
        if (real_isinf (&lb))
--- 2373,2379 ----
      return ret;
    REAL_VALUE_TYPE lb = lhs.lower_bound ();
    REAL_VALUE_TYPE ub = lhs.upper_bound ();
!   if (real_isfinite (&lb) || !real_isneg (&lb))
      {
        frange_nextafter (TYPE_MODE (type), lb, dconstninf);
        if (real_isinf (&lb))
*************** float_widen_lhs_range (tree type, const
*** 2387,2393 ****
  	  lb = dconstm1;
  	  SET_REAL_EXP (&lb, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type)))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
--- 2387,2395 ----
  	  lb = dconstm1;
  	  SET_REAL_EXP (&lb, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math
! 	  && !MODE_COMPOSITE_P (TYPE_MODE (type))
! 	  && real_isfinite (&lhs.lower_bound ()))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
*************** float_widen_lhs_range (tree type, const
*** 2396,2402 ****
  	  real_arithmetic (&lb, RDIV_EXPR, &tem, &dconst2);
  	}
      }
!   if (real_isfinite (&ub))
      {
        frange_nextafter (TYPE_MODE (type), ub, dconstinf);
        if (real_isinf (&ub))
--- 2398,2404 ----
  	  real_arithmetic (&lb, RDIV_EXPR, &tem, &dconst2);
  	}
      }
!   if (real_isfinite (&ub) || real_isneg (&ub))
      {
        frange_nextafter (TYPE_MODE (type), ub, dconstinf);
        if (real_isinf (&ub))
*************** float_widen_lhs_range (tree type, const
*** 2405,2411 ****
  	  ub = dconst1;
  	  SET_REAL_EXP (&ub, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math && !MODE_COMPOSITE_P (TYPE_MODE (type)))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
--- 2407,2415 ----
  	  ub = dconst1;
  	  SET_REAL_EXP (&ub, FLOAT_MODE_FORMAT (TYPE_MODE (type))->emax + 1);
  	}
!       if (!flag_rounding_math
! 	  && !MODE_COMPOSITE_P (TYPE_MODE (type))
! 	  && real_isfinite (&lhs.upper_bound ()))
  	{
  	  /* If not -frounding-math nor IBM double double, actually widen
  	     just by 0.5ulp rather than 1ulp.  */
diff -Nrcpad gcc-14-20260730/gcc/testsuite/ChangeLog gcc-14-20260806/gcc/testsuite/ChangeLog
*** gcc-14-20260730/gcc/testsuite/ChangeLog	Thu Jul 30 22:32:10 2026
--- gcc-14-20260806/gcc/testsuite/ChangeLog	Thu Aug  6 22:32:09 2026
***************
*** 1,3 ****
--- 1,99 ----
+ 2026-08-05  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-28  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/125866
+ 	* gfortran.dg/pr125866.f90: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126504
+ 	* gcc.dg/torture/bitint-105.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126503
+ 	* gcc.dg/torture/bitint-106.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126497
+ 	* gcc.dg/bitint-141.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126490
+ 	* gcc.dg/torture/bitint-104.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* gcc.dg/torture/pr126464.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126476
+ 	* gcc.dg/torture/bitint-103.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126464
+ 	* gcc.dg/pr126464.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/126471
+ 	* gcc.dg/bitint-139.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/126446
+ 	* gcc.target/i386/avx2-pr126446.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/126447
+ 	* gcc.dg/ubsan/bitint-5.c: New test.
+ 
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/126303
+ 	* gfortran.dg/pr126303.f: New test.
+ 
  2026-07-28  Haochen Jiang  <haochen.jiang@intel.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/bitint-139.c gcc-14-20260806/gcc/testsuite/gcc.dg/bitint-139.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/bitint-139.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/bitint-139.c	Thu Aug  6 22:32:11 2026
***************
*** 0 ****
--- 1,36 ----
+ /* PR tree-optimization/126471 */
+ /* { dg-do run { target bitint575 } } */
+ /* { dg-options "-O2" } */
+ 
+ [[gnu::noipa]] int
+ foo (unsigned _BitInt(129) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ [[gnu::noipa]] int
+ bar (unsigned _BitInt(7) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ [[gnu::noipa]] int
+ baz (unsigned _BitInt(256) x)
+ {
+   return __builtin_parityg (~x);
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (0) != 1
+       || foo (~(unsigned _BitInt(129)) 0) != 0
+       || foo (1) != 0
+       || bar (0) != 1
+       || bar (~(unsigned _BitInt(7)) 0) != 0
+       || bar (1) != 0
+       || baz (0) != 0
+       || baz (~(unsigned _BitInt(256)) 0) != 0
+       || baz (1) != 1)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/bitint-141.c gcc-14-20260806/gcc/testsuite/gcc.dg/bitint-141.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/bitint-141.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/bitint-141.c	Thu Aug  6 22:32:11 2026
***************
*** 0 ****
--- 1,19 ----
+ /* PR middle-end/126497 */
+ /* { dg-do compile { target bitint } } */
+ /* { dg-options "-std=c23" } */
+ 
+ typedef unsigned _BitInt (1) U;
+ 
+ U
+ foo (U a)
+ {
+   U t = a >= 1uwb;
+   return t;
+ }
+ 
+ U
+ bar (U a)
+ {
+   U t = a == 1uwb;
+   return t;
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/pr126464.c gcc-14-20260806/gcc/testsuite/gcc.dg/pr126464.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/pr126464.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/pr126464.c	Thu Aug  6 22:32:11 2026
***************
*** 0 ****
--- 1,61 ----
+ /* PR tree-optimization/126464 */
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ /* { dg-add-options ieee } */
+ /* { dg-skip-if "not IEEE float" { "pdp11-*-*" } } */
+ 
+ [[gnu::noipa]] double
+ foo (double x)
+ {
+   float y = (float) x;
+ 
+   if (y == -__builtin_inff ())
+     return x * 0.5;
+   return y;
+ }
+ 
+ [[gnu::noipa]] long double
+ bar (long double x)
+ {
+   double y = (double) x;
+ 
+   if (y == __builtin_inf ())
+     return x * 0.5L;
+   return y;
+ }
+ 
+ [[gnu::noipa]] double
+ baz (double x)
+ {
+   float y = (float) x;
+ 
+   if (y == __builtin_inff ())
+     return x * 0.5;
+   return y;
+ }
+ 
+ [[gnu::noipa]] long double
+ qux (long double x)
+ {
+   double y = (double) x;
+ 
+   if (y == -__builtin_inf ())
+     return x * 0.5L;
+   return y;
+ }
+ 
+ int
+ main ()
+ {
+   if (!__builtin_isinf ((double) 1e300)
+       && __builtin_isinf ((float) 1e300)
+       && (foo (-1e300) != -5e299
+ 	  || baz (1e300) != 5e299))
+     __builtin_abort ();
+ 
+   if (!__builtin_isinf ((long double) 1e4000L)
+       && __builtin_isinf ((double) 1e4000L)
+       && (bar (1e4000L) != 5e3999L
+ 	  || qux (-1e4000L) != -5e3999L))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-103.c gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-103.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-103.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-103.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,22 ----
+ /* PR tree-optimization/126476 */
+ /* { dg-do run { target bitint } } */
+ 
+ [[gnu::noipa]] int
+ foo (unsigned _BitInt(4) n)
+ {
+   return ((1ULL << n) & (1ULL << 20)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (unsigned _BitInt(4) n)
+ {
+   return (((1ULL << 40) >> n) & (1ULL << 20)) != 0;
+ }
+ 
+ int
+ main ()
+ {
+   for (unsigned i = 0; i < 16; i++)
+     if (foo (i) != 0 || bar (i) != 0)
+         __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-104.c gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-104.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-104.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-104.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,78 ----
+ /* PR tree-optimization/126490 */
+ /* { dg-do run { target bitint } } */
+ 
+ typedef unsigned _BitInt(1) T;
+ 
+ [[gnu::noipa]] int
+ foo (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) + 1;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ baz (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) == 0;
+ }
+ 
+ [[gnu::noipa]] int
+ qux (T a, T b)
+ {
+   return ((a & b) == (a ^ b)) < 1;
+ }
+ 
+ [[gnu::noipa]] int
+ corge (int a, int b)
+ {
+   return (a & b) == (a ^ b);
+ }
+ 
+ [[gnu::noipa]] int
+ garply (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) + 1;
+ }
+ 
+ [[gnu::noipa]] int
+ fred (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ xyzzy (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) == 0;
+ }
+ 
+ [[gnu::noipa]] int
+ waldo (T a, T b)
+ {
+   return ((a & b) ^ (a == b)) < 1;
+ }
+ 
+ int
+ main ()
+ {
+   for (int i = 0; i < 4; ++i)
+     {
+       int a = i & 1;
+       int b = i >> 1;
+       int c = corge (a, b);
+       if (foo (a, b) != c + 1
+           || bar (a, b) != (c != 0)
+           || baz (a, b) != (c == 0)
+           || qux (a, b) != (c < 1)
+ 	  || garply (a, b) != c + 1
+           || fred (a, b) != (c != 0)
+           || xyzzy (a, b) != (c == 0)
+           || waldo (a, b) != (c < 1))
+ 	__builtin_abort ();
+     }
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-105.c gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-105.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-105.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-105.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,24 ----
+ /* PR tree-optimization/126504 */
+ /* { dg-do run { target bitint } } */
+ 
+ typedef unsigned _BitInt(4) U;
+ 
+ [[gnu::noipa]] int
+ foo (U n)
+ {
+   return ((1 << n) & (1 << 20)) != 0;
+ }
+ 
+ [[gnu::noipa]] int
+ bar (U n)
+ {
+   return ((unsigned) (1 << n) & (1u << 20)) != 0;
+ }
+ 
+ int
+ main ()
+ {
+   for (unsigned i = 0; i < 16; i++)
+     if (foo (i) || bar (i))
+       __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-106.c gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-106.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/torture/bitint-106.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/torture/bitint-106.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,38 ----
+ /* PR tree-optimization/126503 */
+ /* { dg-do run { target bitint575 } } */
+ 
+ [[gnu::noipa]] unsigned _BitInt(400)
+ foo (_BitInt(257) a)
+ {
+   return (unsigned _BitInt(400)) (-a);
+ }
+ 
+ [[gnu::noipa]] unsigned _BitInt(300)
+ bar (_BitInt(7) a, unsigned _BitInt(17) b)
+ {
+   _BitInt(257) x = (_BitInt(257)) a + -1;
+   return ~((unsigned _BitInt(300)) x ^ (unsigned _BitInt(300)) b);
+ }
+ 
+ [[gnu::noipa]] _BitInt(129)
+ baz (_BitInt(129) x)
+ {
+   return x - 24;
+ }
+ 
+ [[gnu::noipa]] int
+ qux (_BitInt(129) x, _BitInt(129) y)
+ {
+   return x == y;
+ }
+ 
+ int
+ main ()
+ {
+   if (foo (-1wb) != 1uwb)
+     __builtin_abort ();
+   if (bar (1wb, 3uwb) != (unsigned _BitInt(300)) -4wb)
+     __builtin_abort ();
+   if (!qux (baz (100), 76))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/torture/pr126464.c gcc-14-20260806/gcc/testsuite/gcc.dg/torture/pr126464.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/torture/pr126464.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/torture/pr126464.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,28 ----
+ /* PR tree-optimization/126464 */
+ /* { dg-do run } */
+ 
+ #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+     && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+ [[gnu::noipa]] double
+ foo (double x, double y)
+ {
+   if (y >= -1e304 && y <= -1e300)
+     {
+       if (x + y == -__builtin_inf ())
+ 	return x * 0.5;
+     }
+   return x;
+ }
+ #endif
+ 
+ int
+ main ()
+ {
+ #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
+     && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
+   if (foo (-__builtin_inf (), -1e303) != -__builtin_inf ())
+     __builtin_abort ();
+   if (foo (-1.797693134862e308, -1e303) != -1.797693134862e308 / 2.0)
+     __builtin_abort ();
+ #endif
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.dg/ubsan/bitint-5.c gcc-14-20260806/gcc/testsuite/gcc.dg/ubsan/bitint-5.c
*** gcc-14-20260730/gcc/testsuite/gcc.dg/ubsan/bitint-5.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.dg/ubsan/bitint-5.c	Thu Aug  6 22:32:12 2026
***************
*** 0 ****
--- 1,36 ----
+ /* PR middle-end/126447 */
+ /* { dg-do compile { target bitint575 } } */
+ /* { dg-options "-fsanitize=signed-integer-overflow" } */
+ 
+ void foo (int);
+ [[gnu::returns_twice]] void bar ();
+ 
+ _BitInt(575)
+ baz ()
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w *= 3;
+   foo (3);
+   return w;
+ }
+ 
+ _BitInt(575)
+ qux ()
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w += 3;
+   foo (3);
+   return w;
+ }
+ 
+ _BitInt(575)
+ fred (_BitInt(575) x)
+ {
+   _BitInt(575) w = 1;
+   bar ();
+   w -= x;
+   foo (3);
+   return w;
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gcc.target/i386/avx2-pr126446.c gcc-14-20260806/gcc/testsuite/gcc.target/i386/avx2-pr126446.c
*** gcc-14-20260730/gcc/testsuite/gcc.target/i386/avx2-pr126446.c	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gcc.target/i386/avx2-pr126446.c	Thu Aug  6 22:32:13 2026
***************
*** 0 ****
--- 1,14 ----
+ /* PR target/126446 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -mavx2" } */
+ 
+ typedef signed char V __attribute__((vector_size (16)));
+ 
+ signed char
+ foo ()
+ {
+   V b = {};
+   long long c = ~2878966870562407444LL;
+   b[c] = 1;
+   return b[0];
+ }
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gfortran.dg/pr125866.f90 gcc-14-20260806/gcc/testsuite/gfortran.dg/pr125866.f90
*** gcc-14-20260730/gcc/testsuite/gfortran.dg/pr125866.f90	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gfortran.dg/pr125866.f90	Thu Aug  6 22:32:14 2026
***************
*** 0 ****
--- 1,28 ----
+ ! { dg-do compile }
+ !  ICE: a module procedure with an allocatable, intent(out)
+ !  derived-type array dummy. Reduced from the original in the PR
+ 
+ module m
+   interface
+     module subroutine s (a)
+       integer, allocatable, intent(out) :: a
+     end subroutine
+   end interface
+ end module
+ 
+ submodule (m) sm1
+ contains
+   module subroutine s (a)
+     integer, allocatable, intent(out) :: a
+     allocate (a, source = 7)
+   end subroutine
+ end submodule
+ 
+ submodule (m:sm1) sm2
+ contains
+   subroutine caller
+     integer, allocatable :: b
+     call s (b)
+     if (b /= 7) stop 1
+   end subroutine
+ end submodule
diff -Nrcpad gcc-14-20260730/gcc/testsuite/gfortran.dg/pr126303.f gcc-14-20260806/gcc/testsuite/gfortran.dg/pr126303.f
*** gcc-14-20260730/gcc/testsuite/gfortran.dg/pr126303.f	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/gcc/testsuite/gfortran.dg/pr126303.f	Thu Aug  6 22:32:14 2026
***************
*** 0 ****
--- 1,9 ----
+ ! PR fortran/126303
+ ! { dg-do compile }
+ ! { dg-options "-std=legacy" }
+       COMMON FOO(8)
+       DO 10 M=1,8
+         DO 10 T=0D0,1D0
+           FOO(M)=1
+    10 CONTINUE
+       END
diff -Nrcpad gcc-14-20260730/libsanitizer/ChangeLog gcc-14-20260806/libsanitizer/ChangeLog
*** gcc-14-20260730/libsanitizer/ChangeLog	Thu Jul 30 22:32:18 2026
--- gcc-14-20260806/libsanitizer/ChangeLog	Thu Aug  6 22:32:16 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-08-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/126307
+ 	* tsan/tsan_trace.h: Cherry-pick llvm-project revision
+ 	cdfdb06c9155080ec97d6e4f4dd90b6e7cefb0ca.
+ 
  2026-06-26  Release Manager
  
  	* GCC 14.4.0 released.
diff -Nrcpad gcc-14-20260730/libsanitizer/tsan/tsan_trace.h gcc-14-20260806/libsanitizer/tsan/tsan_trace.h
*** gcc-14-20260730/libsanitizer/tsan/tsan_trace.h	Thu Jul 30 22:32:18 2026
--- gcc-14-20260806/libsanitizer/tsan/tsan_trace.h	Thu Aug  6 22:32:17 2026
*************** struct Trace {
*** 190,196 ****
    Mutex mtx;
    IList<TraceHeader, &TraceHeader::trace_parts, TracePart> parts;
    // First node non-queued into ctx->trace_part_recycle.
!   TracePart* local_head;
    // Final position in the last part for finished threads.
    Event* final_pos = nullptr;
    // Number of trace parts allocated on behalf of this trace specifically.
--- 190,196 ----
    Mutex mtx;
    IList<TraceHeader, &TraceHeader::trace_parts, TracePart> parts;
    // First node non-queued into ctx->trace_part_recycle.
!   TracePart* local_head = nullptr;
    // Final position in the last part for finished threads.
    Event* final_pos = nullptr;
    // Number of trace parts allocated on behalf of this trace specifically.
diff -Nrcpad gcc-14-20260730/libstdc++-v3/ChangeLog gcc-14-20260806/libstdc++-v3/ChangeLog
*** gcc-14-20260730/libstdc++-v3/ChangeLog	Thu Jul 30 22:32:18 2026
--- gcc-14-20260806/libstdc++-v3/ChangeLog	Thu Aug  6 22:32:17 2026
***************
*** 1,3 ****
--- 1,100 ----
+ 2026-07-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-20  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Correct
+ 	condition for stopping zone expansion before STD zone.
+ 	* testsuite/std/time/time_zone/116110.cc (test_dawson):
+ 	Add test for America/Dawson August 1945 transition.
+ 
+ 2026-07-31  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-05-18  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/124852
+ 	* src/c++20/tzdb.cc (on_month_day::on_day_t, on_month_day::on_day):
+ 	Remove.
+ 	(operator>>(istream&, on_month_day::day_t&)): Inlined into...
+ 	(operator>>(istream&, on_month_day)): Inlined on_month_day::on_day.
+ 	Avoid modifying on.month if MONTH is not present. Report failure
+ 	on failure to parse day for LessEq / GreaterEq.
+ 
+ 2026-07-31  Álvaro Begué  <alvaro.begue@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-05-13  Álvaro Begué  <alvaro.begue@gmail.com>
+ 		    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/124852
+ 	* src/c++20/tzdb.cc (on_day): Rename to...
+ 	(on_day_month): Rename from on_day.
+ 	(on_day_month::on_day_t, on_day_month::on_day): Define.
+ 	(operator>>(istream&, on_day_t&&)): Factored out of
+ 	operator>>(istream&, on_day&).
+ 	(operator>>(istream&, on_day&)): Use on_day_t parser.
+ 	(operator>>(istream&, ZoneInfo&)): Replace the integer DAY
+ 	parser with on_day_t for the UNTIL field.
+ 	* testsuite/std/time/time_zone/until_day_on.cc: New test.
+ 
+ 2026-07-31  Álvaro Begué  <alvaro.begue@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-05-13  Álvaro Begué  <alvaro.begue@gmail.com>
+ 
+ 	PR libstdc++/124851
+ 	* src/c++20/tzdb.cc (ZoneInfo::ZoneInfo(sys_info&&)): Store
+ 	stdoff only in m_offset (subtract info.save).
+ 	(ZoneInfo::ZoneInfo(const pair<sys_info, string_view>&)):
+ 	Likewise.
+ 	(ZoneInfo::offset()): Document new semantics.
+ 	(ZoneInfo::to(sys_info&)): Add m_save back to offset() when
+ 	populating sys_info::offset.
+ 	* testsuite/std/time/time_zone/numeric_save.cc: New test.
+ 
+ 2026-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/124513
+ 	* src/c++20/tzdb.cc (operator>>(istream&, at_time::Indicator&)):
+ 	Do not peek at the next character if eofbit is already set.
+ 	(istream& operator>>(istream&, at_time&)): Skip whitespace
+ 	before the first character. Handle EOF when parsing "-" as time.
+ 	Do not peek for ":" or "." if eofbit already set.
+ 	* testsuite/std/time/time_zone/116110.cc (test_apia): Remove
+ 	offset of 24h now that the UNTIL time is parsed correctly.
+ 	* testsuite/std/time/time_zone/124513.cc: New test.
+ 
+ 2026-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (operator>>(istream&, ZoneInfo&)): Adjust
+ 	inf.m_until according to indicator suffix on AT time in UNTIL.
+ 	* testsuite/std/time/time_zone/116110.cc (test_kiritimati):
+ 	Remove FIXME now that the UNTIL time is adjusted for STDOFF.
+ 	(test_apia): Adjust FIXME now that UNTIL time is adusted for
+ 	STDOFF.
+ 	* testsuite/std/time/time_zone/get_info_sys.cc: Adjust expected
+ 	results to account for corrected logic.
+ 	* testsuite/std/time/zoned_time/1.cc: Likewise.
+ 
+ 2026-07-31  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-03-19  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/116110
+ 	* src/c++20/tzdb.cc (time_zone::_M_get_sys_info): Update
+ 	info.offset and info.save to values from the active rule.
+ 	* testsuite/std/time/time_zone/116110.cc: New test.
+ 
  2026-06-27  Patrick Palka  <ppalka@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-14-20260730/libstdc++-v3/src/c++20/tzdb.cc gcc-14-20260806/libstdc++-v3/src/c++20/tzdb.cc
*** gcc-14-20260730/libstdc++-v3/src/c++20/tzdb.cc	Thu Jul 30 22:32:19 2026
--- gcc-14-20260806/libstdc++-v3/src/c++20/tzdb.cc	Thu Aug  6 22:32:17 2026
*************** namespace std::chrono
*** 185,191 ****
  
  #include "tzdb_globals.h"
  
!   // The data structures defined in this file (Rule, on_day, at_time etc.)
    // are used to represent the information parsed from the tzdata.zi file
    // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES
  
--- 185,191 ----
  
  #include "tzdb_globals.h"
  
!   // The data structures defined in this file (Rule, on_month_day, at_time etc.)
    // are used to represent the information parsed from the tzdata.zi file
    // described at https://man7.org/linux/man-pages/man8/zic.8.html#FILES
  
*************** namespace std::chrono
*** 247,257 ****
        // If not, indic is unchanged. Callers should set a default first.
        friend istream& operator>>(istream& in, Indicator& indic)
        {
! 	auto [val, yes] = at_time::is_indicator(in.peek());
! 	if (yes)
  	  {
! 	    in.ignore(1);
! 	    indic = val;
  	  }
  	return in;
        }
--- 247,260 ----
        // If not, indic is unchanged. Callers should set a default first.
        friend istream& operator>>(istream& in, Indicator& indic)
        {
! 	if (!in.eof())
  	  {
! 	    auto [val, yes] = at_time::is_indicator(in.peek());
! 	    if (yes)
! 	      {
! 		in.ignore(1);
! 		indic = val;
! 	      }
  	  }
  	return in;
        }
*************** namespace std::chrono
*** 271,277 ****
      };
  
      // The IN and ON fields of a RULE record, e.g. "March lastSunday".
!     struct on_day
      {
        using rep = uint_least16_t;
        // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday,
--- 274,280 ----
      };
  
      // The IN and ON fields of a RULE record, e.g. "March lastSunday".
!     struct on_month_day
      {
        using rep = uint_least16_t;
        // Equivalent to Kind, chrono::month, chrono::day, chrono::weekday,
*************** namespace std::chrono
*** 335,341 ****
  	return ymd;
        }
  
!       friend istream& operator>>(istream&, on_day&);
      };
  
      // Wrapper for two chrono::year values, which reads the FROM and TO
--- 338,345 ----
  	return ymd;
        }
  
! 
!       friend istream& operator>>(istream&, on_month_day&);
      };
  
      // Wrapper for two chrono::year values, which reads the FROM and TO
*************** namespace std::chrono
*** 446,457 ****
  
        ZoneInfo(sys_info&& info)
        : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save),
! 	m_offset(info.offset), m_until(info.end)
        { }
  
        ZoneInfo(const pair<sys_info, string_view>& info)
!       : m_expanded(true), m_save(info.first.save), m_offset(info.first.offset),
! 	m_until(info.first.end)
        {
  	if (info.second.size())
  	  {
--- 450,462 ----
  
        ZoneInfo(sys_info&& info)
        : m_buf(std::move(info.abbrev)), m_expanded(true), m_save(info.save),
! 	m_offset(info.offset - seconds(info.save)), m_until(info.end)
        { }
  
        ZoneInfo(const pair<sys_info, string_view>& info)
!       : m_expanded(true), m_save(info.first.save),
! 	m_offset(info.first.offset - seconds(info.first.save)),
!        	m_until(info.first.end)
        {
  	if (info.second.size())
  	  {
*************** namespace std::chrono
*** 462,468 ****
  	m_buf += info.first.abbrev;
        }
  
!       // STDOFF: Seconds from UTC during standard time.
        seconds
        offset() const noexcept { return m_offset; }
  
--- 467,473 ----
  	m_buf += info.first.abbrev;
        }
  
!       // STDOFF: Seconds from UTC during standard time (without any save).
        seconds
        offset() const noexcept { return m_offset; }
  
*************** namespace std::chrono
*** 507,513 ****
  	  return false;
  
  	info.end = until();
! 	info.offset = offset();
  	info.save = minutes(m_save);
  	info.abbrev = format();
  	format_abbrev_str(info); // expand %z
--- 512,518 ----
  	  return false;
  
  	info.end = until();
! 	info.offset = offset() + seconds(m_save);
  	info.save = minutes(m_save);
  	info.abbrev = format();
  	format_abbrev_str(info); // expand %z
*************** namespace std::chrono
*** 557,565 ****
      // A RULE record from the tzdata.zi timezone info file.
      struct Rule
      {
!       // This allows on_day to reuse padding of at_time.
        // This keeps the size to 8 bytes and the alignment to 4 bytes.
!       struct datetime : at_time { on_day day; };
  
        // TODO combining name+letters into a single string (like in ZoneInfo)
        // would save sizeof(string) and make Rule fit in a single cacheline.
--- 562,570 ----
      // A RULE record from the tzdata.zi timezone info file.
      struct Rule
      {
!       // This allows on_month_day to reuse padding of at_time.
        // This keeps the size to 8 bytes and the alignment to 4 bytes.
!       struct datetime : at_time { on_month_day day; };
  
        // TODO combining name+letters into a single string (like in ZoneInfo)
        // would save sizeof(string) and make Rule fit in a single cacheline.
*************** namespace std::chrono
*** 621,637 ****
  	    << ' ' << r.when.day.get_month() << ' ';
  	switch (r.when.day.kind)
  	{
! 	case on_day::DayOfMonth:
  	  out << (unsigned)r.when.day.get_day();
  	  break;
! 	case on_day::LastWeekday:
  	  out << "last" << weekday(r.when.day.day_of_week);
  	  break;
! 	case on_day::LessEq:
  	  out << weekday(r.when.day.day_of_week) << " <= "
  	    << r.when.day.day_of_month;
  	  break;
! 	case on_day::GreaterEq:
  	  out << weekday(r.when.day.day_of_week) << " >= "
  	    << r.when.day.day_of_month;
  	  break;
--- 626,642 ----
  	    << ' ' << r.when.day.get_month() << ' ';
  	switch (r.when.day.kind)
  	{
! 	case on_month_day::DayOfMonth:
  	  out << (unsigned)r.when.day.get_day();
  	  break;
! 	case on_month_day::LastWeekday:
  	  out << "last" << weekday(r.when.day.day_of_week);
  	  break;
! 	case on_month_day::LessEq:
  	  out << weekday(r.when.day.day_of_week) << " <= "
  	    << r.when.day.day_of_month;
  	  break;
! 	case on_month_day::GreaterEq:
  	  out << weekday(r.when.day.day_of_week) << " >= "
  	    << r.when.day.day_of_month;
  	  break;
*************** namespace std::chrono
*** 892,898 ****
  	  }
  
  	if (active_rule)
! 	  letters = active_rule->letters;
  	else if (first_std)
  	  letters = first_std->letters;
        }
--- 897,907 ----
  	  }
  
  	if (active_rule)
! 	  {
! 	    info.offset = ri.offset() + active_rule->save;
! 	    info.save = chrono::duration_cast<minutes>(active_rule->save);
! 	    letters = active_rule->letters;
! 	  }
  	else if (first_std)
  	  letters = first_std->letters;
        }
*************** namespace std::chrono
*** 980,989 ****
  	  result_index = new_infos.size() - 1;
  	else if (result_index >= 0 && !merged)
  	  {
! 	    // Finish on a DST sys_info if possible, so that if we resume
  	    // generating sys_info objects after this time point, save=0
  	    // should be correct for the next sys_info.
! 	    if (num_after > 1 || info.save != 0min)
  	      --num_after;
  	  }
  
--- 989,998 ----
  	  result_index = new_infos.size() - 1;
  	else if (result_index >= 0 && !merged)
  	  {
! 	    // Finish before a STD sys_info if possible, so that if we resume
  	    // generating sys_info objects after this time point, save=0
  	    // should be correct for the next sys_info.
! 	    if (num_after > 1 || !next_rule || next_rule->save == 0s)
  	      --num_after;
  	  }
  
*************** namespace std::chrono
*** 2039,2093 ****
        }
      };
  
!     istream& operator>>(istream& in, on_day& to)
      {
!       on_day on{};
!       abbrev_month m{};
!       in >> m;
!       on.month = static_cast<unsigned>(m.m);
!       int c = ws(in).peek();
!       if ('0' <= c && c <= '9')
! 	{
! 	  on.kind = on_day::DayOfMonth;
! 	  unsigned d;
! 	  in >> d;
! 	  if (d <= 31) [[likely]]
! 	    {
! 	      on.day_of_month = d;
! 	      to = on;
! 	      return in;
! 	    }
! 	}
!       else if (c == 'l') // lastSunday, lastWed, ...
  	{
! 	  in.ignore(4);
! 	  if (abbrev_weekday w{}; in >> w) [[likely]]
  	    {
! 	      on.kind = on_day::LastWeekday;
! 	      on.day_of_week = w.wd.c_encoding();
! 	      to = on;
! 	      return in;
  	    }
! 	}
!       else
! 	{
! 	  abbrev_weekday w;
! 	  in >> w;
! 	  if (auto c = in.get(); c == '<' || c == '>')
  	    {
! 	      if (in.get() == '=')
  		{
! 		  on.kind = c == '<' ? on_day::LessEq : on_day::GreaterEq;
  		  on.day_of_week = w.wd.c_encoding();
! 		  unsigned d;
! 		  in >> d;
! 		  if (d <= 31) [[likely]]
  		    {
  		      on.day_of_month = d;
- 		      to = on;
  		      return in;
  		    }
- 		}
  	    }
  	}
        in.setstate(ios::failbit);
--- 2048,2096 ----
        }
      };
  
!     // Read the MONTH DAY. Three forms are accepted for DAY:
!     // * a plain day-of-month number (DayOfMonth),
!     // * "lastWww" where Www is a weekday name (LastWeekday),
!     // * "Www<=N" or "Www>=N" (LessEq / GreaterEq).
!     // On failure to read either MONTH or DAY this function sets
!     // failbit. If DAY is not parsed, only `on.month` is modified,
!     // otherwise `on` is left unchanged.
!     istream& operator>>(istream& in, on_month_day& on)
      {
!       using enum on_month_day::Kind;
!       if (abbrev_month m{}; in >> m)
  	{
!  	  on.month = static_cast<unsigned>(m.m);
! 	  if (int c = ws(in).peek(); '0' <= c && c <= '9')
  	    {
! 	      if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
! 		{
! 		  on.kind = DayOfMonth;
! 		  on.day_of_month = d;
! 		  return in;
! 		}
  	    }
! 	  else if (c == 'l') // lastSunday, lastWed, ...
  	    {
! 	      in.ignore(4);
! 	      if (abbrev_weekday w{}; in >> w) [[likely]]
  		{
! 		  on.kind = LastWeekday;
  		  on.day_of_week = w.wd.c_encoding();
! 		  return in;
! 		}
! 	    }
! 	  else if (abbrev_weekday w; in >> w) [[likely]]
! 	    {
! 	      if (c = in.get(); c == '<' || c == '>')
! 		if (in.get() == '=')
! 	          if (unsigned d; (in >> d) && (d <= 31)) [[likely]]
  		    {
+ 		      on.kind = c == '<' ? LessEq : GreaterEq;
+ 		      on.day_of_week = w.wd.c_encoding();
  		      on.day_of_month = d;
  		      return in;
  		    }
  	    }
  	}
        in.setstate(ios::failbit);
*************** namespace std::chrono
*** 2097,2106 ****
      istream& operator>>(istream& in, at_time& at)
      {
        int sign = 1;
!       if (in.peek() == '-')
  	{
  	  in.ignore(1);
! 	  if (auto [val, yes] = at_time::is_indicator(in.peek()); yes)
  	    {
  	      in.ignore(1);
  	      at.time = 0s;
--- 2100,2110 ----
      istream& operator>>(istream& in, at_time& at)
      {
        int sign = 1;
!       if (ws(in).peek() == '-')
  	{
  	  in.ignore(1);
! 	  if (auto [val, yes] = at_time::is_indicator(in.peek());
! 	      in.eof() || yes)
  	    {
  	      in.ignore(1);
  	      at.time = 0s;
*************** namespace std::chrono
*** 2119,2129 ****
  	  in.ignore(1); // discard the colon.
  	  in >> i;
  	  m = minutes{i};
! 	  if (in.peek() == ':')
  	    {
  	      in.ignore(1); // discard the colon.
  	      in >> i;
! 	      if (in.peek() == '.')
  		{
  		  double frac;
  		  in >> frac;
--- 2123,2133 ----
  	  in.ignore(1); // discard the colon.
  	  in >> i;
  	  m = minutes{i};
! 	  if (!in.eof() && in.peek() == ':')
  	    {
  	      in.ignore(1); // discard the colon.
  	      in >> i;
! 	      if (!in.eof() && in.peek() == '.')
  		{
  		  double frac;
  		  in >> frac;
*************** namespace std::chrono
*** 2195,2210 ****
        in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent.
        if (int y = int(year::max()); in >> y)
  	{
! 	  abbrev_month m{January};
! 	  int d = 1;
  	  at_time t{};
! 	  // XXX DAY should support ON format, e.g. lastSun or Sun>=8
! 	  in >> m >> d >> t;
! 	  // XXX UNTIL field should be interpreted
! 	  // "using the rules in effect just before the transition"
! 	  // so might need to store as year_month_day and hh_mm_ss and only
! 	  // convert to a sys_time once we know the offset in effect.
! 	  inf.m_until = sys_days(year(y)/m.m/day(d)) + seconds(t.time);
  	}
        else
  	inf.m_until = sys_days(year::max()/December/31);
--- 2199,2221 ----
        in.exceptions(ios::goodbit); // Don't throw ios::failure if YEAR absent.
        if (int y = int(year::max()); in >> y)
  	{
! 	  on_month_day on{ .kind = on_month_day::DayOfMonth,
! 			   .month = 1, .day_of_month = 1 };
  	  at_time t{};
! 	  in >> on >> t;
! 	  year_month_day ymd = on.pin(year(y));
! 	  inf.m_until = sys_days(ymd) + seconds(t.time);
! 	  if (t.indicator != at_time::Universal)
! 	    { // UNTIL uses "the rules in effect just before the transition"
! 	      // adjust by STDOFF
! 	      inf.m_until -= seconds(inf.m_offset);
! 	      if (t.indicator != at_time::Standard)
! 		{
! 		  if (inf.m_expanded) // Not a named Rule, SAVE is known now.
! 		    inf.m_until -= inf.m_save;
! 		  // else Named Rule, SAVE is unknown. FIXME: PR 116110
! 		}
! 	    }
  	}
        else
  	inf.m_until = sys_days(year::max()/December/31);
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/116110.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/116110.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/116110.cc	Thu Aug  6 22:32:18 2026
***************
*** 0 ****
--- 1,127 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ 
+ #include <chrono>
+ #include <testsuite_hooks.h>
+ 
+ using namespace std::chrono;
+ 
+ void
+ test_broken_hill()
+ {
+   /*
+   R AN 1996 2005 - Mar lastSun 2s 0 S
+   R AN 2000 o    - Aug lastSun 2s 1 D
+   Z Australia/Broken_Hill 9:25:48 -  LMT  1895 Feb
+                           10      -  AEST 1896 Aug 23
+                           9       -  ACST 1899 May
+                           9:30    AU AC%sT 1971
+                           9:30    AN AC%sT 2000
+                           9:30    AS AC%sT
+   */
+   auto* tz = locate_zone("Australia/Broken_Hill");
+   auto info = tz->get_info(sys_days(2000y/February/29d) + 23h + 23min + 23s);
+   VERIFY( info.offset == 630min );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "ACDT" );
+ }
+ 
+ void
+ test_kiritimati()
+ {
+   /* No named rules involved here, just change of fixed STDOFF at 1994-12-31:
+   Z Pacific/Kiritimati -10:29:20 - LMT 1901
+                        -10:40    - %z  1979 Oct
+                        -10       - %z  1994 Dec 31
+                         14       - %z
+   */
+   auto* tz = locate_zone("Pacific/Kiritimati");
+   local_seconds t = local_days(1994y/December/31);
+ 
+   sys_seconds ut(t.time_since_epoch() + 10h);
+   sys_info info;
+   info = tz->get_info(ut - 1s);
+   VERIFY( info.offset == -10h );
+   VERIFY( info.save == 0h );
+   VERIFY( info.abbrev == "-10" );
+   info = tz->get_info(ut);
+   VERIFY( info.offset == 14h );
+   VERIFY( info.save == 0h );
+   VERIFY( info.abbrev == "+14" );
+ }
+ 
+ void
+ test_apia()
+ {
+   /* Refers to same named rule before/after change at 2011-12-29 24:00
+      but the offset changed from -11h+1h to +13h+1h
+   Z Pacific/Apia 12:33:4  -  LMT 1892 Jul 5
+                 -11:26:56 -  LMT 1911
+                 -11:30    -  %z  1950
+                 -11       WS %z  2011 Dec 29 24
+                  13       WS %z
+   */
+   auto* tz = locate_zone("Pacific/Apia");
+   local_seconds t = local_days(2011y/December/29) + 24h;
+ 
+   // FIXME: this should be + 10h but we do not account for DST yet, so + 11h.
+   sys_seconds ut(t.time_since_epoch() + 11h );
+   sys_info info;
+   info = tz->get_info(ut - 1s);
+   VERIFY( info.offset == (-11h + info.save) );
+   VERIFY( info.save == 1h );
+   VERIFY( info.abbrev == "-10" );
+   info = tz->get_info(ut);
+   VERIFY( info.offset == (13h + info.save) );
+   VERIFY( info.save == 1h );
+   VERIFY( info.abbrev == "+14" );
+ }
+ 
+ void
+ test_dawson()
+ {
+   /* 1945 August rule change changes letters (abbrev)
+      and remains in DST:
+   R Y 1942 o - F 9 2 1 W
+   R Y 1945 o - Au 14 23u 1 P
+   R Y 1945 o - S 30 2 0 S
+   Z America/Dawson -9:17:40 - LMT 1900 Au 20
+   -9 Y Y%sT 1965
+   -9 Yu Y%sT 1973 O 28
+   */
+ 
+   auto* tz = locate_zone("America/Dawson");
+   
+   // Triggers rule transitions from the start.
+   sys_info info = tz->get_info(sys_days(1900y/August/20) + 10h);
+   VERIFY( info.offset == -9h );
+   VERIFY( info.save == 0min );
+   VERIFY( info.abbrev == "YST" );
+ 
+   // Check YWT transition at 02:00 + 9h UT, that is DST
+   info = tz->get_info(sys_days(1942y/February/9) + 11h);
+   VERIFY( info.offset == -8h );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "YWT" );
+ 
+   // Check YPT transition at 23:00 UT, remains DST
+   info = tz->get_info(sys_days(1945y/August/14) + 23h);
+   VERIFY( info.offset == -8h );
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "YPT" );
+ 
+   // Check YST transition at 02:00 + 8h UT, switches to STD
+   info = tz->get_info(sys_days(1945y/September/30) + 10h);
+   VERIFY( info.offset == -9h );
+   VERIFY( info.save == 0min );
+   VERIFY( info.abbrev == "YST" );
+ }
+ 
+ int main()
+ {
+   test_broken_hill();
+   test_kiritimati();
+   test_apia();
+   test_dawson();
+ }
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/124513.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/124513.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/124513.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/124513.cc	Thu Aug  6 22:32:18 2026
***************
*** 0 ****
--- 1,111 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ // { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+ 
+ #include <chrono>
+ #include <fstream>
+ #include <testsuite_hooks.h>
+ 
+ static bool override_used = false;
+ 
+ namespace __gnu_cxx
+ {
+   const char* zoneinfo_dir_override() {
+     override_used = true;
+     return "./";
+   }
+ }
+ 
+ void
+ test_mawson()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test1
+ Z Antarctica/Mawson 0 - -00 1954 F 13
+                     6 - %z  2009 O 18 2
+                     5 - %z
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test1" );
+ 
+   auto zone = locate_zone("Antarctica/Mawson");
+   auto info = zone->get_info(sys_days(2009y/October/19));
+   VERIFY( info.begin == sys_days(2009y/October/17) + 20h);
+ }
+ 
+ void
+ test_custom()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test2
+ Z Test/Zomg 3:00:00 - LMT 1990 Mar 1 2
+             4       - DST 1990 Oct 1 2
+             3       - STD 1991 Mar 1 3:30
+             3       1 DST 1991 Oct 1 3:45:01
+             3       - STD 1992 Mar 1 -
+             3       1 DST 1992 Oct 1 -u
+             3       - STD 1993 Mar 1 -s
+             3       2 DST 1993 Oct 1 -s
+             3       - STD
+ 
+ Z Test/Zoinks 0:00  -    LMT 1990 Mar 1 2
+               0:00  1:00 DST 1990 Oct 1 3
+               0:00  -    STD 1991 Mar 1 1:30
+               0:00  1:00 DST 1991 Oct 1 3:30
+               0:00  -    STD
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test2" );
+ 
+   const auto offset = 3h;
+ 
+   const time_zone* zone;
+   sys_info info;
+ 
+   zone = locate_zone("Test/Zomg");
+   info = zone->get_info(sys_days(1990y/June/1));
+   VERIFY( info.begin == sys_days(1990y/March/1) + 2h - 3h);
+   VERIFY( info.end   == sys_days(1990y/October/1) + 2h - 4h);
+ 
+   info = zone->get_info(sys_days(1991y/June/1));
+   VERIFY( info.begin == sys_days(1991y/March/1) + 3h + 30min - 3h);
+   VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 45min + 1s - 4h);
+ 
+   info = zone->get_info(sys_days(1992y/June/1));
+   VERIFY( info.begin == sys_days(1992y/March/1) - 3h);
+   VERIFY( info.end   == sys_days(1992y/October/1));   // -u means midnight UTC
+ 
+   info = zone->get_info(sys_days(1992y/November/1));
+   VERIFY( info.begin == sys_days(1992y/October/1));    // -u means midnight UTC
+   VERIFY( info.end   == sys_days(1993y/March/1) - 3h); // -s means midnight STD
+ 
+   info = zone->get_info(sys_days(1993y/June/1));
+   VERIFY( info.begin == sys_days(1993y/March/1) -3h);  // -s means midnight STD
+   VERIFY( info.end   == sys_days(1993y/October/1) - 3h);
+ 
+ 
+   zone = locate_zone("Test/Zoinks");
+   info = zone->get_info(sys_days(1990y/June/1));
+   VERIFY( info.begin == sys_days(1990y/March/1) + 2h);
+   VERIFY( info.end   == sys_days(1990y/October/1) + 3h - 1h);
+ 
+   info = zone->get_info(sys_days(1991y/June/1));
+   VERIFY( info.begin == sys_days(1991y/March/1) + 1h + 30min);
+   VERIFY( info.end   == sys_days(1991y/October/1) + 3h + 30min - 1h);
+ 
+   info = zone->get_info(sys_days(1992y/June/1));
+   VERIFY( info.begin == sys_days(1991y/October/1) + 3h + 30min - 1h);
+ }
+ 
+ int main()
+ {
+   test_custom();
+   test_mawson();
+ }
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc	Thu Jul 30 22:32:19 2026
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc	Thu Aug  6 22:32:18 2026
*************** test_zurich()
*** 12,44 ****
    const time_zone* const tz = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16;
  
!     auto info = tz->get_info(d - 1s);
!     VERIFY( info.offset == (34min + 8s) );
      VERIFY( info.abbrev == "LMT" );
  
!     info = tz->get_info(d);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d + 1s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d + 0.001s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
    }
  
    {
      sys_days d = 1894y/June/1;
  
!     auto info = tz->get_info(d - 1s);
!     VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(d);
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
    }
--- 12,48 ----
    const time_zone* const tz = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16; // On this date ...
!     auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
!     auto t = d - offset;        // so LMT to BMT transition is at this time.
  
!     auto info = tz->get_info(t - 1s);
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "LMT" );
  
!     info = tz->get_info(t);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t + 1s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t + 0.001s);
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
    }
  
    {
      sys_days d = 1894y/June/1;
+     auto offset = 29min + 46s;
+     auto t = d - offset;
  
!     auto info = tz->get_info(t - 1s);
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "BMT" );
  
!     info = tz->get_info(t);
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
    }
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/numeric_save.cc	Thu Aug  6 22:32:18 2026
***************
*** 0 ****
--- 1,58 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ // { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+ 
+ // When a Zone line specifies a numeric value as its RULES field, that
+ // value is the constant DST save value for that zone line.  Per
+ // [time.zone.info.sys] sys_info::offset is the total UTC offset
+ // (stdoff + save).
+ 
+ #include <chrono>
+ #include <fstream>
+ #include <testsuite_hooks.h>
+ 
+ static bool override_used = false;
+ 
+ namespace __gnu_cxx
+ {
+   const char* zoneinfo_dir_override() {
+     override_used = true;
+     return "./";
+   }
+ }
+ 
+ int
+ main()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_numeric_save
+ Z Test/Gaborone 2 -  CAT  1943 Sep 19 2
+                 2 1  CAST 1944 Mar 19 2
+                 2 -  CAT
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_numeric_save" );
+ 
+   auto* tz = locate_zone("Test/Gaborone");
+ 
+   // Sample well inside the CAST (numeric-save) zone line.
+   auto info = tz->get_info(sys_days(1943y/December/15));
+   VERIFY( info.offset == 3h );        // stdoff +2h + save +1h
+   VERIFY( info.save == 60min );
+   VERIFY( info.abbrev == "CAST" );
+ 
+   // Bordering zone lines should report the standard offset with save 0.
+   auto before = tz->get_info(sys_days(1943y/September/1));
+   VERIFY( before.offset == 2h );
+   VERIFY( before.save == 0min );
+   VERIFY( before.abbrev == "CAT" );
+ 
+   auto after = tz->get_info(sys_days(1944y/April/15));
+   VERIFY( after.offset == 2h );
+   VERIFY( after.save == 0min );
+   VERIFY( after.abbrev == "CAT" );
+ }
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc	Thu Jan  1 00:00:00 1970
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/time_zone/until_day_on.cc	Thu Aug  6 22:32:18 2026
***************
*** 0 ****
--- 1,222 ----
+ // { dg-do run { target c++20 } }
+ // { dg-require-effective-target tzdb }
+ // { dg-require-effective-target cxx11_abi }
+ // { dg-xfail-run-if "no weak override on AIX" { powerpc-ibm-aix* } }
+ 
+ // The DAY portion of a Zone line's UNTIL field accepts not only a
+ // numeric day-of-month but also "lastXxx" (last weekday in the month)
+ // and "Xxx<=N" / "Xxx>=N" forms, just like the ON field of a Rule line.
+ //
+ // Real-world example: Europe/Simferopol has
+ //   3 - MSK 1997 Mar lastSu 1u
+ // which places the boundary on 1997-03-30 (the last Sunday of March).
+ 
+ #include <chrono>
+ #include <fstream>
+ #include <testsuite_hooks.h>
+ 
+ static bool override_used = false;
+ 
+ namespace __gnu_cxx
+ {
+   const char* zoneinfo_dir_override() {
+     override_used = true;
+     return "./";
+   }
+ }
+ 
+ void
+ test_lastsu()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_lastsu
+ Z Test/LastSu 3 - MSK 1997 Mar lastSu 1u
+               3 - X
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_lastsu" );
+ 
+   auto* tz = locate_zone("Test/LastSu");
+ 
+   // True boundary: 1997-03-30 01:00 UTC (lastSu of March 1997 is Mar 30,
+   // and the indicator is 'u' = Universal so no offset adjustment).
+   sys_seconds boundary = sys_days{1997y/March/30} + 1h;
+ 
+   // Just before: still in the MSK line.
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "MSK" );
+   VERIFY( before.offset == 3h );
+ 
+   // At/after the boundary: in the X line.
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "X" );
+ 
+   // Check that the lastSu day is parsed correctly, and not defaulted
+   // to the 1st: a March 15 query must still be in the MSK line.
+   auto mid_march = tz->get_info(sys_days{1997y/March/15});
+   VERIFY( mid_march.abbrev == "MSK" );
+   VERIFY( mid_march.offset == 3h );
+ }
+ 
+ void
+ test_sun_ge_n()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_sun_ge_n
+ Z Test/SunGE 0 - A 1990 Jun Sun>=8 0u
+              0 - B
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_sun_ge_n" );
+ 
+   auto* tz = locate_zone("Test/SunGE");
+ 
+   // First Sunday >= June 8 1990 = June 10 (June 8 1990 was a Friday).
+   sys_seconds boundary = sys_days{1990y/June/10};
+ 
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   // Check that Sun>=8 is parsed correctly, and not defaulted to the 1st.
+   auto early = tz->get_info(sys_days{1990y/June/1});
+   VERIFY( early.abbrev == "A" );
+ }
+ 
+ void
+ test_sun_le_n()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_sun_le_n
+ Z Test/SunLE 0 - A 1990 Jun Sun<=15 0u
+              0 - B
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_sun_le_n" );
+ 
+   auto* tz = locate_zone("Test/SunLE");
+ 
+   // Last Sunday <= June 15 1990 = June 10.
+   sys_seconds boundary = sys_days{1990y/June/10};
+ 
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ }
+ 
+ void
+ test_year_only()
+ {
+   using namespace std::chrono;
+ 
+   // MONTH, DAY and TIME default to January 1st 00:00 if not specified.
+   std::ofstream("tzdata.zi") << R"(# version test_year_only
+ Z Test/YearOnly 0 - A 1990
+                 0 - B
+ Z Test/YearOnlyC 4 - C 1995 # comment
+                  4 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_year_only" );
+ 
+   auto* tz = locate_zone("Test/YearOnly");
+   sys_seconds boundary = sys_days{1990y/January/1};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/YearOnlyC");
+   boundary = sys_days{1995y/January/1} - 4h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ void
+ test_year_month_only()
+ {
+   using namespace std::chrono;
+ 
+   // DAY and TIME default to the 1st 00:00 if not specified.
+   std::ofstream("tzdata.zi") << R"(# version test_year_month_only
+ Z Test/YearMonth 0 - A 1990 Jul
+                  0 - B
+ Z Test/YearMonthC 3 - C 1995 Apr # comment
+                   3 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_year_month_only" );
+ 
+   auto* tz = locate_zone("Test/YearMonth");
+   sys_seconds boundary = sys_days{1990y/July/1};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/YearMonthC");
+   boundary = sys_days{1995y/April/1} - 3h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ void
+ test_year_month_day_only()
+ {
+   using namespace std::chrono;
+ 
+   std::ofstream("tzdata.zi") << R"(# version test_day_only
+ Z Test/DayOnly 0 - A 1997 Mar 12
+                0 - B
+ Z Test/DayOnlyC 5 - C 1998 Jun 14 # comment
+                 5 - D
+ )";
+ 
+   const auto& db = reload_tzdb();
+   VERIFY( override_used ); // If this fails then XFAIL for the target.
+   VERIFY( db.version == "test_day_only" );
+ 
+   auto* tz = locate_zone("Test/DayOnly");
+   sys_seconds boundary = sys_days{1997y/March/12};
+   auto before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "A" );
+   auto at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "B" );
+ 
+   tz = locate_zone("Test/DayOnlyC");
+   boundary = sys_days{1998y/June/14} - 5h;
+   before = tz->get_info(boundary - 1s);
+   VERIFY( before.abbrev == "C" );
+   at = tz->get_info(boundary);
+   VERIFY( at.abbrev == "D" );
+ }
+ 
+ int
+ main()
+ {
+   test_lastsu();
+   test_sun_ge_n();
+   test_sun_le_n();
+   test_year_only();
+   test_year_month_only();
+   test_year_month_day_only();
+ }
diff -Nrcpad gcc-14-20260730/libstdc++-v3/testsuite/std/time/zoned_time/1.cc gcc-14-20260806/libstdc++-v3/testsuite/std/time/zoned_time/1.cc
*** gcc-14-20260730/libstdc++-v3/testsuite/std/time/zoned_time/1.cc	Thu Jul 30 22:32:19 2026
--- gcc-14-20260806/libstdc++-v3/testsuite/std/time/zoned_time/1.cc	Thu Aug  6 22:32:18 2026
*************** test_zurich()
*** 48,71 ****
    const time_zone* const zurich = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16;
  
!     auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
      auto info = z.get_info();
!     VERIFY( info.offset == (34min + 8s) );
      VERIFY( info.abbrev == "LMT" );
  
!     z = zoned_seconds(zurich, d);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, d + 1s);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     auto z2 = zoned_time(zurich, d + 0.001s);
      info = z2.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
--- 48,73 ----
    const time_zone* const zurich = locate_zone("Europe/Zurich");
  
    {
!     sys_days d = 1853y/July/16; // On this date ...
!     auto offset = 34min + 8s;   // ... local time is this far ahead of UTC,
!     auto t = d - offset;        // so LMT to BMT transition is at this time.
  
!     auto z = zoned_seconds(zurich, t - 1s);
      auto info = z.get_info();
!     VERIFY( info.offset == offset );
      VERIFY( info.abbrev == "LMT" );
  
!     z = zoned_seconds(zurich, t);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, t + 1s);
      info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     auto z2 = zoned_time(zurich, t + 0.001s);
      info = z2.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
*************** test_zurich()
*** 73,85 ****
  
    {
      sys_days d = 1894y/June/1;
  
!     auto z = zoned_seconds(zurich, sys_seconds(d) - 1s);
      auto info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, d);
      info = z.get_info();
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
--- 75,89 ----
  
    {
      sys_days d = 1894y/June/1;
+     auto offset = 29min + 46s;
+     auto t = d - offset;
  
!     auto z = zoned_seconds(zurich, t - 1s);
      auto info = z.get_info();
      VERIFY( info.offset == (29min + 46s) );
      VERIFY( info.abbrev == "BMT" );
  
!     z = zoned_seconds(zurich, t);
      info = z.get_info();
      VERIFY( info.offset == 1h );
      VERIFY( info.abbrev == "CET" );
