diff -Nrcpad gcc-16-20260704/LAST_UPDATED gcc-16-20260711/LAST_UPDATED
*** gcc-16-20260704/LAST_UPDATED	Sat Jul  4 22:32:24 2026
--- gcc-16-20260711/LAST_UPDATED	Sat Jul 11 22:32:24 2026
***************
*** 1 ****
! Obtained from git: releases/gcc-16 revision 049dd97dd7e09a04a0492a6573fdc6a7645734b2
--- 1 ----
! Obtained from git: releases/gcc-16 revision aff1672005353f1be41e6cc2423bf0647e2222bc
diff -Nrcpad gcc-16-20260704/MD5SUMS gcc-16-20260711/MD5SUMS
*** gcc-16-20260704/MD5SUMS	Sat Jul  4 22:32:29 2026
--- gcc-16-20260711/MD5SUMS	Sat Jul 11 22:32:29 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-16-20260704.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-16-20260711.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
*** 28,34 ****
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! eff3098abe47509b70a54557f1d2bf46  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
--- 28,34 ----
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 3c944240803a42c5bedb65d9bfb2e4c5  LAST_UPDATED
  935427ff8c5edd363349721844f7ba49  MAINTAINERS
  af43617880b3cd9c10627c97e639d29e  Makefile.def
  734342371d8ccc2c81cb2d8b3d040f33  Makefile.in
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 530,536 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 5037b28454164a045d4fdda3a8630558  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 530,536 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 8756b831a1080f67f05a83073e8aabe2  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 568,574 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! fee34bee455eac96c89f0142038fb5ce  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
--- 568,574 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 367f3e52650f5110e9183c841e87ecd1  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
*************** c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/RE
*** 580,586 ****
  fb2b1a055860b8822b54eb8a42801c44  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 9284b5da30513d9622b0ff9d432c11b9  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 580,586 ----
  fb2b1a055860b8822b54eb8a42801c44  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! b853c140673514c28a3ea13e26beb340  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** d5bed31d915c80f427741d1175ba335a  gcc/ad
*** 796,802 ****
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 08060d82895d9c888322c2927d8008ca  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
--- 796,802 ----
  8be63e29d5aeaf0a16ff7b4dc746e1a4  gcc/ada/exp_code.ads
  e837e02763d429cb690f4aa38c5c1da2  gcc/ada/exp_dbug.adb
  4aedf059cc4ede0c0c0d01a19e99d07d  gcc/ada/exp_dbug.ads
! 6ce5bbaeb05c6aa2ba625345e0bce368  gcc/ada/exp_disp.adb
  4a4f2db1ce2689b32aa03195644a6fd0  gcc/ada/exp_disp.ads
  4a4b9d7a9f03004c8a15a64b412515aa  gcc/ada/exp_dist.adb
  ce990621220fd6489426c319eb93cec4  gcc/ada/exp_dist.ads
*************** ebb1ceb69d6cf8ac2cdc227ae45f0eca  gcc/bi
*** 3286,3292 ****
  cdcd35bde318b22092b0788986b03a47  gcc/builtins.cc
  4dbe6686097ec6c197a24ac373bb9554  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! a7ba78083a30f8c0a045f77578299d4d  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
--- 3286,3292 ----
  cdcd35bde318b22092b0788986b03a47  gcc/builtins.cc
  4dbe6686097ec6c197a24ac373bb9554  gcc/builtins.def
  99d9ddd60ff804d8e24732db43d38bca  gcc/builtins.h
! 417e6a998c073cdf6e79368bf21be8df  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
  aaea141fd41a559841cb76e33800c289  gcc/c-family/c-ada-spec.cc
  f60a13b470e8e51db83383bf9f9f921e  gcc/c-family/c-ada-spec.h
*************** f7be2688a5d3b3987de70c31a6a5e374  gcc/c-
*** 3319,3325 ****
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! 6f9f322124625df8d051fb8538679e17  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  29b7425b7315dcfbd0c9f89296e90df0  gcc/c-family/c-warn.cc
  64f70ea877ef6fdb6e5a9fc36357732d  gcc/c-family/c.opt
--- 3319,3325 ----
  38a6ba552ef0b2855739836a1238dc30  gcc/c-family/c-target.h
  d5acf2497b583d0fedcf4e2ac5f4ac4a  gcc/c-family/c-type-mismatch.cc
  ea821c9d267c64dd8b74aad9d0189834  gcc/c-family/c-type-mismatch.h
! fd7ca62b3bee7fd668a9fa652c835a7d  gcc/c-family/c-ubsan.cc
  298f1278576690ff4398c33310700f52  gcc/c-family/c-ubsan.h
  29b7425b7315dcfbd0c9f89296e90df0  gcc/c-family/c-warn.cc
  64f70ea877ef6fdb6e5a9fc36357732d  gcc/c-family/c.opt
*************** ea821c9d267c64dd8b74aad9d0189834  gcc/c-
*** 3329,3335 ****
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! c42947b982b05fc1c7a7b571d24a5a38  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
--- 3329,3335 ----
  377686cbbf62a7d61d251d3f74cddb5b  gcc/c-family/known-headers.h
  431045382c41554804be1959c1596be4  gcc/c-family/name-hint.h
  3bae9e281cc87b35f63e906373f3b446  gcc/c-family/stub-objc.cc
! 53e51c16be716589d8a54da80502bcf5  gcc/c/ChangeLog
  cbffb341640e7c4b16792e0951fffeca  gcc/c/Make-lang.in
  3920e3ee16f5b5955d40584fea53c441  gcc/c/c-aux-info.cc
  cd5bab8a4deeaa0369ae59b9403d06a2  gcc/c/c-convert.cc
*************** a59a5f126151616976b68fde0c703dd4  gcc/c/
*** 3340,3350 ****
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  1c2de79d0807af2a767aa7abefb07c3a  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 5c03e6237681f8ca9e2a81709f22ebb2  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
  2bb3aa7e53e3cbc63125f017f4a5d67e  gcc/c/c-tree.h
! 8675a6077c7cb5364f6fedf043673e45  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
  3ae90e1d8085765b7e7488ac9673a927  gcc/c/gimple-parser.cc
--- 3340,3350 ----
  62012039da265ed806754029f67a24a9  gcc/c/c-lang.h
  1c2de79d0807af2a767aa7abefb07c3a  gcc/c/c-objc-common.cc
  cbfdd140f14c43c01a6bdf8b1c24b317  gcc/c/c-objc-common.h
! 7134b9c4e9e0bfa6b70caeb3d14559c7  gcc/c/c-parser.cc
  f6b634d7c0204c419cf4fb7b48193fad  gcc/c/c-parser.h
  4db955734effe2d0c9aac0379d2e6a8c  gcc/c/c-tree.def
  2bb3aa7e53e3cbc63125f017f4a5d67e  gcc/c/c-tree.h
! 09dcb403ecb13338412bef87f3df0323  gcc/c/c-typeck.cc
  5804f7ee3eccdfb7c9a64e40b20ccc79  gcc/c/config-lang.in
  58370619d5c4739b7d81d5f899913a0c  gcc/c/gccspec.cc
  3ae90e1d8085765b7e7488ac9673a927  gcc/c/gimple-parser.cc
*************** ef1ce762dfa6300b426ed1df70cd6069  gcc/co
*** 3547,3553 ****
  c83c76f931da0477c57103c5ec677568  gcc/config/aarch64/aarch64-narrow-gp-writes.cc
  c058178535c874c3d9f517b5db804691  gcc/config/aarch64/aarch64-neon-sve-bridge-builtins.def
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
! 4ac96a19bb5198741503893e13567775  gcc/config/aarch64/aarch64-option-extensions.def
  2cdaca2f6acccb800d5965b66c5168ce  gcc/config/aarch64/aarch64-opts.h
  c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/config/aarch64/aarch64-passes.def
  533b86c66767379e8735428e530b8ede  gcc/config/aarch64/aarch64-protos.h
--- 3547,3553 ----
  c83c76f931da0477c57103c5ec677568  gcc/config/aarch64/aarch64-narrow-gp-writes.cc
  c058178535c874c3d9f517b5db804691  gcc/config/aarch64/aarch64-neon-sve-bridge-builtins.def
  99262ad964faab9a1090f68a8b3d6d7a  gcc/config/aarch64/aarch64-netbsd.h
! 7f0d9c465225bebd81ffece3f482224c  gcc/config/aarch64/aarch64-option-extensions.def
  2cdaca2f6acccb800d5965b66c5168ce  gcc/config/aarch64/aarch64-opts.h
  c58a041b3d1a2f2c6c49f13e8ad85fdc  gcc/config/aarch64/aarch64-passes.def
  533b86c66767379e8735428e530b8ede  gcc/config/aarch64/aarch64-protos.h
*************** e3b84b8c70b76f20a6d8123da2876317  gcc/co
*** 3576,3582 ****
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
  f8f181c4df2353358a3f66071820430a  gcc/config/aarch64/aarch64-sve.md
  78d4791112b168ff5157e8e4c95a40a5  gcc/config/aarch64/aarch64-sve2.md
! ce756734c2d086ac2b6f48267acb68ea  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  45c6b1a7ca031f6a0af001317cc5e476  gcc/config/aarch64/aarch64-tuning-flags.def
--- 3576,3582 ----
  88f4473ff255da227dee1dbc66c11a5f  gcc/config/aarch64/aarch64-sve-builtins.h
  f8f181c4df2353358a3f66071820430a  gcc/config/aarch64/aarch64-sve.md
  78d4791112b168ff5157e8e4c95a40a5  gcc/config/aarch64/aarch64-sve2.md
! 9482a051d967c399dfed0923c294de3f  gcc/config/aarch64/aarch64-sys-regs.def
  e101bed95b5d0264c364d8bcf1a7705f  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  45c6b1a7ca031f6a0af001317cc5e476  gcc/config/aarch64/aarch64-tuning-flags.def
*************** be7f06e3ea032dfb39fcda012c812683  gcc/co
*** 4290,4296 ****
  16abb65175df4287dab5911bc51933d2  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 5a4e3cda74f475c95f4340b87c3d0162  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
  3acf3a68fd0f86d37478034e149ab9b4  gcc/config/i386/i386-features.cc
  473c35b162be3bcf222c90a16f72b948  gcc/config/i386/i386-features.h
--- 4290,4296 ----
  16abb65175df4287dab5911bc51933d2  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 3c3cfc49975f021e01f56f7ec68aed9e  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
  3acf3a68fd0f86d37478034e149ab9b4  gcc/config/i386/i386-features.cc
  473c35b162be3bcf222c90a16f72b948  gcc/config/i386/i386-features.h
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 4371,4377 ****
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  5b7a5d6bd6f2cbb1ca44a113b598ee56  gcc/config/i386/sol2.h
! c7e21c40eebfbcec930c97816d8e1ba5  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
--- 4371,4377 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  5b7a5d6bd6f2cbb1ca44a113b598ee56  gcc/config/i386/sol2.h
! 57a6095b219a994e435e61bd874ef0dc  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  a626b4e6cd3e15f4e9d5c769b6391243  gcc/config/i386/subst.md
*************** c22e895e5b7e6b98c7223b26982a5d20  gcc/co
*** 4424,4430 ****
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  32bfe52b71dd89980a3ca6adeeea9154  gcc/config/i386/x86-tune-sched.cc
! 798ee23e820c3fb8a3bfd2471736fd0b  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
--- 4424,4430 ----
  7bfce4f9fdee1dc1db1e668b10d9d8e2  gcc/config/i386/x86-tune-sched-bd.cc
  864e537089cc92c5002cefd76ede977a  gcc/config/i386/x86-tune-sched-core.cc
  32bfe52b71dd89980a3ca6adeeea9154  gcc/config/i386/x86-tune-sched.cc
! ba1201b8f61876f3a1120f9354b10746  gcc/config/i386/x86-tune.def
  75b1f0e8f79cfd04f898a4099aff669d  gcc/config/i386/x86gprintrin.h
  e5335d55cec73bd3270862ccac7a02e8  gcc/config/i386/x86intrin.h
  76f88cf5ac857d392ddb81b244c5b9b0  gcc/config/i386/xm-cygwin.h
*************** ea47b9aaff57a2a9d2393ed60a70f379  gcc/co
*** 4926,4937 ****
  0800c027b50e3ddb0bdb4cedbcf57204  gcc/config/or1k/linux.h
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
! 9377f178d70af1bc66bc030a50dbe624  gcc/config/or1k/or1k.cc
! 41ea77ba00a7d899c45539f070a4e223  gcc/config/or1k/or1k.h
! a894bd2d205ea28000b59beafbc66a68  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
! 22651fbf09588000bcc7dc3b88c0425e  gcc/config/or1k/predicates.md
  a5e069c8411385e0dd7b7d87772309de  gcc/config/or1k/rtems.h
  7eada3f04e4e90cbbbe07969b46f0837  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
--- 4926,4937 ----
  0800c027b50e3ddb0bdb4cedbcf57204  gcc/config/or1k/linux.h
  8c4edc2eb61a43fb9f67ceb977f850e1  gcc/config/or1k/or1k-opts.h
  0dc32c21bc6353a22cc723aa5e94e7c4  gcc/config/or1k/or1k-protos.h
! 96775b7a78096c90b1c999a76b4990a6  gcc/config/or1k/or1k.cc
! f8a5d88356a5ff970c4d25b031bbb42f  gcc/config/or1k/or1k.h
! 4b941c870642561e5c1e9b86f495c7b2  gcc/config/or1k/or1k.md
  db353534acb45de5e73096b05454650a  gcc/config/or1k/or1k.opt
  d32c4ec7b5de81e93a91bbcadbbb3527  gcc/config/or1k/or1k.opt.urls
! 856fe0ca96e194ab13583b8ddb763f29  gcc/config/or1k/predicates.md
  a5e069c8411385e0dd7b7d87772309de  gcc/config/or1k/rtems.h
  7eada3f04e4e90cbbbe07969b46f0837  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
*************** ccf120397e978f8cd4ed98cbe2c0d4f5  gcc/co
*** 5020,5026 ****
  f4143eaeb6de99083ec3a0020c13454c  gcc/config/riscv/andes_vector.h
  d0d6d98b21b9aa7a3fe468662ebd6e63  gcc/config/riscv/arch-canonicalize
  417b8618e28f5898a9ed47930254d68f  gcc/config/riscv/autovec-opt.md
! 49d1bc6364b4c8e48fa9de0f145a0997  gcc/config/riscv/autovec.md
  098363f130229da2a5e56c9c7e7ace93  gcc/config/riscv/bitmanip.md
  9a8c3c567d897ebcb2cfe1b14c449222  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
--- 5020,5026 ----
  f4143eaeb6de99083ec3a0020c13454c  gcc/config/riscv/andes_vector.h
  d0d6d98b21b9aa7a3fe468662ebd6e63  gcc/config/riscv/arch-canonicalize
  417b8618e28f5898a9ed47930254d68f  gcc/config/riscv/autovec-opt.md
! c82da3cd628587b1a905d7b7f8100e78  gcc/config/riscv/autovec.md
  098363f130229da2a5e56c9c7e7ace93  gcc/config/riscv/bitmanip.md
  9a8c3c567d897ebcb2cfe1b14c449222  gcc/config/riscv/constraints.md
  4e0968dc35562b151fd162778542718f  gcc/config/riscv/corev.def
*************** d70f08b893e019d12b16dc9a70754ef9  gcc/co
*** 5177,5183 ****
  efc4d9cc6fcf24af7ea6e89c0c82127f  gcc/config/rs6000/aix72.h
  1d313bdc511e984bdf559d61807bde14  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
! f03bdef1224a610cfb7130f3c687b87f  gcc/config/rs6000/altivec.md
  505a3f0e71f54fbea2fbd87b1c032185  gcc/config/rs6000/amo.h
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
--- 5177,5183 ----
  efc4d9cc6fcf24af7ea6e89c0c82127f  gcc/config/rs6000/aix72.h
  1d313bdc511e984bdf559d61807bde14  gcc/config/rs6000/aix73.h
  ae4bd752599ffdd2833c6e78d03d39f0  gcc/config/rs6000/altivec.h
! 419efb9e6b152f546f921bc6bd175c11  gcc/config/rs6000/altivec.md
  505a3f0e71f54fbea2fbd87b1c032185  gcc/config/rs6000/amo.h
  2b409a82a1747675112a04705e01d157  gcc/config/rs6000/biarch64.h
  f83fd3bf0d9fbc30c9401eec549fdc2c  gcc/config/rs6000/bmi2intrin.h
*************** db237fc1717a4075e7b9480205a32fd5  gcc/co
*** 5244,5263 ****
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 9d6e3642f81b371d186717d3d443741c  gcc/config/rs6000/rs6000-builtin.cc
! 010031868edf76618f069fc191ba34a5  gcc/config/rs6000/rs6000-builtins.def
  bb710aa9f6e98d46357a2a10104dda23  gcc/config/rs6000/rs6000-c.cc
  c97babd518212b16f2837b9b1d5d8359  gcc/config/rs6000/rs6000-call.cc
  4579aba833c122ad0e6a91b573653e2c  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
! 9e2905c5e0b10bcbf6e70f323c37bbdf  gcc/config/rs6000/rs6000-gen-builtins.cc
  c165dfc83b2c9e75d3906f429e76a3fa  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
  4768cacdca0b901f6cb649726cca5eeb  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
  e6f2820356a7ee18c353376ab3490fb6  gcc/config/rs6000/rs6000-opts.h
! d7427b95ab9b1b6a0f245c77b298f61f  gcc/config/rs6000/rs6000-overload.def
  dc46fa102175551da2f4ce2ee5c6435c  gcc/config/rs6000/rs6000-p8swap.cc
  da37007432adac35e44d7592e307e64a  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
--- 5244,5263 ----
  25ea383c1f398321c28d21896c9d79db  gcc/config/rs6000/predicates.md
  63ccc96ff2cef948c080eac4455d02b1  gcc/config/rs6000/rbtree.cc
  8ece9ca8167f5056fa411488a97c6131  gcc/config/rs6000/rbtree.h
! 5a8a620d69be5ade28e15be87ec36b9a  gcc/config/rs6000/rs6000-builtin.cc
! 7c79c4da4bc1e2778ae41c1ac02bb00e  gcc/config/rs6000/rs6000-builtins.def
  bb710aa9f6e98d46357a2a10104dda23  gcc/config/rs6000/rs6000-c.cc
  c97babd518212b16f2837b9b1d5d8359  gcc/config/rs6000/rs6000-call.cc
  4579aba833c122ad0e6a91b573653e2c  gcc/config/rs6000/rs6000-cpus.def
  7b860836fdc33cdfdd29f6348a553096  gcc/config/rs6000/rs6000-d.cc
  1ac6ae1e7d6d83d76667769f7166b9a7  gcc/config/rs6000/rs6000-d.h
! b1bbe3e57fef362260e8c8ccae80c4ba  gcc/config/rs6000/rs6000-gen-builtins.cc
  c165dfc83b2c9e75d3906f429e76a3fa  gcc/config/rs6000/rs6000-internal.h
  68da03c0d0c1dfafebf4ba706e6d3ff9  gcc/config/rs6000/rs6000-linux.cc
  4768cacdca0b901f6cb649726cca5eeb  gcc/config/rs6000/rs6000-logue.cc
  108998dcf0201ccd3e147d71251ca9f6  gcc/config/rs6000/rs6000-modes.def
  e6f2820356a7ee18c353376ab3490fb6  gcc/config/rs6000/rs6000-opts.h
! 4024b6c90a02376724000e7a2b720da7  gcc/config/rs6000/rs6000-overload.def
  dc46fa102175551da2f4ce2ee5c6435c  gcc/config/rs6000/rs6000-p8swap.cc
  da37007432adac35e44d7592e307e64a  gcc/config/rs6000/rs6000-passes.def
  384645a6c72587ac7501915a0c737e64  gcc/config/rs6000/rs6000-pcrel-opt.cc
*************** da37007432adac35e44d7592e307e64a  gcc/co
*** 5267,5273 ****
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
  43c48798ca1e7e10c5d7cef5a074429a  gcc/config/rs6000/rs6000.cc
  022807cee92311bbde8050337f5e7efb  gcc/config/rs6000/rs6000.h
! a575dd5c5592c7d23a9b53b985c01120  gcc/config/rs6000/rs6000.md
  e407423336f12658b509205c3e8f7130  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
--- 5267,5273 ----
  ce8de9a27f36b759a69194616c02eb38  gcc/config/rs6000/rs6000-tables.opt.urls
  43c48798ca1e7e10c5d7cef5a074429a  gcc/config/rs6000/rs6000.cc
  022807cee92311bbde8050337f5e7efb  gcc/config/rs6000/rs6000.h
! 11c245f6d6d6de23948bd798f0994c16  gcc/config/rs6000/rs6000.md
  e407423336f12658b509205c3e8f7130  gcc/config/rs6000/rs6000.opt
  80708ca71755b0d8d354f113f0617617  gcc/config/rs6000/rs6000.opt.urls
  89d4cadf8216efa86b72204e660cc4b0  gcc/config/rs6000/rs64.md
*************** f11925c88524d2fd457bf77944da1302  gcc/co
*** 5307,5313 ****
  da79297ad0c4c71553a67c1c8659d7f0  gcc/config/rs6000/tmmintrin.h
  88417b4d808d053378108ca755b5e5ce  gcc/config/rs6000/vec_types.h
  d25d99ecfc5b7d30303b228b0b6b2b9d  gcc/config/rs6000/vector.md
! be8468d388318201cc9599b2a617425e  gcc/config/rs6000/vsx.md
  e01b246a8cdac36ad716112dbba238f9  gcc/config/rs6000/vxworks.h
  879b35d5e026800c40c13e663df8c5f9  gcc/config/rs6000/vxworksae.h
  aa45c89828fac6551d8d57309cf26ec0  gcc/config/rs6000/vxworksmils.h
--- 5307,5313 ----
  da79297ad0c4c71553a67c1c8659d7f0  gcc/config/rs6000/tmmintrin.h
  88417b4d808d053378108ca755b5e5ce  gcc/config/rs6000/vec_types.h
  d25d99ecfc5b7d30303b228b0b6b2b9d  gcc/config/rs6000/vector.md
! d20b0a90930c8dfaa9317e5cc5fd4962  gcc/config/rs6000/vsx.md
  e01b246a8cdac36ad716112dbba238f9  gcc/config/rs6000/vxworks.h
  879b35d5e026800c40c13e663df8c5f9  gcc/config/rs6000/vxworksae.h
  aa45c89828fac6551d8d57309cf26ec0  gcc/config/rs6000/vxworksmils.h
*************** aa396b24681954cbcd0cd64bf19d469c  gcc/co
*** 5366,5372 ****
  4a9d0190b77f29fbb14fa9706732f297  gcc/config/s390/s390-protos.h
  9c1f66dbea5f81fc8c225f2484ade596  gcc/config/s390/s390.cc
  c945413f70f4d804e12812f916b8d87b  gcc/config/s390/s390.h
! c92001b6aaf6112d8ac33bb2a91f4e1a  gcc/config/s390/s390.md
  ae1754efd7785ad08c6cc930dd08c7ae  gcc/config/s390/s390.opt
  90a97a731513f3119bb12e022497e9ab  gcc/config/s390/s390.opt.urls
  07efe01a921b4fb261d6e59abf21a268  gcc/config/s390/s390intrin.h
--- 5366,5372 ----
  4a9d0190b77f29fbb14fa9706732f297  gcc/config/s390/s390-protos.h
  9c1f66dbea5f81fc8c225f2484ade596  gcc/config/s390/s390.cc
  c945413f70f4d804e12812f916b8d87b  gcc/config/s390/s390.h
! d56435e0a8ad0f3fdb33b09749ee6c2a  gcc/config/s390/s390.md
  ae1754efd7785ad08c6cc930dd08c7ae  gcc/config/s390/s390.opt
  90a97a731513f3119bb12e022497e9ab  gcc/config/s390/s390.opt.urls
  07efe01a921b4fb261d6e59abf21a268  gcc/config/s390/s390intrin.h
*************** db7b2e9490086922f942532dd544a0f6  gcc/co
*** 5402,5408 ****
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
  4f0dc68143f7ce6e3a71515c53599217  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! c224a78f871d5a6955c504366fcf9499  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
--- 5402,5408 ----
  fb8513c0c66fb1a6e8d5cde7b08975c5  gcc/config/sh/sh-protos.h
  4f0dc68143f7ce6e3a71515c53599217  gcc/config/sh/sh.cc
  de5433ad4ca4e28cd54d4ff7e2862435  gcc/config/sh/sh.h
! b4e2e70e64012662ec41388ce782528e  gcc/config/sh/sh.md
  10ed22d9ca9d7ec14fcf6b1a936fbf8d  gcc/config/sh/sh.opt
  8bfaebe9773073f4977ba6b37f472071  gcc/config/sh/sh.opt.urls
  95f5ec03805045e1d73c1e77a70ac975  gcc/config/sh/sh1.md
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5646,5652 ****
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 31049184815092655b6663b56042eb8d  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5646,5652 ----
  55a33ae415bde0fd2e36ba584894e50b  gcc/coroutine-passes.cc
  c10700723a41c720aada0096f369147e  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! e9ca7ac644b3488ba4be075b44b913e3  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** eba8d8a1725223519fba5d4d69afd5c9  gcc/cp
*** 5701,5713 ****
  370b42bcdf211125186c37665052c30c  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
! 17cc7ca500eca3937ea23882c59a0531  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 216eb8d0cb5484841a2ade69c8c0365d  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  480696ad09d3c6330dccc983d9ddb7e2  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
--- 5701,5713 ----
  370b42bcdf211125186c37665052c30c  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  bc9b29434f2e35fa68caf656161b5c0f  gcc/cp/cp-tree.def
! f53ddf06036f74142c61f4a8ef1b994d  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
  0f660920514d4f51007f6841a25e3af6  gcc/cp/cvt.cc
  f067718cf3d629084d8347c4e017afd4  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 6343aa15a5988bdbd5ec687d4fc22e88  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  480696ad09d3c6330dccc983d9ddb7e2  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
*************** a623e932155ebd343ebda5f7f54e7eb4  gcc/cp
*** 5738,5747 ****
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
  4410c287a91ef7a1513038254d1918d4  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! 576554b2faad7e50b2a9eaf9400ce372  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  ed044462caa5bbab93e33fd297bc5d7c  gcc/cp/search.cc
! 4acab222c93cb7142bc1ba4a29678610  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  170e68fe35a2d8e6f4e3685a5fbba9cb  gcc/cp/tree.cc
--- 5738,5747 ----
  7973a34c47e3d3c580832655a3a5c3c2  gcc/cp/parser.h
  4410c287a91ef7a1513038254d1918d4  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! c413badcb6b21c22659185869938f46f  gcc/cp/reflect.cc
  6ae3f1ff3ba804579da14445501f9181  gcc/cp/rtti.cc
  ed044462caa5bbab93e33fd297bc5d7c  gcc/cp/search.cc
! 4180146cbda2606eeb09a1b7ecb7eb34  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
  170e68fe35a2d8e6f4e3685a5fbba9cb  gcc/cp/tree.cc
*************** ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/do
*** 6131,6137 ****
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 2ce0e0797afda51171d78f2643f7c252  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
--- 6131,6137 ----
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 78678e1f2621f8e3d9e3cbb60799f03e  gcc/doc/extend.texi
  483a7b956113f0370528460e842ff7b0  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  66d5868616d429f3e34b575b3efc6ccc  gcc/doc/gcc.texi
*************** dc4ccd9843d88bc01c909438dabfd6ab  gcc/do
*** 6146,6152 ****
  5f2ceccace2ed8e79100ae9c90d97753  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
! c34291177d871e1c1ab8e9ceb62e52ad  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
--- 6146,6152 ----
  5f2ceccace2ed8e79100ae9c90d97753  gcc/doc/gty.texi
  16bc58e98e83e3a41c9417ad0738c650  gcc/doc/headerdirs.texi
  cb2462af7cefb9323958455da8bb29f8  gcc/doc/hostconfig.texi
! 2a9537781b4ad69483515b1111cf4e28  gcc/doc/ifn.texi
  27f346799737382c572e0b085fa46374  gcc/doc/implement-c.texi
  750c860cd31bb47133ca5da76d82247d  gcc/doc/implement-cxx.texi
  8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
*************** c34291177d871e1c1ab8e9ceb62e52ad  gcc/do
*** 6156,6162 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e7629f6355c3902826e219f4c9bfae3a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 6251958f26bb9e1a335452081860f4c4  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6156,6162 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  e7629f6355c3902826e219f4c9bfae3a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 85b62d086a49cb705a2a319b440cf9a5  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** f80b38c70a85f9aeae9688b937b028ba  gcc/fi
*** 6271,6277 ****
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! 9501c056e58b54d5a7a617c556cf54d3  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6271,6277 ----
  50b999b375e3a5a95a002f592e6d4514  gcc/fold-const.cc
  0ec02a37dbbe9cb267f0ea1263085ed3  gcc/fold-const.h
  a0df3d274ac009d203209a191738cec6  gcc/fold-mem-offsets.cc
! bc12edafdec50e13bcb20c63b57051e7  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** bcb129d4d143e6ec42b4ddec1fea30b8  gcc/fo
*** 6303,6309 ****
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  ffbcec5b8defe520ab727e0fe1875285  gcc/fortran/check.cc
! b66e64dc02ce436a3fb6674ac7168faa  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
--- 6303,6309 ----
  dd3d4373e33e0a14abdf26814a44662b  gcc/fortran/array.cc
  bc40e87bca719f86583a020eff2d6a73  gcc/fortran/bbt.cc
  ffbcec5b8defe520ab727e0fe1875285  gcc/fortran/check.cc
! b85da198ed6d809a2dd195ead5feb4c1  gcc/fortran/class.cc
  298c8e9139027305d0c5530e148f0c82  gcc/fortran/coarray.cc
  ee80d28f835ba80db395760139037e11  gcc/fortran/config-lang.in
  8a0026117bea2831adebb2edc422fb55  gcc/fortran/constructor.cc
*************** ac7321680382b23989a6637e02dfb80e  gcc/fo
*** 6318,6324 ****
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
  92eabba856b28ff0e94dd74e8655cfc1  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! 8b02343f75ef7cf3f9a4b9e0599abadc  gcc/fortran/expr.cc
  354927f6cb797cd538c0ab8ab0e552bb  gcc/fortran/f95-lang.cc
  1f62fbd5c721df651182e953c13f6789  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
--- 6318,6324 ----
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
  92eabba856b28ff0e94dd74e8655cfc1  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! 86d482bc22f125ecab63e529d7bad967  gcc/fortran/expr.cc
  354927f6cb797cd538c0ab8ab0e552bb  gcc/fortran/f95-lang.cc
  1f62fbd5c721df651182e953c13f6789  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
*************** afb07146daad7f36a59c52e053f6772f  gcc/fo
*** 6326,6332 ****
  19f6b89e3aeb2bc4bd5df602aac79552  gcc/fortran/gfortran.h
  8fe0c8cc43e7ed982c602f58b4086351  gcc/fortran/gfortran.texi
  9da0114ccf35340d3035f21f8a0f3325  gcc/fortran/gfortranspec.cc
! 17a457d08870deec8d3cd53f6d6b65fc  gcc/fortran/interface.cc
  7e06cc5337aba27172fe64c673314c64  gcc/fortran/intrinsic.cc
  285cce3e348dd08fbaf339358ac57d51  gcc/fortran/intrinsic.h
  a1ee99c7b297b6d9d3face6f53d898e0  gcc/fortran/intrinsic.texi
--- 6326,6332 ----
  19f6b89e3aeb2bc4bd5df602aac79552  gcc/fortran/gfortran.h
  8fe0c8cc43e7ed982c602f58b4086351  gcc/fortran/gfortran.texi
  9da0114ccf35340d3035f21f8a0f3325  gcc/fortran/gfortranspec.cc
! 57a7b0248a50e8931f48c864800d4ec9  gcc/fortran/interface.cc
  7e06cc5337aba27172fe64c673314c64  gcc/fortran/intrinsic.cc
  285cce3e348dd08fbaf339358ac57d51  gcc/fortran/intrinsic.h
  a1ee99c7b297b6d9d3face6f53d898e0  gcc/fortran/intrinsic.texi
*************** f7735c64af748cdef5caffae58a94749  gcc/fo
*** 6345,6356 ****
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! a465af66dbc504ea8aab1ad5d516072d  gcc/fortran/module.cc
  f2d1ba26cdd272c08e7647dfefdddb86  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
  b7e44a78995adf94a6b590f79d401976  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
! d8018f6b8422ec272ff0ef8a7bd1d39d  gcc/fortran/primary.cc
  0ede0460e923ef8dbfd48f942a57fc8f  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
--- 6345,6356 ----
  bf54232c4c950ed772f4964c4f79629e  gcc/fortran/matchexp.cc
  915f6b30a8c22a5fea18690269a5a4a4  gcc/fortran/mathbuiltins.def
  9687294592a5ccef5d0b8254ab33816b  gcc/fortran/misc.cc
! 0a805c97950868c187d1ddc53b9c54b4  gcc/fortran/module.cc
  f2d1ba26cdd272c08e7647dfefdddb86  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
  b7e44a78995adf94a6b590f79d401976  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
! 652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
  0ede0460e923ef8dbfd48f942a57fc8f  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
*************** cbdc87ddd4ad5837f1771e93f704a33e  gcc/fo
*** 6359,6365 ****
  4b2b2875fbf208dea82ae5e9aa96a2c1  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 460fff2b0ca339433b581302c66aa736  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
--- 6359,6365 ----
  4b2b2875fbf208dea82ae5e9aa96a2c1  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! e3298abf5ab0c10dec6f2f9705078ef8  gcc/fortran/trans-array.cc
  a0c40b654df0b5c5213047d26e48e97a  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  98960d7450a15e1ecc9789bd0bde16a7  gcc/fortran/trans-const.cc
*************** ea168cbe279a9f5955218fc5d10d09c5  gcc/in
*** 6673,6685 ****
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! 467334ce1af8fb3e604c10cbab34aeb2  gcc/internal-fn.cc
! 4c5494dff903825d1d305853c27e1d1c  gcc/internal-fn.def
! 0e20e6632437546e842299f8f436cfdf  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
  920db3effdd509146b3f00be906c0885  gcc/ipa-comdats.cc
! 5404630cd27ac3f8e27db5f500fd775d  gcc/ipa-cp.cc
  4d6f3ed19a0000835b68366644c08a7e  gcc/ipa-cp.h
  0951d893930a76f52aa7e3f0fbd7201e  gcc/ipa-devirt.cc
  ae1e2041798741a74dbd720bfa8af4c5  gcc/ipa-fnsummary.cc
--- 6673,6685 ----
  80bc6558521a56fa4936fc0de8d01aca  gcc/insn-addr.h
  7b76bd07f7eca4ab18a5cb546ce1c919  gcc/insn-notes.def
  c7c9628cd16fe3e0263939ceb0a865fa  gcc/int-vector-builder.h
! 2463af1f8e6c223506e64b465c4afed6  gcc/internal-fn.cc
! b6978586e5ca10aa5dc5743fb6378f35  gcc/internal-fn.def
! d5b393ecc0c0636412e1ac221afb5c69  gcc/internal-fn.h
  8a34b6abb2591b8c30c7fb4187261ee3  gcc/intl.cc
  22c5866f6858fea288e5e2f1adc96e40  gcc/intl.h
  920db3effdd509146b3f00be906c0885  gcc/ipa-comdats.cc
! bfdbddb1ca7bf39fee751e0717f42cdf  gcc/ipa-cp.cc
  4d6f3ed19a0000835b68366644c08a7e  gcc/ipa-cp.h
  0951d893930a76f52aa7e3f0fbd7201e  gcc/ipa-devirt.cc
  ae1e2041798741a74dbd720bfa8af4c5  gcc/ipa-fnsummary.cc
*************** f24751f278bee1ac8dc861467d9f96a3  gcc/ta
*** 8726,8732 ****
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 877e16ef4a214dbff79c77a75adfd0a7  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8726,8732 ----
  bf20a6542e361b29f15f9f2b47d47e2f  gcc/targhooks.cc
  b1068b0d3d77d5a55802a29a9f8a08d7  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! ab566d443e2a79cb4a7d295e8fd6006a  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** c951a3e5bb4bc2d67ee9dcf55822ab1e  gcc/te
*** 29657,29662 ****
--- 29657,29663 ----
  dc5fdccda9bb74a8259751885239a45b  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
  3cf98e82d56549304f8eada21a181a96  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
  84804685f4de259de28700f0e1eed24c  gcc/testsuite/g++.dg/cpp2a/typedef1.C
+ d80f1739867f4f309f1e8556290d280d  gcc/testsuite/g++.dg/cpp2a/typedef2.C
  5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
  da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
  736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
*************** a66e1dc9964c7702e9ecdb5be8553fb5  gcc/te
*** 38050,38055 ****
--- 38051,38059 ----
  485cae337b48a98f34af212dc8b5ceb5  gcc/testsuite/g++.dg/reflect/type_trait13.C
  bc0bf40e9258e25c6c46ff13963f154e  gcc/testsuite/g++.dg/reflect/type_trait14.C
  a83cc3892e30ad8d151bdc1664d00e8a  gcc/testsuite/g++.dg/reflect/type_trait15.C
+ 3c4ce9c12aad934ef58167b14a09fdbf  gcc/testsuite/g++.dg/reflect/type_trait16.C
+ 1355703bbad45eb1e5752093965f07b1  gcc/testsuite/g++.dg/reflect/type_trait17.C
+ 62651ac149dfe8423fe4586793e7377a  gcc/testsuite/g++.dg/reflect/type_trait18.C
  06a1343d9aeb1caa65048fdecda31245  gcc/testsuite/g++.dg/reflect/type_trait2.C
  c957460ae45089ece9b5352a7de1f5fc  gcc/testsuite/g++.dg/reflect/type_trait3.C
  6a48574284311a70358d27e1b45595b3  gcc/testsuite/g++.dg/reflect/type_trait4.C
*************** ca7e5de7ae44ae6b5bb729e4d9eadc6f  gcc/te
*** 53567,53572 ****
--- 53571,53577 ----
  f90b8d83aba1cc7359d672c46fd07a9a  gcc/testsuite/gcc.dg/counted-by-anonymous-2.c
  2e612baabc05d361cda086f6a663da17  gcc/testsuite/gcc.dg/counted-by-anonymous-3.c
  5b22fc4910c9bfeecd988a4d23f85456  gcc/testsuite/gcc.dg/counted-by-anonymous.c
+ 69bea97c9f3c6849e1179970d95d06dc  gcc/testsuite/gcc.dg/counted-by-unary.c
  c797c0159985b6cfaaf4ab160451c3a4  gcc/testsuite/gcc.dg/countof-compat.c
  cfd1e5fcba6e1e17d853d6d14a40057b  gcc/testsuite/gcc.dg/countof-compile.c
  608b1948fb6a190311fada69744220cd  gcc/testsuite/gcc.dg/countof-no-compat.c
*************** fc7c9c751d59b444d0ab30c4d9029491  gcc/te
*** 56834,56839 ****
--- 56839,56845 ----
  2b41b4e284752d0785412cf47f5b3f6d  gcc/testsuite/gcc.dg/ipa/pr122458.c
  888d33a20f8dcb2d65f085d84f66723e  gcc/testsuite/gcc.dg/ipa/pr123542.c
  187b807400791bf18a7a1f9f9ce8a4a7  gcc/testsuite/gcc.dg/ipa/pr123543.c
+ 1ad60a396b302c2970c25767a4f919eb  gcc/testsuite/gcc.dg/ipa/pr124128.c
  72900ba4925dafc06ee62e16c28d6287  gcc/testsuite/gcc.dg/ipa/pr124777.c
  c8295ff7fd7e271d17e7609620f5dfcb  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
*************** b2e314205231dfc3005d83207407379b  gcc/te
*** 58774,58779 ****
--- 58780,58786 ----
  e43dcd43531182c1839bc3842972ef9a  gcc/testsuite/gcc.dg/pr123475.c
  2e58c4d553f61913c629f0f4e16cef6c  gcc/testsuite/gcc.dg/pr123537.c
  40c720d493fdf466beac8d906dcdb821  gcc/testsuite/gcc.dg/pr123544.c
+ 8d3ac6e76d67ce6bf826708e2e01a8c4  gcc/testsuite/gcc.dg/pr123569.c
  b64bff50aa325d3cdf648a6b7fec2e46  gcc/testsuite/gcc.dg/pr123656.c
  1d51dc92bcea9d1f45d53070aed9c180  gcc/testsuite/gcc.dg/pr123672.c
  46c8447cd9ed9e727c11f1f0d3e8967d  gcc/testsuite/gcc.dg/pr123716.c
*************** f733cdb22a88b058648393623d505a3f  gcc/te
*** 58789,58794 ****
--- 58796,58802 ----
  f85e3805a900aeb94e96e6ea1712a125  gcc/testsuite/gcc.dg/pr124809.c
  7de6d79dfadd35bbdff0e2c5faa767a3  gcc/testsuite/gcc.dg/pr124985.c
  4ac96a747a32d5c51b5be5c05cdd21c5  gcc/testsuite/gcc.dg/pr125019.c
+ 3c7423a9897969335d65075272d17e19  gcc/testsuite/gcc.dg/pr125072.c
  192df6769f6f110bb8f33708a1ceeea9  gcc/testsuite/gcc.dg/pr125117.c
  1aeae21fcabe269ed5b59c08143b85d4  gcc/testsuite/gcc.dg/pr125173-1.c
  7b30511bd41fb50fefd587c42e5d984c  gcc/testsuite/gcc.dg/pr125252.c
*************** b6636fcf606d4b2a9b3c129b082bc808  gcc/te
*** 66579,66586 ****
  ff67662e443c4c2342a61fcc8b49fa51  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
  a54b7ba09da80c0c34480370f680bd80  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
  6347b95d14e1d49cc381a4e01ce31162  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
! a1ffc0a57c0651fd28b468f33372ff64  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
! e996be05f2813b3912182783baab0bc8  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
  05bb20a3d7386d43eb1e3dd852eeffe3  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-2.c
  9a2a9a3d06ff9ff7cb6952d4035bdbe0  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-3.c
  90a10543424a4e0854a58f9c2eaea888  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-4.c
--- 66587,66594 ----
  ff67662e443c4c2342a61fcc8b49fa51  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-char.c
  a54b7ba09da80c0c34480370f680bd80  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-float.c
  6347b95d14e1d49cc381a4e01ce31162  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-struct.c
! 4c01ea0cb9bba47599b5343c8581bb4b  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
! 87b8899801db198bf582474f2c79ed45  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
  05bb20a3d7386d43eb1e3dd852eeffe3  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-2.c
  9a2a9a3d06ff9ff7cb6952d4035bdbe0  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-3.c
  90a10543424a4e0854a58f9c2eaea888  gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-4.c
*************** d5b3fbe2571cb9f95ff3b80e54a79a15  gcc/te
*** 71573,71578 ****
--- 71581,71587 ----
  a588c84982135f60225d2a017f7b53df  gcc/testsuite/gcc.target/aarch64/pr124078-1.c
  3416e11e7fd77f36803f713303e6145a  gcc/testsuite/gcc.target/aarch64/pr124167.c
  092b09603aba6f2d4c58084993c984b1  gcc/testsuite/gcc.target/aarch64/pr124572.c
+ 2b9d8264fb91bce4c0404a56eed28b74  gcc/testsuite/gcc.target/aarch64/pr125597.c
  b925908f19e4f112a6a854e9b34023c4  gcc/testsuite/gcc.target/aarch64/pr125795.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
*************** e94286eccc733d11a63447fdd9bada99  gcc/te
*** 82985,82991 ****
  3a8f07748adbffc9bb3f16173e9a3fd9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  74dfb9efd2ea82e303d28ac1d2ec908b  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  91b223ff92af83526eb2bf8c06358638  gcc/testsuite/gcc.target/arm/thumb2-switchstatement.c
! 661cd52deb4f860aae4c6c1b1e062e57  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  b5cb0cc39d4570e0da1e85821a82e816  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
--- 82994,83000 ----
  3a8f07748adbffc9bb3f16173e9a3fd9  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-4.c
  74dfb9efd2ea82e303d28ac1d2ec908b  gcc/testsuite/gcc.target/arm/thumb2-slow-flash-data-5.c
  91b223ff92af83526eb2bf8c06358638  gcc/testsuite/gcc.target/arm/thumb2-switchstatement.c
! fd1c37fe38d5528dd562aa4b0d4ee01c  gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
  b5cb0cc39d4570e0da1e85821a82e816  gcc/testsuite/gcc.target/arm/tlscall.c
  bbfeab1d19ae8a86996efa5896bc515a  gcc/testsuite/gcc.target/arm/unaligned-argument-1.c
  07b58b9d3cae47b57b137b31a0ea472c  gcc/testsuite/gcc.target/arm/unaligned-argument-2.c
*************** b7294c9a200c00a9779bc70185f7be63  gcc/te
*** 90623,90628 ****
--- 90632,90639 ----
  10dc742236e7e84bc62c2214e6691b2b  gcc/testsuite/gcc.target/i386/pr125355.c
  1f67cd0f9980b605cafe7d50af23cbf9  gcc/testsuite/gcc.target/i386/pr125883.c
  2f69299dd02a2a0513b7f830ae0df284  gcc/testsuite/gcc.target/i386/pr125949.c
+ 898e1acdc786475670737820ad19ab04  gcc/testsuite/gcc.target/i386/pr126098.c
+ f91ae39059fe7fb51f459d3446010197  gcc/testsuite/gcc.target/i386/pr126148.c
  8951a1fa31f2d45ef9eacfff6a733f77  gcc/testsuite/gcc.target/i386/pr13366.c
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
*************** d59f1ded63c010f7c70d8914ff035369  gcc/te
*** 95716,95721 ****
--- 95727,95733 ----
  12ae868dfb598fb35cde9f3deb2aa240  gcc/testsuite/gcc.target/or1k/got-1.c
  cdffa4b9237da98d7598debeadcb29fd  gcc/testsuite/gcc.target/or1k/or1k.exp
  586447fae94a7aba8d497d7146120eaa  gcc/testsuite/gcc.target/or1k/pr125155.c
+ 758f06e84d719bac9db773ac6a03c8e6  gcc/testsuite/gcc.target/or1k/pr126081.c
  26536fcae441d001c2a53c21abf56757  gcc/testsuite/gcc.target/or1k/return-1.c
  19a50da79764b52ec4c567f7aac53bdd  gcc/testsuite/gcc.target/or1k/return-2.c
  30571d600ad8e2c620b4c88dd60b22ab  gcc/testsuite/gcc.target/or1k/return-3.c
*************** f0050538b645310e4d0979e24d795aa2  gcc/te
*** 98414,98419 ****
--- 98426,98437 ----
  376ac48340c386427a1be7e5e884993a  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-7.c
  6a6f6da892e6ab1ee90807017ab944d9  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-8.c
  a9b38e5a37de52ced500d53d1d518b95  gcc/testsuite/gcc.target/powerpc/vsx-vectorize-9.c
+ c495fc3cc252932c6f0add0b15e138c6  gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-1.c
+ 2a8562081fc2be68057b34ff92d83dd5  gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-2.c
+ d537318f4778d476538830af75773636  gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-3.c
+ e28a0c5ef6fd0537edfffa3640c7b4eb  gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-4.c
+ 2611988bebbcd8f86ce3cabd52e22b5b  gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_1.c
+ 26e40ebbd37f50c7f69089ac757f00d6  gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_2.c
  c64a5cc2ce1d0b7ac9d881b4585a9313  gcc/testsuite/gcc.target/powerpc/vsx_mask-count-runnable.c
  37a4787409404cc5944ae67ed64e5513  gcc/testsuite/gcc.target/powerpc/vsx_mask-expand-runnable.c
  829a2621c1495feaccfe06f5b735d1db  gcc/testsuite/gcc.target/powerpc/vsx_mask-extract-runnable.c
*************** c10f8db5df2b65c9fba341cccb30fe9c  gcc/te
*** 100586,100591 ****
--- 100604,100610 ----
  7efbbc8153da873eb1b0fe1ac3321b7e  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125215.c
  455f4d6d561c03a39a904e17bbb00820  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125478.c
  cfd8a75e04799147b00e32b4c36ce0e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr125670.c
+ c3dec765eb396a84ec70aad7d3b6248f  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c
  ee8bcba5f6876f2027f0f263f81465aa  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-1.c
  7ff884bfa2e6cf9bc4c6172466538515  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-10.c
  b2792e9264dcd6fa2e88f495d51677e6  gcc/testsuite/gcc.target/riscv/rvv/autovec/reduc/extract_last-11.c
*************** c5b09d072962be55a3b282895afe41d6  gcc/te
*** 105830,105835 ****
--- 105849,105855 ----
  d49455031d1c0b8c6740f90cf831720a  gcc/testsuite/gcc.target/s390/pr124079.c
  d519a0e6ac82acfc25e0475e29ea6d80  gcc/testsuite/gcc.target/s390/pr125972.c
  86e19acef61e2b484623df454673168e  gcc/testsuite/gcc.target/s390/pr125992.c
+ 6280213261c923c72d3fdadfb7a04e12  gcc/testsuite/gcc.target/s390/pr126054.c
  765307a040de72f2f4376b7068d68018  gcc/testsuite/gcc.target/s390/pr20927.c
  85f31fb9b4b15529205376d3f6fa385c  gcc/testsuite/gcc.target/s390/pr24624.c
  7adacbd67601dc0845e556e5632cd718  gcc/testsuite/gcc.target/s390/pr27661.c
*************** d5753d3f6bf92409af4a8ed1584a9000  gcc/te
*** 106405,106410 ****
--- 106425,106431 ----
  ae8390e15b5eaf5fd9c40f8bb42c7724  gcc/testsuite/gcc.target/sh/memset.c
  cdd0e79dc0c4fb2425cf6753e465a85e  gcc/testsuite/gcc.target/sh/mfmovd.c
  9b3b2f0ae0e623bcfdf99761d1dad634  gcc/testsuite/gcc.target/sh/pr111814.c
+ e0c2175829f132bf44d0a7d6f8cf419f  gcc/testsuite/gcc.target/sh/pr122948.c
  9439f7da71328f8113b757d9c4130319  gcc/testsuite/gcc.target/sh/pr21255-1.c
  de6f77c59627b198d6e5048192e2f128  gcc/testsuite/gcc.target/sh/pr21255-2-mb.c
  475ae84e95ba85931d38a06a5d6f12f8  gcc/testsuite/gcc.target/sh/pr21255-2-ml.c
*************** c91185a3ccff03eaf3228522d82e998b  gcc/te
*** 112941,112946 ****
--- 112962,112968 ----
  90449ea3743d628deeed9105efb3d065  gcc/testsuite/gfortran.dg/block_15.f08
  32ce0fc033d0dabfb432fbabf6904563  gcc/testsuite/gfortran.dg/block_16.f08
  3c11755bcb25184e3524ac2842c42f70  gcc/testsuite/gfortran.dg/block_17.f90
+ 97dda518a0bdcc5acdcea19694d833fe  gcc/testsuite/gfortran.dg/block_18.f90
  10f179cb673e09df610043e9f3876bb2  gcc/testsuite/gfortran.dg/block_2.f08
  c20765c7d7a394e2f5b7ef52556e7d8a  gcc/testsuite/gfortran.dg/block_3.f90
  e1627e8620425c4babefa34dcd289690  gcc/testsuite/gfortran.dg/block_4.f08
*************** ed6e00c5dc57055959583aa16ab493b8  gcc/te
*** 117272,117277 ****
--- 117294,117301 ----
  ccbe22a34dbac49b2d95cd730bb61d7e  gcc/testsuite/gfortran.dg/lto/bind_c-6_0.f90
  6d93908070e9d39392e45f8f55d2d583  gcc/testsuite/gfortran.dg/lto/bind_c-6_1.c
  0437f7ea90355be92502dc734e98686d  gcc/testsuite/gfortran.dg/lto/lto.exp
+ 2b8a012dfa7469de447886e577ac29d7  gcc/testsuite/gfortran.dg/lto/pr126170_0.f90
+ 561e6cc6456c8bd622576542ea741aef  gcc/testsuite/gfortran.dg/lto/pr126170_1.f90
  2e2f1d0362a3798b5cc0cdb704ae7876  gcc/testsuite/gfortran.dg/lto/pr40724_0.f
  b924c46f8e9c528e66113310bd822e92  gcc/testsuite/gfortran.dg/lto/pr40724_1.f
  b310c10bba59712483944d83a656d6cb  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
*************** cc6ac3aa934c104c85fad8e43ae6985d  gcc/te
*** 118127,118132 ****
--- 118151,118159 ----
  ce86820082e25f5aad2607f9163c3cf4  gcc/testsuite/gfortran.dg/pr103312.f90
  ab2e9f64b18aaf6df9600288ded6ce51  gcc/testsuite/gfortran.dg/pr103366.f90
  f5b2d7909d22359486a362b6e2b6e6d2  gcc/testsuite/gfortran.dg/pr103367.f90
+ c35efc88e117f86638938a16d6b88054  gcc/testsuite/gfortran.dg/pr103367_2.f90
+ 8a27376a5ce044b06ca3b47f787353d7  gcc/testsuite/gfortran.dg/pr103367_3.f90
+ 066ab4b80e43f24da3f7fe87a2cf8014  gcc/testsuite/gfortran.dg/pr103367_4.f90
  9e00f34ad9d6d78b98007d4ad68251f5  gcc/testsuite/gfortran.dg/pr103389.f90
  f2ba2e64941d368a0af432859dc114fe  gcc/testsuite/gfortran.dg/pr103471.f90
  5403c8d36e959e2211ecc4f2a1db6e1c  gcc/testsuite/gfortran.dg/pr103475.f90
*************** c82475796fec905fbcbddbebc480ad15  gcc/te
*** 118336,118341 ****
--- 118363,118370 ----
  8d5b416e1b358553fdc69e965bc1db7e  gcc/testsuite/gfortran.dg/pr124780.f90
  5b0777068e1d7ec735043f942f680e93  gcc/testsuite/gfortran.dg/pr125117.f90
  21a6fcd9db938827306935bac8eec1c1  gcc/testsuite/gfortran.dg/pr125391.f90
+ 7e2e05a5f046a763356f94130e52c9a6  gcc/testsuite/gfortran.dg/pr126116.f90
+ 6e08f4627287595ccc509969aa703e88  gcc/testsuite/gfortran.dg/pr126210.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  2b5f18b773a5db29b0a2ee2d8cce767c  gcc/testsuite/gfortran.dg/pr15140.f90
*************** a4340dde4019e28f9fad54b2a7770c74  gcc/tr
*** 131074,131080 ****
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
  bc74f92323ee5636997f0c03aec16115  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! 2bb5fd65b4dcb26760b786589ff6a903  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  e4268d258c67f33e0625d4eb1ca512f7  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
--- 131103,131109 ----
  ed70c897fa5690940494f2b8b6e27f21  gcc/tree-affine.h
  bc74f92323ee5636997f0c03aec16115  gcc/tree-assume.cc
  a0c02d542dbd50cb44704b2ffce2739c  gcc/tree-call-cdce.cc
! c36473c02a1a99e2b3c00b0953d1fb64  gcc/tree-cfg.cc
  809e1f07de4be5a3fc990f66bd6d1105  gcc/tree-cfg.h
  e4268d258c67f33e0625d4eb1ca512f7  gcc/tree-cfgcleanup.cc
  645c34c74323c655a1d20f8f76e64b27  gcc/tree-cfgcleanup.h
*************** e316eddfbf9a02433a4ee93e648f3aa4  gcc/tr
*** 131209,131216 ****
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  9d1d629a67b789d8cb739163675798bd  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
! 2d97a09e6f1cc39817ff46cd04879772  gcc/tree-vect-loop-manip.cc
! 48ab42d8d2d1b36b53266eaaba74549e  gcc/tree-vect-loop.cc
  2730836d8cc13635cf2bbb611acecb51  gcc/tree-vect-patterns.cc
  28492f085ab589b35caa61bf83cbc03b  gcc/tree-vect-slp-patterns.cc
  b1cdd5d148e6bcfc54c99a0a2b9192d9  gcc/tree-vect-slp.cc
--- 131238,131245 ----
  6a0f6268d598b3c59871ad41e01f33c1  gcc/tree-tailcall.cc
  9d1d629a67b789d8cb739163675798bd  gcc/tree-vect-data-refs.cc
  a423c268d5ba9ac563732fd6d038c572  gcc/tree-vect-generic.cc
! f4b6293b33ff0a7b939e7fda4a1f995e  gcc/tree-vect-loop-manip.cc
! 6978b3f49f7f097a59a2a30c0e4b58c7  gcc/tree-vect-loop.cc
  2730836d8cc13635cf2bbb611acecb51  gcc/tree-vect-patterns.cc
  28492f085ab589b35caa61bf83cbc03b  gcc/tree-vect-slp-patterns.cc
  b1cdd5d148e6bcfc54c99a0a2b9192d9  gcc/tree-vect-slp.cc
*************** fc49680d0c6e77e437523ea496a6b8c4  libga6
*** 132105,132111 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! 0649345cea7f7e695d30a89b99241702  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
  71d0f27da0d8bbe096136dc304bdb11f  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 132134,132140 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  b0d017b83148520411f1c1ebdbf28b58  libga68/sppp.awk
  4ad0dcaa2eb0b81efb58d47400b0933d  libga68/standard.a68.in
! cfdc164b28b6b674fd6a70a7a4c6c900  libgcc/ChangeLog
  9ce0b8c50fec68eb0555ae800e4e457e  libgcc/Makefile.in
  71d0f27da0d8bbe096136dc304bdb11f  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** d5f038474fd5faad3f79701cbb81bf30  libgco
*** 133760,133766 ****
  9486776ee88dd841ac94aa73290a74bf  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  db95b8e503515d7615559adc1be6164a  libgcobol/xmlparse.cc
! ae38323093663be3d14b5b763cc0e9fa  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
--- 133789,133795 ----
  9486776ee88dd841ac94aa73290a74bf  libgcobol/valconv.cc
  3466db9e6fc5748c08c947e71a566c07  libgcobol/valconv.h
  db95b8e503515d7615559adc1be6164a  libgcobol/xmlparse.cc
! b7cb76257f3a973c134fe496c0d20c2a  libgfortran/ChangeLog
  d99469a76bfe825683f8d94fe07b508c  libgfortran/ChangeLog-2002
  522fdb2df6cefe6bcaed3c7c7311eae1  libgfortran/ChangeLog-2003
  5a3a93e76d878d063aba66079340cfe0  libgfortran/ChangeLog-2004
*************** c62b817e6f400a567db7dccd71d76f33  libgfo
*** 134701,134707 ****
  f9101923347929f02ecedab542ddf291  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
! fe24afda0444aab88f5a40caf1738169  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
  a5048d41737161954ead03f98865a018  libgfortran/io/open.c
--- 134730,134736 ----
  f9101923347929f02ecedab542ddf291  libgfortran/io/format.h
  3d6bdfad19038c8e5794b4f1d39dc010  libgfortran/io/inquire.c
  86f78d0a8d7fd3418de9e9f9a1cb384f  libgfortran/io/intrinsics.c
! 145526228283c6523ca46010ec760a42  libgfortran/io/io.h
  ea635852033817b89d7cc5fa4cee5183  libgfortran/io/list_read.c
  908721400434528de210b0cbef37f603  libgfortran/io/lock.c
  a5048d41737161954ead03f98865a018  libgfortran/io/open.c
*************** a5048d41737161954ead03f98865a018  libgfo
*** 134709,134715 ****
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
  247e272929563f279d4dbf168c74ad55  libgfortran/io/transfer.c
  61d9fcffebe964f0be67a134abea6d15  libgfortran/io/transfer128.c
! 6cf3fdea6474d249cc6fe641cb6a7629  libgfortran/io/unit.c
  054d43551f43e42d19a3ca81456c9a34  libgfortran/io/unix.c
  f460ce66bb06770e24fc348ce57dcea7  libgfortran/io/unix.h
  9ad46a1d2f409dd8aa39fff0cf9281c8  libgfortran/io/write.c
--- 134738,134744 ----
  4d71c600a702cb37b041c18304734191  libgfortran/io/size_from_kind.c
  247e272929563f279d4dbf168c74ad55  libgfortran/io/transfer.c
  61d9fcffebe964f0be67a134abea6d15  libgfortran/io/transfer128.c
! 47c013e29fcb041e6966a612735cdb94  libgfortran/io/unit.c
  054d43551f43e42d19a3ca81456c9a34  libgfortran/io/unix.c
  f460ce66bb06770e24fc348ce57dcea7  libgfortran/io/unix.h
  9ad46a1d2f409dd8aa39fff0cf9281c8  libgfortran/io/write.c
diff -Nrcpad gcc-16-20260704/gcc/ChangeLog gcc-16-20260711/gcc/ChangeLog
*** gcc-16-20260704/gcc/ChangeLog	Sat Jul  4 22:32:05 2026
--- gcc-16-20260711/gcc/ChangeLog	Sat Jul 11 22:32:05 2026
***************
*** 1,3 ****
--- 1,195 ----
+ 2026-07-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-06-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/124128
+ 	* ipa-cp.cc (ipa_vr_intersect_with_arith_jfunc): Move the check if
+ 	the final type conversion needs to happen before the conversion.
+ 
+ 2026-07-10  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	* config/s390/s390.md: Annotate mnemonic for
+ 	extzv_<mode>_{srl,sll}<clobbercc_or_nocc>.
+ 
+ 2026-07-10  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR target/126054
+ 	* config/s390/s390.md: Fix
+ 	extzv_<mode>_{srl,sll}<clobbercc_or_nocc> by adjusting the
+ 	bitmasks in the output templates.
+ 
+ 2026-07-09  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	Backported from master:
+ 	2026-07-07  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (AARCH64_OPT_EXTENSION):
+ 	Remove +mpamv2.
+ 	* config/aarch64/aarch64-sys-regs.def: Remove sysregs associated
+ 	with MPAMv2_VID and adjust other related sysregs to use the
+ 	base permitted architecture.
+ 	* doc/invoke.texi (aarch64: +mpamv2): Remove option.
+ 
+ 2026-07-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126148
+ 	* config/i386/i386-expand.cc (ix86_gen_ccmp_first): Restrict
+ 	floating-point modes accepted for ccmp according to the
+ 	available floating-point instruction set.
+ 
+ 2026-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Create IFN_VARYING for
+ 	early break scalar IV.
+ 	* tree-vect-loop.cc (vect_update_ivs_after_vectorizer_for_early_breaks):
+ 	Replace the IFN_VARYING with actual value.
+ 
+ 2026-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	(vect_do_peeling): Create IFN_VARYING for masks.
+ 	* tree-vect-loop-manip.cc (vect_set_loop_condition): Replace the
+ 	IFN_VARYING.
+ 
+ 2026-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* internal-fn.def (VARYING): New.
+ 	* doc/ifn.texi: Document it.
+ 	* internal-fn.cc (expand_VARYING): New.
+ 	* internal-fn.h (expand_VARYING): New.
+ 	* tree-cfg.cc (verify_gimple_call): Check for leaked IFN_VARYING.
+ 
+ 2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	PR target/126081
+ 	* config/or1k/or1k.cc (or1k_hard_regno_mode_ok): Stop allowing
+ 	SImode for FLAG_REGS.
+ 	(or1k_can_change_mode_class): Stop allowing SImode for
+ 	FLAG_REGS.
+ 	(or1k_noce_conversion_profitable_p): Always check
+ 	or1k_is_cmov_insn.
+ 
+ 2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-06-14  Stafford Horne  <shorne@gmail.com>
+ 
+ 	* config/or1k/or1k.md (cbranchsi4): Add clobber clause.
+ 
+ 2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-06-14  Stafford Horne  <shorne@gmail.com>
+ 
+ 	* config/or1k/or1k.h (SHIFT_COUNT_TRUNCATED): Define.
+ 	* config/or1k/or1k.md (rotrsi3): Rename reg_or_u6_operand to
+ 	reg_or_u5_operand.
+ 	(<shift_op>si3): Ditto.
+ 	* config/or1k/predicates.md (reg_or_u6_operand): Remove.
+ 	(reg_or_u5_operand): New predicate.
+ 
+ 2026-07-07  Jeevitha  <jeevitha@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-06-24  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (V16QI_V2DI): New mode iterator.
+ 	(add<mode>3): Split into two patterns to support future ISA
+ 	alternatives.
+ 	(sub<mode>3): Likewise.
+ 	* config/rs6000/vsx.md (VIArith): New mode iterator.
+ 	(vsx_mul<mode>3): New insn pattern.
+ 	(smul<mode>3_highpart): Split into mode-specific patterns.
+ 	(umul<mode>3_highpart): Likewise.
+ 	(smulv8hi3_highpart): New insn pattern.
+ 	(smulv4si3_highpart): Likewise.
+ 	(smulv2di3_highpart): Likewise.
+ 	(umulv8hi3_highpart): Likewise.
+ 	(umulv4si3_highpart): Likewise.
+ 	(umulv2di3_highpart): Likewise.
+ 	* config/rs6000/rs6000-builtins.def (__builtin_vsx_xvmulhuh): New
+ 	builtin.
+ 	(__builtin_vsx_xvmulhsh): Likewise.
+ 	* config/rs6000/rs6000-overload.def (__builtin_vec_mulh): Add
+ 	overloads for vector multiply-high signed/unsigned halfword.
+ 	* config/rs6000/rs6000-gen-builtins.cc (enum bif_stanza): Add entry for
+ 	BSTZ_FUTURE_VSX.
+ 	(stanza_map): Add future-vsx stanza mapping.
+ 	(enable_string): Add ENB_FUTURE_VSX.
+ 	(write_decls): Add ENB_FUTURE_VSX to the bif_enable enum in the
+ 	generated header file.
+ 	* config/rs6000/rs6000.md (define_attr "isa"): Add future to the list
+ 	of ISA values.
+ 	(define_attr "enabled"): Add check for future ISA.
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_invalid_builtin): Handle
+ 	ENB_FUTURE_VSX and issue a diagnostic requiring -mcpu=future and -mvsx.
+ 	(rs6000_builtin_is_supported): Return TARGET_FUTURE && TARGET_VSX
+ 	for ENB_FUTURE_VSX built-ins.
+ 	* doc/extend.texi (PowerPC AltiVec/VSX Built-in Functions Available
+ 	on Future ISA): Document new functions.
+ 
+ 2026-07-07  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	Backported from master:
+ 	2026-07-01  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	PR target/126049
+ 	* config/riscv/autovec.md: Change fmin/fmax reduction initial
+ 	value from inf/-inf to NaN for proper semantics of corresponding
+ 	C funtion.
+ 
+ 2026-07-06  vekumar  <Venkataramanan.Kumar@amd.com>
+ 
+ 	Backported from master:
+ 	2026-06-04  vekumar  <Venkataramanan.Kumar@amd.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM): Enable
+ 	for m_ZNVER6.
+ 	(X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM): Likewise.
+ 	(X86_TUNE_SSE_REDUCTION_PREFER_PSHUF): Likewise.
+ 
+ 2026-07-06  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/126098
+ 	* config/i386/sse.md (VI1_AVX512VNNIBW): Remove.
+ 	(sdot_prod<ssedvecmodelower><mode>): Use VI1_AVX512 instead of
+ 	VI1_AVX512VNNIBW so V64QI is enabled only under AVX512BW.
+ 	(udot_prod<ssedvecmodelower><mode>): Likewise.
+ 
+ 2026-07-05  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/67459
+ 	PR target/122948
+ 	* config/sh/sh.md (addc): Fix T bit set expression.
+ 	(subc): Likewise.
+ 
  2026-07-03  Avinash Jayakar  <avinashd@linux.ibm.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/gcc/DATESTAMP gcc-16-20260711/gcc/DATESTAMP
*** gcc-16-20260704/gcc/DATESTAMP	Sat Jul  4 22:32:06 2026
--- gcc-16-20260711/gcc/DATESTAMP	Sat Jul 11 22:32:05 2026
***************
*** 1 ****
! 20260704
--- 1 ----
! 20260711
diff -Nrcpad gcc-16-20260704/gcc/ada/ChangeLog gcc-16-20260711/gcc/ada/ChangeLog
*** gcc-16-20260704/gcc/ada/ChangeLog	Sat Jul  4 22:32:06 2026
--- gcc-16-20260711/gcc/ada/ChangeLog	Sat Jul 11 22:32:05 2026
***************
*** 1,3 ****
--- 1,8 ----
+ 2026-07-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Dispatching_Call): Reenable the suppression
+ 	of access checks during analysis of expanded dispatching calls.
+ 
  2026-06-29  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* exp_util.ads (Find_Optional_Prim_Op): Add Controlled_Op parameter
diff -Nrcpad gcc-16-20260704/gcc/ada/exp_disp.adb gcc-16-20260711/gcc/ada/exp_disp.adb
*** gcc-16-20260704/gcc/ada/exp_disp.adb	Sat Jul  4 22:32:06 2026
--- gcc-16-20260711/gcc/ada/exp_disp.adb	Sat Jul 11 22:32:05 2026
*************** package body Exp_Disp is
*** 1203,1209 ****
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       Analyze_And_Resolve (Call_Node, Call_Typ);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
--- 1203,1211 ----
           Set_SCIL_Node (SCIL_Related_Node, SCIL_Node);
        end if;
  
!       --  Suppress null access checks during the analysis of the expanded code
! 
!       Analyze_And_Resolve (Call_Node, Call_Typ, Suppress => Access_Check);
  
        Set_Is_Expanded_Dispatching_Call (Call_Node);
     end Expand_Dispatching_Call;
diff -Nrcpad gcc-16-20260704/gcc/c/ChangeLog gcc-16-20260711/gcc/c/ChangeLog
*** gcc-16-20260704/gcc/c/ChangeLog	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/c/ChangeLog	Sat Jul 11 22:32:06 2026
***************
*** 1,3 ****
--- 1,24 ----
+ 2026-07-05  Kees Cook  <kees@kernel.org>
+ 
+ 	Backported from master:
+ 	2026-06-19  Kees Cook  <kees@kernel.org>
+ 
+ 	PR c/125604
+ 	* c-typeck.cc (build_unary_op): Unwrap .ACCESS_WITH_SIZE
+ 	from the operand before further processing.
+ 
+ 2026-07-05  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123569
+ 	* c-parser.cc (mark_exp_read_cond): New function.
+ 	(c_parser_unary_expression): Use mark_exp_read_cond.
+ 	(c_parser_postfix_expression_after_primary): Likewise.
+ 	* c-typeck.cc (build_unary_op): Remove dead code and
+ 	add checking assertion.
+ 
  2026-06-13  Martin Uecker  <uecker@tugraz.at>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/gcc/c/c-parser.cc gcc-16-20260711/gcc/c/c-parser.cc
*** gcc-16-20260704/gcc/c/c-parser.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/c/c-parser.cc	Sat Jul 11 22:32:06 2026
*************** c_parser_cast_expression (c_parser *pars
*** 10646,10651 ****
--- 10646,10671 ----
      return c_parser_unary_expression (parser);
  }
  
+ 
+ /* Like mark_exp_read but skip marking VAR_DECLs and PARM_DECLs
+    depending on the warning mode.  This helper function is
+    used in c_parser_unary_expression and
+    and c_parser_postfix_expression_after_primary for
+    pre/post-increment/decrement operations.
+  */
+ 
+ static void
+ mark_exp_read_cond (tree exp)
+ {
+   if ((VAR_P (exp) || TREE_CODE (exp) == PARM_DECL)
+       && (VAR_P (exp) ? warn_unused_but_set_variable
+ 		      : warn_unused_but_set_parameter) > 1)
+     return;
+ 
+   mark_exp_read (exp);
+ }
+ 
+ 
  /* Parse an unary expression (C90 6.3.3, C99 6.5.3, C11 6.5.3).
  
     unary-expression:
*************** c_parser_unary_expression (c_parser *par
*** 10703,10733 ****
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       if ((VAR_P (op.value) || TREE_CODE (op.value) == PARM_DECL)
! 	  && !DECL_READ_P (op.value)
! 	  && (VAR_P (op.value) ? warn_unused_but_set_variable
! 			       : warn_unused_but_set_parameter) > 1)
! 	{
! 	  op = default_function_array_read_conversion (exp_loc, op);
! 	  DECL_READ_P (op.value) = 0;
! 	}
!       else
! 	op = default_function_array_read_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREINCREMENT_EXPR, op);
      case CPP_MINUS_MINUS:
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       if ((VAR_P (op.value) || TREE_CODE (op.value) == PARM_DECL)
! 	  && !DECL_READ_P (op.value)
! 	  && (VAR_P (op.value) ? warn_unused_but_set_variable
! 			       : warn_unused_but_set_parameter) > 1)
! 	{
! 	  op = default_function_array_read_conversion (exp_loc, op);
! 	  DECL_READ_P (op.value) = 0;
! 	}
!       else
! 	op = default_function_array_read_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREDECREMENT_EXPR, op);
      case CPP_AND:
        c_parser_consume_token (parser);
--- 10723,10737 ----
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       mark_exp_read_cond (op.value);
!       op = default_function_array_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREINCREMENT_EXPR, op);
      case CPP_MINUS_MINUS:
        c_parser_consume_token (parser);
        exp_loc = c_parser_peek_token (parser)->location;
        op = c_parser_cast_expression (parser, NULL);
!       mark_exp_read_cond (op.value);
!       op = default_function_array_conversion (exp_loc, op);
        return parser_build_unary_op (op_loc, PREDECREMENT_EXPR, op);
      case CPP_AND:
        c_parser_consume_token (parser);
*************** c_parser_postfix_expression_after_primar
*** 14197,14213 ****
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  if ((VAR_P (expr.value) || TREE_CODE (expr.value) == PARM_DECL)
! 	      && !DECL_READ_P (expr.value)
! 	      && (VAR_P (expr.value) ? warn_unused_but_set_variable
! 				     : warn_unused_but_set_parameter) > 1
! 	      && TREE_CODE (TREE_TYPE (expr.value)) != ARRAY_TYPE)
! 	    {
! 	      expr = default_function_array_read_conversion (expr_loc, expr);
! 	      DECL_READ_P (expr.value) = 0;
! 	    }
! 	  else
! 	    expr = default_function_array_read_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTINCREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
--- 14201,14208 ----
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  mark_exp_read_cond (expr.value);
! 	  expr = default_function_array_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTINCREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
*************** c_parser_postfix_expression_after_primar
*** 14219,14235 ****
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  if ((VAR_P (expr.value) || TREE_CODE (expr.value) == PARM_DECL)
! 	      && !DECL_READ_P (expr.value)
! 	      && (VAR_P (expr.value) ? warn_unused_but_set_variable
! 				     : warn_unused_but_set_parameter) > 1
! 	      && TREE_CODE (TREE_TYPE (expr.value)) != ARRAY_TYPE)
! 	    {
! 	      expr = default_function_array_read_conversion (expr_loc, expr);
! 	      DECL_READ_P (expr.value) = 0;
! 	    }
! 	  else
! 	    expr = default_function_array_read_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTDECREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
--- 14214,14221 ----
  	  start = expr.get_start ();
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
! 	  mark_exp_read_cond (expr.value);
! 	  expr = default_function_array_conversion (expr_loc, expr);
  	  expr.value = build_unary_op (op_loc, POSTDECREMENT_EXPR,
  				       expr.value, false);
  	  set_c_expr_source_range (&expr, start, finish);
diff -Nrcpad gcc-16-20260704/gcc/c/c-typeck.cc gcc-16-20260711/gcc/c/c-typeck.cc
*** gcc-16-20260704/gcc/c/c-typeck.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/c/c-typeck.cc	Sat Jul 11 22:32:06 2026
*************** build_unary_op (location_t location, enu
*** 5781,5789 ****
    tree ret = error_mark_node;
    tree eptype = NULL_TREE;
    const char *invalid_op_diag;
-   bool int_operands;
  
!   int_operands = EXPR_INT_CONST_OPERANDS (xarg);
    if (int_operands)
      arg = remove_c_maybe_const_expr (arg);
  
--- 5781,5802 ----
    tree ret = error_mark_node;
    tree eptype = NULL_TREE;
    const char *invalid_op_diag;
  
!   /* If ARG is wrapped in a call to .ACCESS_WITH_SIZE — created when the
!      C parser rvalue-converts a counted_by-annotated member access (see
!      PR123569) — unwrap it here.  Unary operators that consume an rvalue
!      (!, -, +) read the value itself rather than dereferencing into the
!      pointed-to data, so the bounds-checking wrapper is unnecessary and
!      would otherwise reach build_unary_op while it is not equipped to
!      handle the wrapped form.  PR123569 fixed the ++/-- side of this by
!      suppressing wrapper creation in the parser; the rvalue-consuming
!      ops still receive the wrapper and need to strip it here.  */
!   if (is_access_with_size_p (arg))
!     xarg = arg = get_ref_from_access_with_size (arg);
! 
!   gcc_checking_assert (!is_access_with_size_p (arg));
! 
!   bool int_operands = EXPR_INT_CONST_OPERANDS (xarg);
    if (int_operands)
      arg = remove_c_maybe_const_expr (arg);
  
*************** build_unary_op (location_t location, enu
*** 6245,6254 ****
  	  goto return_build_unary_op;
  	}
  
!       /* Ordinary case; arg is a COMPONENT_REF or a decl, or a call to
! 	 .ACCESS_WITH_SIZE.  */
!       if (is_access_with_size_p (arg))
! 	arg = TREE_OPERAND (TREE_OPERAND (CALL_EXPR_ARG (arg, 0), 0), 0);
  
        argtype = TREE_TYPE (arg);
  
--- 6258,6264 ----
  	  goto return_build_unary_op;
  	}
  
!       /* Ordinary case; arg is a COMPONENT_REF or a decl.  */
  
        argtype = TREE_TYPE (arg);
  
diff -Nrcpad gcc-16-20260704/gcc/c-family/ChangeLog gcc-16-20260711/gcc/c-family/ChangeLog
*** gcc-16-20260704/gcc/c-family/ChangeLog	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/c-family/ChangeLog	Sat Jul 11 22:32:06 2026
***************
*** 1,3 ****
--- 1,13 ----
+ 2026-07-05  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125072
+ 	* c-ubsan.cc (get_index_from_offset,get_index_from_pointer_addr_expr,
+ 	is_instrumentable_pointer_array_address): Return factor.
+ 	(ubsan_maybe_instrument_array_ref): Apply factor.
+ 
  2026-04-30  Release Manager
  
  	* GCC 16.1.0 released.
diff -Nrcpad gcc-16-20260704/gcc/c-family/c-ubsan.cc gcc-16-20260711/gcc/c-family/c-ubsan.cc
*** gcc-16-20260704/gcc/c-family/c-ubsan.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/c-family/c-ubsan.cc	Sat Jul 11 22:32:06 2026
*************** get_factors_from_mul_expr (tree mult_exp
*** 667,673 ****
  
  static tree
  get_index_from_offset (tree offset, tree *index_p,
! 		       int *index_n, tree element_size)
  {
    if (TREE_CODE (offset) != MULT_EXPR
        && TREE_CODE (offset) != INTEGER_CST)
--- 667,674 ----
  
  static tree
  get_index_from_offset (tree offset, tree *index_p,
! 		       int *index_n, tree *factor,
! 		       tree element_size)
  {
    if (TREE_CODE (offset) != MULT_EXPR
        && TREE_CODE (offset) != INTEGER_CST)
*************** get_index_from_offset (tree offset, tree
*** 679,686 ****
  
    if (TREE_CODE (offset) == INTEGER_CST
        && TREE_CODE (element_size) == INTEGER_CST)
!     return fold_build2 (EXACT_DIV_EXPR, TREE_TYPE (offset),
! 			offset, element_size);
  
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
--- 680,690 ----
  
    if (TREE_CODE (offset) == INTEGER_CST
        && TREE_CODE (element_size) == INTEGER_CST)
!     {
!       *factor = element_size;
!       return fold_build2 (EXACT_DIV_EXPR, TREE_TYPE (offset),
! 			  offset, element_size);
!     }
  
    auto_vec<factor_t> e_factors, o_factors;
    get_factors_from_mul_expr (element_size, NULL, -1, &e_factors);
*************** get_index_from_offset (tree offset, tree
*** 730,736 ****
     If failed, return NULL_TREE.  */
  
  static tree
! get_index_from_pointer_addr_expr (tree pointer, tree *index_p, int *index_n)
  {
    *index_p = NULL_TREE;
    *index_n = -1;
--- 734,741 ----
     If failed, return NULL_TREE.  */
  
  static tree
! get_index_from_pointer_addr_expr (tree pointer, tree *index_p,
! 				  int *index_n, tree *factor)
  {
    *index_p = NULL_TREE;
    *index_n = -1;
*************** get_index_from_pointer_addr_expr (tree p
*** 761,767 ****
  	  index_exp = TREE_OPERAND (index_exp, 0);
  	}
        index_exp = get_index_from_offset (index_exp, index_p,
! 					 index_n, pointee_size);
  
        if (!index_exp)
  	return NULL_TREE;
--- 766,772 ----
  	  index_exp = TREE_OPERAND (index_exp, 0);
  	}
        index_exp = get_index_from_offset (index_exp, index_p,
! 					 index_n, factor, pointee_size);
  
        if (!index_exp)
  	return NULL_TREE;
*************** get_index_from_pointer_addr_expr (tree p
*** 791,797 ****
  static bool
  is_instrumentable_pointer_array_address (tree expr, tree *base,
  					 tree *index, tree *index_p,
! 					 int *index_n)
  {
    /* For a pointer array address as:
  	.ACCESS_WITH_SIZE (p->c, &p->b, 1, 0, -1, 0B)
--- 796,802 ----
  static bool
  is_instrumentable_pointer_array_address (tree expr, tree *base,
  					 tree *index, tree *index_p,
! 					 int *index_n, tree *factor)
  {
    /* For a pointer array address as:
  	.ACCESS_WITH_SIZE (p->c, &p->b, 1, 0, -1, 0B)
*************** is_instrumentable_pointer_array_address
*** 804,810 ****
    tree op0 = TREE_OPERAND (expr, 0);
    if (!is_access_with_size_p (op0))
      return false;
!   tree op1 = get_index_from_pointer_addr_expr (expr, index_p, index_n);
    if (op1 != NULL_TREE)
      {
        *base = op0;
--- 809,815 ----
    tree op0 = TREE_OPERAND (expr, 0);
    if (!is_access_with_size_p (op0))
      return false;
!   tree op1 = get_index_from_pointer_addr_expr (expr, index_p, index_n, factor);
    if (op1 != NULL_TREE)
      {
        *base = op0;
*************** ubsan_array_ref_instrumented_p (tree t)
*** 828,850 ****
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;
    int index_n = 0;
    if (is_array)
      {
-       op1 = TREE_OPERAND (t, 1);
-       return TREE_CODE (op1) == COMPOUND_EXPR
- 	     && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
- 	     && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
- 	     && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
      }
-   else if (is_instrumentable_pointer_array_address (t, &op0, &op1,
- 						    &index_p, &index_n))
-     return TREE_CODE (op1) == COMPOUND_EXPR
- 	   && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
- 	   && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
- 	   && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
  
!   return false;
  }
  
  /* Instrument an ARRAY_REF or an address computation whose base address is
--- 833,854 ----
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;
+   tree factor = NULL_TREE;
    int index_n = 0;
+ 
    if (is_array)
+     op1 = TREE_OPERAND (t, 1);
+   else if (is_instrumentable_pointer_array_address (t, &op0, &op1,
+ 						    &index_p, &index_n,
+ 						    &factor))
      {
      }
  
!   return op1 != NULL_TREE
! 	 && TREE_CODE (op1) == COMPOUND_EXPR
! 	 && TREE_CODE (TREE_OPERAND (op1, 0)) == CALL_EXPR
! 	 && CALL_EXPR_FN (TREE_OPERAND (op1, 0)) == NULL_TREE
! 	 && CALL_EXPR_IFN (TREE_OPERAND (op1, 0)) == IFN_UBSAN_BOUNDS;
  }
  
  /* Instrument an ARRAY_REF or an address computation whose base address is
*************** ubsan_array_ref_instrumented_p (tree t)
*** 855,864 ****
  void
  ubsan_maybe_instrument_array_ref (tree *expr_p, bool ignore_off_by_one)
  {
-   tree e = NULL_TREE;
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;  /* the parent tree of INDEX.  */
    int index_n = 0;  /* the operand position of INDEX in the parent tree.  */
  
    if (!ubsan_array_ref_instrumented_p (*expr_p)
--- 859,868 ----
  void
  ubsan_maybe_instrument_array_ref (tree *expr_p, bool ignore_off_by_one)
  {
    tree op0 = NULL_TREE;
    tree op1 = NULL_TREE;
    tree index_p = NULL_TREE;  /* the parent tree of INDEX.  */
+   tree factor = NULL_TREE;
    int index_n = 0;  /* the operand position of INDEX in the parent tree.  */
  
    if (!ubsan_array_ref_instrumented_p (*expr_p)
*************** ubsan_maybe_instrument_array_ref (tree *
*** 869,889 ****
  	{
  	  op0 = TREE_OPERAND (*expr_p, 0);
  	  op1 = TREE_OPERAND (*expr_p, 1);
! 	  index_p = *expr_p;
! 	  index_n = 1;
! 	  e = ubsan_instrument_bounds (EXPR_LOCATION (*expr_p), op0,
! 				       &op1, ignore_off_by_one);
  	}
        else if (is_instrumentable_pointer_array_address (*expr_p, &op0, &op1,
! 							&index_p, &index_n))
! 	e = ubsan_instrument_bounds_pointer_address (EXPR_LOCATION (*expr_p),
! 						     op0, &op1,
! 						     ignore_off_by_one);
  
!       /* Replace the original INDEX with the instrumented INDEX.  */
!       if (e != NULL_TREE)
! 	TREE_OPERAND (index_p, index_n)
! 	  = build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
      }
  }
  
--- 873,904 ----
  	{
  	  op0 = TREE_OPERAND (*expr_p, 0);
  	  op1 = TREE_OPERAND (*expr_p, 1);
! 	  tree e = ubsan_instrument_bounds (EXPR_LOCATION (*expr_p), op0,
! 					    &op1, ignore_off_by_one);
! 	  /* Replace the original INDEX with the instrumented INDEX.  */
! 	  if (e != NULL_TREE)
! 	    TREE_OPERAND (*expr_p, 1)
! 	      = build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
  	}
        else if (is_instrumentable_pointer_array_address (*expr_p, &op0, &op1,
! 							&index_p, &index_n,
! 							&factor))
! 	{
! 	  tree e
! 	    = ubsan_instrument_bounds_pointer_address (EXPR_LOCATION (*expr_p),
! 						       op0, &op1,
! 						       ignore_off_by_one);
! 	   /* Replace the original INDEX with the instrumented INDEX.  */
! 	  if (e != NULL_TREE)
! 	    {
! 	      /* If we had to remove a constant factor, add it back.  */
! 	      if (factor != NULL_TREE)
! 		op1 = fold_build2 (MULT_EXPR, TREE_TYPE (op1), op1, factor);
  
! 	      TREE_OPERAND (index_p, index_n)
! 		= build2 (COMPOUND_EXPR, TREE_TYPE (op1), e, op1);
! 	    }
! 	}
      }
  }
  
diff -Nrcpad gcc-16-20260704/gcc/config/aarch64/aarch64-option-extensions.def gcc-16-20260711/gcc/config/aarch64/aarch64-option-extensions.def
*** gcc-16-20260704/gcc/config/aarch64/aarch64-option-extensions.def	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/aarch64/aarch64-option-extensions.def	Sat Jul 11 22:32:06 2026
*************** AARCH64_OPT_EXTENSION("tlbid", TLBID, ()
*** 359,366 ****
  
  AARCH64_OPT_EXTENSION("gcie", GCIE, (), (), (), "")
  
- AARCH64_OPT_EXTENSION("mpamv2", MPAMv2, (), (), (), "")
- 
  AARCH64_OPT_EXTENSION("lscp", LSCP, (), (), (), "")
  
  AARCH64_OPT_EXTENSION("mops-go", MOPS_GO, (MOPS, MEMTAG), (), (), "")
--- 359,364 ----
diff -Nrcpad gcc-16-20260704/gcc/config/aarch64/aarch64-sys-regs.def gcc-16-20260711/gcc/config/aarch64/aarch64-sys-regs.def
*** gcc-16-20260704/gcc/config/aarch64/aarch64-sys-regs.def	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/aarch64/aarch64-sys-regs.def	Sat Jul 11 22:32:06 2026
***************
*** 922,937 ****
    SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
    SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
    SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
!   SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
!   SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
!   SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
!   SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (MPAMv2))
    SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
-   SYSREG ("mpamvidcr_el2",	CPENC (3,4,10,7,0),	0,		AARCH64_FEATURE (MPAMv2))
-   SYSREG ("mpamvidsr_el2",	CPENC (3,4,10,7,1),	0,		AARCH64_FEATURE (MPAMv2))
-   SYSREG ("mpamvidsr_el3",	CPENC (3,6,10,7,1),	0,		AARCH64_FEATURE (MPAMv2))
    SYSREG ("mpamvpm0_el2",	CPENC (3,4,10,6,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamvpm1_el2",	CPENC (3,4,10,6,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamvpm2_el2",	CPENC (3,4,10,6,2),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
--- 922,934 ----
    SYSREG ("mpambwcap_el2",	CPENC (3,4,10,5,6),	0,		AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
    SYSREG ("mpambwidr_el1",	CPENC (3,0,10,4,5),	F_REG_READ,	AARCH64_FEATURE (V9_3A)) /* MPAM_PE_BW_CTRL */
    SYSREG ("mpambwsm_el1",	CPENC (3,0,10,5,7),	0,		AARCH64_FEATURES (2, SME, V9_3A)) /* SME && MPAM_PE_BW_CTRL */
!   SYSREG ("mpamctl_el1",	CPENC (3,0,10,5,2),	0,		AARCH64_FEATURE (V9_3A)) /* MPAMv2 */
!   SYSREG ("mpamctl_el12",	CPENC (3,5,10,5,2),	0,		AARCH64_FEATURE (V9_3A)) /* MPAMv2 */
!   SYSREG ("mpamctl_el2",	CPENC (3,4,10,5,2),	0,		AARCH64_FEATURE (V9_3A)) /* MPAMv2 */
!   SYSREG ("mpamctl_el3",	CPENC (3,6,10,5,2),	0,		AARCH64_FEATURE (V9_3A)) /* MPAMv2 */
    SYSREG ("mpamhcr_el2",	CPENC (3,4,10,4,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamidr_el1",	CPENC (3,0,10,4,4),	F_REG_READ,	AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamsm_el1",		CPENC (3,0,10,5,3),	0,		AARCH64_FEATURES (2, SME, V8_2A)) /* SME && MPAM */
    SYSREG ("mpamvpm0_el2",	CPENC (3,4,10,6,0),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamvpm1_el2",	CPENC (3,4,10,6,1),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
    SYSREG ("mpamvpm2_el2",	CPENC (3,4,10,6,2),	0,		AARCH64_FEATURE (V8_2A)) /* MPAM */
diff -Nrcpad gcc-16-20260704/gcc/config/i386/i386-expand.cc gcc-16-20260711/gcc/config/i386/i386-expand.cc
*** gcc-16-20260704/gcc/config/i386/i386-expand.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/i386/i386-expand.cc	Sat Jul 11 22:32:07 2026
*************** ix86_gen_ccmp_first (rtx_insn **prep_seq
*** 27061,27072 ****
      op_mode = GET_MODE (op1);
  
    /* We only supports following scalar comparisons that use just 1
!      instruction: DI/SI/QI/HI/DF/SF/HF.
!      Unordered/Ordered compare cannot be corretly indentified by
       ccmp so they are not supported.  */
!   if (!(op_mode == DImode || op_mode == SImode || op_mode == HImode
! 	|| op_mode == QImode || op_mode == DFmode || op_mode == SFmode
! 	|| op_mode == HFmode)
        || code == ORDERED
        || code == UNORDERED)
      {
--- 27061,27075 ----
      op_mode = GET_MODE (op1);
  
    /* We only supports following scalar comparisons that use just 1
!      instruction: DI/SI/HI/QI/XF/DF/SF/HF.
!      Unordered/Ordered compare cannot be correctly identified by
       ccmp so they are not supported.  */
!   if (!(op_mode == DImode || op_mode == SImode
! 	|| op_mode == HImode || op_mode == QImode
! 	|| ((op_mode == XFmode || op_mode == DFmode || op_mode == SFmode)
! 	    && (TARGET_80387
! 		|| (SSE_FLOAT_MODE_P (op_mode) && TARGET_SSE_MATH)))
! 	|| (op_mode == HFmode && TARGET_AVX512FP16))
        || code == ORDERED
        || code == UNORDERED)
      {
diff -Nrcpad gcc-16-20260704/gcc/config/i386/sse.md gcc-16-20260711/gcc/config/i386/sse.md
*** gcc-16-20260704/gcc/config/i386/sse.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/i386/sse.md	Sat Jul 11 22:32:07 2026
***************
*** 631,640 ****
  (define_mode_iterator VI1_AVX512VNNI
    [(V64QI "TARGET_AVX512VNNI") (V32QI "TARGET_AVX2") V16QI])
  
- (define_mode_iterator VI1_AVX512VNNIBW
-   [(V64QI "TARGET_AVX512BW || TARGET_AVX512VNNI")
-    (V32QI "TARGET_AVX2") V16QI])
- 
  (define_mode_iterator VI12_256_512_AVX512VL
    [V64QI (V32QI "TARGET_AVX512VL")
     V32HI (V16HI "TARGET_AVX512VL")])
--- 631,636 ----
***************
*** 32413,32420 ****
  
  (define_expand "sdot_prod<ssedvecmodelower><mode>"
    [(match_operand:<ssedvecmode> 0 "register_operand")
!    (match_operand:VI1_AVX512VNNIBW 1 "register_operand")
!    (match_operand:VI1_AVX512VNNIBW 2 "register_operand")
     (match_operand:<ssedvecmode> 3 "register_operand")]
    "TARGET_SSE2"
  {
--- 32409,32416 ----
  
  (define_expand "sdot_prod<ssedvecmodelower><mode>"
    [(match_operand:<ssedvecmode> 0 "register_operand")
!    (match_operand:VI1_AVX512 1 "register_operand")
!    (match_operand:VI1_AVX512 2 "register_operand")
     (match_operand:<ssedvecmode> 3 "register_operand")]
    "TARGET_SSE2"
  {
***************
*** 32461,32468 ****
  
  (define_expand "udot_prod<ssedvecmodelower><mode>"
    [(match_operand:<ssedvecmode> 0 "register_operand")
!    (match_operand:VI1_AVX512VNNIBW 1 "register_operand")
!    (match_operand:VI1_AVX512VNNIBW 2 "register_operand")
     (match_operand:<ssedvecmode> 3 "register_operand")]
    "TARGET_SSE2"
  {
--- 32457,32464 ----
  
  (define_expand "udot_prod<ssedvecmodelower><mode>"
    [(match_operand:<ssedvecmode> 0 "register_operand")
!    (match_operand:VI1_AVX512 1 "register_operand")
!    (match_operand:VI1_AVX512 2 "register_operand")
     (match_operand:<ssedvecmode> 3 "register_operand")]
    "TARGET_SSE2"
  {
diff -Nrcpad gcc-16-20260704/gcc/config/i386/x86-tune.def gcc-16-20260711/gcc/config/i386/x86-tune.def
*** gcc-16-20260704/gcc/config/i386/x86-tune.def	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/i386/x86-tune.def	Sat Jul 11 22:32:07 2026
*************** DEF_TUNE (X86_TUNE_FUSE_MOV_AND_ALU, "fu
*** 161,172 ****
     jump instruction when alu contains memory operand.
     TODO: Not suported by TIGERLAKE and COPERLAKE, so m_CORE_AVX2 is wrong.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM, "fuse_alu_and_branch_mem",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_ZHAOXIN | m_GENERIC | m_ZNVER3 | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM_IMM: Fuse alu with a subsequent conditional
     jump instruction when alu contains both immediate and displacement.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM, "fuse_alu_and_branch_mem_imm",
! 	  m_GENERIC | m_ZNVER4 | m_ZNVER5)
  
  /* X86_TUNE_FUSE_AND_BRANCH_RIP_RELATIVE: Fuse alu with a subsequent
     conditional jump instruction when alu contains IP relative address.  */
--- 161,173 ----
     jump instruction when alu contains memory operand.
     TODO: Not suported by TIGERLAKE and COPERLAKE, so m_CORE_AVX2 is wrong.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM, "fuse_alu_and_branch_mem",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_ZHAOXIN | m_GENERIC | m_ZNVER3
! 	  | m_ZNVER4 | m_ZNVER5 | m_ZNVER6)
  
  /* X86_TUNE_FUSE_AND_BRANCH_MEM_IMM: Fuse alu with a subsequent conditional
     jump instruction when alu contains both immediate and displacement.  */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH_MEM_IMM, "fuse_alu_and_branch_mem_imm",
! 	  m_GENERIC | m_ZNVER4 | m_ZNVER5 | m_ZNVER6)
  
  /* X86_TUNE_FUSE_AND_BRANCH_RIP_RELATIVE: Fuse alu with a subsequent
     conditional jump instruction when alu contains IP relative address.  */
*************** DEF_TUNE (X86_TUNE_SSE_MOVCC_USE_BLENDV,
*** 604,611 ****
  /* X86_TUNE_V4SI_REDUCTION_PREFER_SHUFD: Prefer pshuf to reduce V16QI,
     V8HI, V8HI, V4SI, V4FI, V2DI modes when lshr are costlier. */
  DEF_TUNE (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF,
!    "sse_reduction_prefer_pshuf", m_ZNVER4 | m_ZNVER5 | m_C86_4G_M7
! 				 | m_C86_4G_M8)
  
  /*****************************************************************************/
  /* AVX instruction selection tuning (some of SSE flags affects AVX, too)     */
--- 605,612 ----
  /* X86_TUNE_V4SI_REDUCTION_PREFER_SHUFD: Prefer pshuf to reduce V16QI,
     V8HI, V8HI, V4SI, V4FI, V2DI modes when lshr are costlier. */
  DEF_TUNE (X86_TUNE_SSE_REDUCTION_PREFER_PSHUF,
! 	  "sse_reduction_prefer_pshuf", m_ZNVER4 | m_ZNVER5 | m_ZNVER6
! 	  | m_C86_4G_M7 | m_C86_4G_M8)
  
  /*****************************************************************************/
  /* AVX instruction selection tuning (some of SSE flags affects AVX, too)     */
diff -Nrcpad gcc-16-20260704/gcc/config/or1k/or1k.cc gcc-16-20260711/gcc/config/or1k/or1k.cc
*** gcc-16-20260704/gcc/config/or1k/or1k.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/or1k/or1k.cc	Sat Jul 11 22:32:07 2026
*************** or1k_hard_regno_mode_ok (unsigned int re
*** 1393,1399 ****
       really single bits within SP[SR].  Also allow condition flag register
       in SImode to match or1k_can_change_mode_class.  */
    if (REGNO_REG_CLASS (regno) == FLAG_REGS)
!     return mode == BImode || mode == SImode;
    return true;
  }
  
--- 1393,1399 ----
       really single bits within SP[SR].  Also allow condition flag register
       in SImode to match or1k_can_change_mode_class.  */
    if (REGNO_REG_CLASS (regno) == FLAG_REGS)
!     return mode == BImode;
    return true;
  }
  
*************** or1k_can_change_mode_class (machine_mode
*** 1411,1417 ****
  {
    /* Allow cnoverting special flags to SI mode subregs.  */
    if (rclass == FLAG_REGS)
!     return from == to || (from == BImode && to == SImode);
    return true;
  }
  
--- 1411,1417 ----
  {
    /* Allow cnoverting special flags to SI mode subregs.  */
    if (rclass == FLAG_REGS)
!     return from == to;
    return true;
  }
  
*************** or1k_is_cmov_insn (rtx_insn *seq)
*** 1697,1711 ****
  }
  
  /* Implement TARGET_NOCE_CONVERSION_PROFITABLE_P.  We detect if the conversion
!    resulted in a l.cmov instruction and if so we consider it more profitable than
!    branch instructions.  */
  
  static bool
  or1k_noce_conversion_profitable_p (rtx_insn *seq,
  				    struct noce_if_info *if_info)
  {
!   if (TARGET_CMOV)
!     return or1k_is_cmov_insn (seq);
  
    return default_noce_conversion_profitable_p (seq, if_info);
  }
--- 1697,1713 ----
  }
  
  /* Implement TARGET_NOCE_CONVERSION_PROFITABLE_P.  We detect if the conversion
!    resulted in a l.cmov like instruction and if so we consider it more
!    profitable than branch instructions.  Even if we do not support l.cmov this
!    allows the *cmov instruction sequnce to be expanded and then later lowered
!    with the *cmov split logic.  */
  
  static bool
  or1k_noce_conversion_profitable_p (rtx_insn *seq,
  				    struct noce_if_info *if_info)
  {
!   if (or1k_is_cmov_insn (seq))
!     return true;
  
    return default_noce_conversion_profitable_p (seq, if_info);
  }
diff -Nrcpad gcc-16-20260704/gcc/config/or1k/or1k.h gcc-16-20260711/gcc/config/or1k/or1k.h
*** gcc-16-20260704/gcc/config/or1k/or1k.h	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/or1k/or1k.h	Sat Jul 11 22:32:07 2026
*************** do {
*** 394,399 ****
--- 394,402 ----
  /* All the work is done in PROFILE_HOOK, but this is still required.  */
  #define FUNCTION_PROFILER(STREAM, LABELNO) do { } while (0)
  
+ /* Shift instructions ignore all but the low-order few bits.  */
+ #define SHIFT_COUNT_TRUNCATED 1
+ 
  /* Dwarf 2 Support */
  #define DWARF2_DEBUGGING_INFO 1
  #define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LR_REGNUM)
diff -Nrcpad gcc-16-20260704/gcc/config/or1k/or1k.md gcc-16-20260711/gcc/config/or1k/or1k.md
*** gcc-16-20260704/gcc/config/or1k/or1k.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/or1k/or1k.md	Sat Jul 11 22:32:07 2026
***************
*** 217,223 ****
  (define_insn "<shift_op>si3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(SHIFT:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		  (match_operand:SI 2 "reg_or_u6_operand" "r,n")))]
    ""
    "@
     l.<shift_asm>\t%0, %1, %2
--- 217,223 ----
  (define_insn "<shift_op>si3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(SHIFT:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		  (match_operand:SI 2 "reg_or_u5_operand" "r,n")))]
    ""
    "@
     l.<shift_asm>\t%0, %1, %2
***************
*** 227,233 ****
  (define_insn "rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(rotatert:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		     (match_operand:SI 2 "ror_reg_or_u6_operand" "r,n")))]
    "TARGET_ROR || TARGET_RORI"
    "@
     l.ror\t%0, %1, %2
--- 227,233 ----
  (define_insn "rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(rotatert:SI (match_operand:SI 1 "register_operand"  "r,r")
! 		     (match_operand:SI 2 "ror_reg_or_u5_operand" "r,n")))]
    "TARGET_ROR || TARGET_RORI"
    "@
     l.ror\t%0, %1, %2
***************
*** 616,622 ****
  	    [(match_operand:SI 1 "reg_or_0_operand" "")
  	     (match_operand:SI 2 "reg_or_s16_operand" "")])
  	  (label_ref (match_operand 3 "" ""))
! 	  (pc)))]
    ""
    "#"
    "&& 1"
--- 616,623 ----
  	    [(match_operand:SI 1 "reg_or_0_operand" "")
  	     (match_operand:SI 2 "reg_or_s16_operand" "")])
  	  (label_ref (match_operand 3 "" ""))
! 	  (pc)))
!    (clobber (reg:BI SR_F_REGNUM))]
    ""
    "#"
    "&& 1"
diff -Nrcpad gcc-16-20260704/gcc/config/or1k/predicates.md gcc-16-20260711/gcc/config/or1k/predicates.md
*** gcc-16-20260704/gcc/config/or1k/predicates.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/or1k/predicates.md	Sat Jul 11 22:32:07 2026
***************
*** 38,46 ****
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "const0_operand")))
  
! (define_predicate "reg_or_u6_operand"
    (if_then_else (match_code "const_int")
!     (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x3f")
      (match_operand 0 "register_operand")))
  
  (define_predicate "reg_or_u16_operand"
--- 38,46 ----
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "const0_operand")))
  
! (define_predicate "reg_or_u5_operand"
    (if_then_else (match_code "const_int")
!     (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x1f")
      (match_operand 0 "register_operand")))
  
  (define_predicate "reg_or_u16_operand"
***************
*** 53,61 ****
      (match_test "INTVAL (op) >= -32768 && INTVAL (op) <= 32767")
      (match_operand 0 "register_operand")))
  
! (define_predicate "ror_reg_or_u6_operand"
    (if_then_else (match_code "const_int")
!     (and (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x3f")
  	 (match_test "TARGET_RORI"))
      (and (match_operand 0 "register_operand")
  	 (match_test "TARGET_ROR"))))
--- 53,61 ----
      (match_test "INTVAL (op) >= -32768 && INTVAL (op) <= 32767")
      (match_operand 0 "register_operand")))
  
! (define_predicate "ror_reg_or_u5_operand"
    (if_then_else (match_code "const_int")
!     (and (match_test "INTVAL (op) >= 0 && INTVAL (op) <= 0x1f")
  	 (match_test "TARGET_RORI"))
      (and (match_operand 0 "register_operand")
  	 (match_test "TARGET_ROR"))))
diff -Nrcpad gcc-16-20260704/gcc/config/riscv/autovec.md gcc-16-20260711/gcc/config/riscv/autovec.md
*** gcc-16-20260704/gcc/config/riscv/autovec.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/riscv/autovec.md	Sat Jul 11 22:32:07 2026
***************
*** 2423,2429 ****
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_inf (&rv, true);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MAX,
  				  UNSPEC_REDUC_MAX_VL0_SAFE,
--- 2423,2429 ----
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_nan (&rv, "", 1, VOIDmode);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MAX,
  				  UNSPEC_REDUC_MAX_VL0_SAFE,
***************
*** 2438,2444 ****
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_inf (&rv, false);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MIN,
  				  UNSPEC_REDUC_MIN_VL0_SAFE,
--- 2438,2444 ----
    "TARGET_VECTOR && !HONOR_SNANS (<MODE>mode)"
  {
    REAL_VALUE_TYPE rv;
!   real_nan (&rv, "", 1, VOIDmode);
    rtx f = const_double_from_real_value (rv, <VEL>mode);
    riscv_vector::expand_reduction (UNSPEC_REDUC_MIN,
  				  UNSPEC_REDUC_MIN_VL0_SAFE,
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/altivec.md gcc-16-20260711/gcc/config/rs6000/altivec.md
*** gcc-16-20260704/gcc/config/rs6000/altivec.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/altivec.md	Sat Jul 11 22:32:07 2026
***************
*** 238,243 ****
--- 238,245 ----
  ;; Vector negate
  (define_mode_iterator VNEG [V4SI V2DI])
  
+ (define_mode_iterator V16QI_V2DI [V16QI V2DI])
+ 
  ;; Vector move instructions.
  (define_insn "*altivec_mov<mode>"
    [(set (match_operand:VM2 0 "nonimmediate_operand" "=Z,v,v,?Y,?*r,?*r,v,v,?*r")
***************
*** 505,517 ****
  
  ;; add
  (define_insn "add<mode>3"
!   [(set (match_operand:VI2 0 "register_operand" "=v")
!         (plus:VI2 (match_operand:VI2 1 "register_operand" "v")
! 		  (match_operand:VI2 2 "register_operand" "v")))]
    "<VI_unit>"
    "vaddu<VI_char>m %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
  (define_insn "*altivec_addv4sf3"
    [(set (match_operand:V4SF 0 "register_operand" "=v")
          (plus:V4SF (match_operand:V4SF 1 "register_operand" "v")
--- 507,530 ----
  
  ;; add
  (define_insn "add<mode>3"
!   [(set (match_operand:V16QI_V2DI 0 "register_operand" "=v")
!         (plus:V16QI_V2DI (match_operand:V16QI_V2DI 1 "register_operand" "v")
!                          (match_operand:V16QI_V2DI 2 "register_operand" "v")))]
    "<VI_unit>"
    "vaddu<VI_char>m %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
+ (define_insn "add<mode>3"
+   [(set (match_operand:VIArith 0 "register_operand" "=wa,v")
+         (plus:VIArith (match_operand:VIArith 1 "register_operand" "wa,v")
+                       (match_operand:VIArith 2 "register_operand" "wa,v")))]
+   "<VI_unit>"
+   "@
+    xvaddu<VI_char>m %x0,%x1,%x2
+    vaddu<VI_char>m %0,%1,%2"
+   [(set_attr "type" "vecsimple")
+    (set_attr "isa" "future,*")])
+ 
  (define_insn "*altivec_addv4sf3"
    [(set (match_operand:V4SF 0 "register_operand" "=v")
          (plus:V4SF (match_operand:V4SF 1 "register_operand" "v")
***************
*** 549,561 ****
  
  ;; sub
  (define_insn "sub<mode>3"
!   [(set (match_operand:VI2 0 "register_operand" "=v")
!         (minus:VI2 (match_operand:VI2 1 "register_operand" "v")
! 		   (match_operand:VI2 2 "register_operand" "v")))]
    "<VI_unit>"
    "vsubu<VI_char>m %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
  (define_insn "*altivec_subv4sf3"
    [(set (match_operand:V4SF 0 "register_operand" "=v")
          (minus:V4SF (match_operand:V4SF 1 "register_operand" "v")
--- 562,585 ----
  
  ;; sub
  (define_insn "sub<mode>3"
!   [(set (match_operand:V16QI_V2DI 0 "register_operand" "=v")
!         (minus:V16QI_V2DI (match_operand:V16QI_V2DI 1 "register_operand" "v")
!                           (match_operand:V16QI_V2DI 2 "register_operand" "v")))]
    "<VI_unit>"
    "vsubu<VI_char>m %0,%1,%2"
    [(set_attr "type" "vecsimple")])
  
+ (define_insn "sub<mode>3"
+   [(set (match_operand:VIArith 0 "register_operand" "=wa,v")
+         (minus:VIArith (match_operand:VIArith 1 "register_operand" "wa,v")
+                        (match_operand:VIArith 2 "register_operand" "wa,v")))]
+   "<VI_unit>"
+   "@
+    xvsubu<VI_char>m %x0,%x1,%x2
+    vsubu<VI_char>m %0,%1,%2"
+   [(set_attr "type" "vecsimple")
+    (set_attr "isa" "future,*")])
+ 
  (define_insn "*altivec_subv4sf3"
    [(set (match_operand:V4SF 0 "register_operand" "=v")
          (minus:V4SF (match_operand:V4SF 1 "register_operand" "v")
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/rs6000-builtin.cc gcc-16-20260711/gcc/config/rs6000/rs6000-builtin.cc
*** gcc-16-20260704/gcc/config/rs6000/rs6000-builtin.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/rs6000-builtin.cc	Sat Jul 11 22:32:07 2026
*************** rs6000_invalid_builtin (enum rs6000_gen_
*** 146,151 ****
--- 146,155 ----
        error ("%qs requires the %qs and %qs options", name, "-mcpu=future",
  	     "-maltivec");
        break;
+     case ENB_FUTURE_VSX:
+       error ("%qs requires the %qs and %qs options", name, "-mcpu=future",
+ 	     "-mvsx");
+       break;
      default:
      case ENB_ALWAYS:
        gcc_unreachable ();
*************** rs6000_builtin_is_supported (enum rs6000
*** 205,210 ****
--- 209,216 ----
        return TARGET_FUTURE;
      case ENB_FUTURE_ALTIVEC:
        return TARGET_FUTURE && TARGET_ALTIVEC;
+     case ENB_FUTURE_VSX:
+       return TARGET_FUTURE && TARGET_VSX;
      default:
        gcc_unreachable ();
      }
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/rs6000-builtins.def gcc-16-20260711/gcc/config/rs6000/rs6000-builtins.def
*** gcc-16-20260704/gcc/config/rs6000/rs6000-builtins.def	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/rs6000-builtins.def	Sat Jul 11 22:32:07 2026
***************
*** 3987,3989 ****
--- 3987,3996 ----
  
    const vuc __builtin_galois_field_mult_xts (vuc, vuc);
      XXGFMUL128XTS xxgfmul128xts {}
+ 
+ [future-vsx]
+   const vus __builtin_vsx_xvmulhuh (vus, vus);
+     XVMULHUH umulv8hi3_highpart {}
+ 
+   const vss __builtin_vsx_xvmulhsh (vss, vss);
+     XVMULHSH smulv8hi3_highpart {}
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/rs6000-gen-builtins.cc gcc-16-20260711/gcc/config/rs6000/rs6000-gen-builtins.cc
*** gcc-16-20260704/gcc/config/rs6000/rs6000-gen-builtins.cc	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/rs6000-gen-builtins.cc	Sat Jul 11 22:32:07 2026
*************** enum bif_stanza
*** 234,239 ****
--- 234,240 ----
   BSTZ_MMA,
   BSTZ_FUTURE,
   BSTZ_FUTURE_ALTIVEC,
+  BSTZ_FUTURE_VSX,
   NUMBIFSTANZAS
  };
  
*************** static stanza_entry stanza_map[NUMBIFSTA
*** 269,275 ****
      { "power10-64",	BSTZ_P10_64	},
      { "mma",		BSTZ_MMA	},
      { "future",	BSTZ_FUTURE	},
!     { "future-altivec", BSTZ_FUTURE_ALTIVEC }
    };
  
  static const char *enable_string[NUMBIFSTANZAS] =
--- 270,277 ----
      { "power10-64",	BSTZ_P10_64	},
      { "mma",		BSTZ_MMA	},
      { "future",	BSTZ_FUTURE	},
!     { "future-altivec", BSTZ_FUTURE_ALTIVEC },
!     { "future-vsx",	BSTZ_FUTURE_VSX	}
    };
  
  static const char *enable_string[NUMBIFSTANZAS] =
*************** static const char *enable_string[NUMBIFS
*** 296,302 ****
      "ENB_P10_64",
      "ENB_MMA",
      "ENB_FUTURE",
!     "ENB_FUTURE_ALTIVEC"
    };
  
  /* Function modifiers provide special handling for const, pure, and fpmath
--- 298,305 ----
      "ENB_P10_64",
      "ENB_MMA",
      "ENB_FUTURE",
!     "ENB_FUTURE_ALTIVEC",
!     "ENB_FUTURE_VSX"
    };
  
  /* Function modifiers provide special handling for const, pure, and fpmath
*************** write_decls (void)
*** 2257,2263 ****
    fprintf (header_file, "  ENB_P10_64,\n");
    fprintf (header_file, "  ENB_MMA,\n");
    fprintf (header_file, "  ENB_FUTURE,\n");
!   fprintf (header_file, "  ENB_FUTURE_ALTIVEC\n");
    fprintf (header_file, "};\n\n");
  
    fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
--- 2260,2267 ----
    fprintf (header_file, "  ENB_P10_64,\n");
    fprintf (header_file, "  ENB_MMA,\n");
    fprintf (header_file, "  ENB_FUTURE,\n");
!   fprintf (header_file, "  ENB_FUTURE_ALTIVEC,\n");
!   fprintf (header_file, "  ENB_FUTURE_VSX\n");
    fprintf (header_file, "};\n\n");
  
    fprintf (header_file, "#define PPC_MAXRESTROPNDS 3\n");
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/rs6000-overload.def gcc-16-20260711/gcc/config/rs6000/rs6000-overload.def
*** gcc-16-20260704/gcc/config/rs6000/rs6000-overload.def	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/rs6000-overload.def	Sat Jul 11 22:32:07 2026
***************
*** 2538,2543 ****
--- 2538,2547 ----
      VMULEUD
  
  [VEC_MULH, vec_mulh, __builtin_vec_mulh]
+   vss __builtin_vec_mulh (vss, vss);
+     XVMULHSH
+   vus __builtin_vec_mulh (vus, vus);
+     XVMULHUH
    vsi __builtin_vec_mulh (vsi, vsi);
      VMULHSW
    vui __builtin_vec_mulh (vui, vui);
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/rs6000.md gcc-16-20260711/gcc/config/rs6000/rs6000.md
*** gcc-16-20260704/gcc/config/rs6000/rs6000.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/rs6000.md	Sat Jul 11 22:32:07 2026
***************
*** 369,375 ****
    (const (symbol_ref "(enum attr_cpu) rs6000_tune")))
  
  ;; The ISA we implement.
! (define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10"
    (const_string "any"))
  
  ;; Is this alternative enabled for the current CPU/ISA/etc.?
--- 369,375 ----
    (const (symbol_ref "(enum attr_cpu) rs6000_tune")))
  
  ;; The ISA we implement.
! (define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10,future"
    (const_string "any"))
  
  ;; Is this alternative enabled for the current CPU/ISA/etc.?
***************
*** 421,426 ****
--- 421,430 ----
       (and (eq_attr "isa" "p10")
  	  (match_test "TARGET_POWER10"))
       (const_int 1)
+ 
+      (and (eq_attr "isa" "future")
+           (match_test "TARGET_FUTURE"))
+      (const_int 1)
      ] (const_int 0)))
  
  ;; If this instruction is microcoded on the CELL processor
diff -Nrcpad gcc-16-20260704/gcc/config/rs6000/vsx.md gcc-16-20260711/gcc/config/rs6000/vsx.md
*** gcc-16-20260704/gcc/config/rs6000/vsx.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/rs6000/vsx.md	Sat Jul 11 22:32:07 2026
***************
*** 418,423 ****
--- 418,426 ----
  (define_int_attr vczlsbb_char [(UNSPEC_VCLZLSBB "l")
  			       (UNSPEC_VCTZLSBB "t")])
  
+ ;; Vector integer arithmetic modes
+ (define_mode_iterator VIArith [V8HI V4SI])
+ 
  ;; VSX moves
  
  ;; TImode memory to memory move optimization on LE with p8vector
***************
*** 1711,1716 ****
--- 1714,1726 ----
    "xvsub<sd>p %x0,%x1,%x2"
    [(set_attr "type" "<VStype_simple>")])
  
+ (define_insn "vsx_mul<mode>3"
+   [(set (match_operand:VIArith 0 "vsx_register_operand" "=wa")
+         (mult:VIArith (match_operand:VIArith 1 "vsx_register_operand" "wa")
+                       (match_operand:VIArith 2 "vsx_register_operand" "wa")))]
+   "TARGET_FUTURE && TARGET_VSX"
+   "xvmulu<wd>m %x0,%x1,%x2")
+ 
  (define_insn "*vsx_mul<mode>3"
    [(set (match_operand:VSX_F 0 "vsx_register_operand" "=wa")
          (mult:VSX_F (match_operand:VSX_F 1 "vsx_register_operand" "wa")
***************
*** 6546,6567 ****
    [(set_attr "type" "vecdiv")
     (set_attr "size" "<bits>")])
  
! (define_insn "smul<mode>3_highpart"
!   [(set (match_operand:VIlong 0 "altivec_register_operand" "=v")
! 	(smul_highpart:VIlong
! 	  (match_operand:VIlong 1 "altivec_register_operand" "v")
! 	  (match_operand:VIlong 2 "altivec_register_operand" "v")))]
    "TARGET_POWER10"
!   "vmulhs<wd> %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
! (define_insn "umul<mode>3_highpart"
!   [(set (match_operand:VIlong 0 "altivec_register_operand" "=v")
! 	(umul_highpart:VIlong
! 	  (match_operand:VIlong 1 "altivec_register_operand" "v")
! 	  (match_operand:VIlong 2 "altivec_register_operand" "v")))]
    "TARGET_POWER10"
!   "vmulhu<wd> %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
  ;; Vector multiply low double word
--- 6556,6617 ----
    [(set_attr "type" "vecdiv")
     (set_attr "size" "<bits>")])
  
! (define_insn "smulv8hi3_highpart"
!   [(set (match_operand:V8HI 0 "vsx_register_operand" "=wa")
!         (smul_highpart:V8HI
!           (match_operand:V8HI 1 "vsx_register_operand" "wa")
!           (match_operand:V8HI 2 "vsx_register_operand" "wa")))]
!   "TARGET_FUTURE && TARGET_VSX"
!   "xvmulhsh %x0,%x1,%x2")
! 
! (define_insn "smulv4si3_highpart"
!   [(set (match_operand:V4SI 0 "register_operand" "=wa,v")
!         (smul_highpart:V4SI
!           (match_operand:V4SI 1 "register_operand" "wa,v")
!           (match_operand:V4SI 2 "register_operand" "wa,v")))]
    "TARGET_POWER10"
!   "@
!    xvmulhsw %x0,%x1,%x2
!    vmulhsw %0,%1,%2"
!   [(set_attr "type" "veccomplex")
!    (set_attr "isa" "future,p10")])
! 
! (define_insn "smulv2di3_highpart"
!   [(set (match_operand:V2DI 0 "altivec_register_operand" "=v")
!         (smul_highpart:V2DI
!           (match_operand:V2DI 1 "altivec_register_operand" "v")
!           (match_operand:V2DI 2 "altivec_register_operand" "v")))]
!   "TARGET_POWER10"
!   "vmulhsd %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
! (define_insn "umulv8hi3_highpart"
!   [(set (match_operand:V8HI 0 "vsx_register_operand" "=wa")
!         (umul_highpart:V8HI
!           (match_operand:V8HI 1 "vsx_register_operand" "wa")
!           (match_operand:V8HI 2 "vsx_register_operand" "wa")))]
!   "TARGET_FUTURE && TARGET_VSX"
!   "xvmulhuh %x0,%x1,%x2")
! 
! (define_insn "umulv4si3_highpart"
!   [(set (match_operand:V4SI 0 "register_operand" "=wa,v")
!         (umul_highpart:V4SI
!           (match_operand:V4SI 1 "register_operand" "wa,v")
!           (match_operand:V4SI 2 "register_operand" "wa,v")))]
    "TARGET_POWER10"
!   "@
!    xvmulhuw %x0,%x1,%x2
!    vmulhuw %0,%1,%2"
!   [(set_attr "type" "veccomplex")
!    (set_attr "isa" "future,p10")])
! 
! (define_insn "umulv2di3_highpart"
!   [(set (match_operand:V2DI 0 "altivec_register_operand" "=v")
!         (umul_highpart:V2DI
!           (match_operand:V2DI 1 "altivec_register_operand" "v")
!           (match_operand:V2DI 2 "altivec_register_operand" "v")))]
!   "TARGET_POWER10"
!   "vmulhud %0,%1,%2"
    [(set_attr "type" "veccomplex")])
  
  ;; Vector multiply low double word
diff -Nrcpad gcc-16-20260704/gcc/config/s390/s390.md gcc-16-20260711/gcc/config/s390/s390.md
*** gcc-16-20260704/gcc/config/s390/s390.md	Sat Jul  4 22:32:07 2026
--- gcc-16-20260711/gcc/config/s390/s390.md	Sat Jul 11 22:32:07 2026
***************
*** 8217,8226 ****
    "<z10_or_zEC12_cond>
     /* Note that even for the SImode pattern, the rotate is always DImode.  */
     && s390_extzv_shift_ok (<bitsize>, -INTVAL (operands[2]),
! 			   INTVAL (operands[3]))"
!   "<risbg_n>\t%0,%1,%<bfstart>3,128+%<bfend>3,64-%2"
    [(set_attr "op_type" "RIE")
!    (set_attr "z10prop" "z10_super_E1")])
  
  (define_insn "*extzv_<mode>_sll<clobbercc_or_nocc>"
    [(set (match_operand:GPR 0 "register_operand" "=d")
--- 8217,8242 ----
    "<z10_or_zEC12_cond>
     /* Note that even for the SImode pattern, the rotate is always DImode.  */
     && s390_extzv_shift_ok (<bitsize>, -INTVAL (operands[2]),
! 			   INTVAL (operands[3]))
!    /* Ensure that we end up with a non-zero bitmask.  */
!    && (<MODE>mode == DImode
!        ? ((UINTVAL (operands[3]) << UINTVAL (operands[2])) >> UINTVAL (operands[2])) > 0
!        : (((unsigned int)UINTVAL (operands[3]) << UINTVAL (operands[2])) >> UINTVAL (operands[2])) > 0)"
! {
!   unsigned HOST_WIDE_INT shiftamount = UINTVAL (operands[2]);
!   unsigned HOST_WIDE_INT bitmask = UINTVAL (operands[3]);
!   /* Clear the higher bits of the mask which overlap with the vacated bits of
!      the shift.  */
!   if (<MODE>mode == DImode)
!     bitmask = (bitmask << shiftamount) >> shiftamount;
!   else
!     bitmask = ((unsigned int)bitmask << shiftamount) >> shiftamount;
!   operands[3] = GEN_INT (bitmask);
!   return "<risbg_n>\t%0,%1,%<bfstart>3,128+%<bfend>3,64-%2";
! }
    [(set_attr "op_type" "RIE")
!    (set_attr "z10prop" "z10_super_E1")
!    (set_attr "mnemonic" "<risbg_n>")])
  
  (define_insn "*extzv_<mode>_sll<clobbercc_or_nocc>"
    [(set (match_operand:GPR 0 "register_operand" "=d")
***************
*** 8230,8239 ****
  		(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
    "<z10_or_zEC12_cond>
     && s390_extzv_shift_ok (<bitsize>, INTVAL (operands[2]),
! 			   INTVAL (operands[3]))"
!   "<risbg_n>\t%0,%1,%<bfstart>3,128+%<bfend>3,%2"
    [(set_attr "op_type" "RIE")
!    (set_attr "z10prop" "z10_super_E1")])
  
  
  ;
--- 8246,8266 ----
  		(match_operand:GPR 3 "contiguous_bitmask_nowrap_operand" "")))]
    "<z10_or_zEC12_cond>
     && s390_extzv_shift_ok (<bitsize>, INTVAL (operands[2]),
! 			   INTVAL (operands[3]))
!    /* Ensure that we end up with a non-zero bitmask.  */
!    && ((UINTVAL (operands[3]) >> UINTVAL (operands[2])) << UINTVAL (operands[2])) > 0"
! {
!   unsigned HOST_WIDE_INT shiftamount = UINTVAL (operands[2]);
!   unsigned HOST_WIDE_INT bitmask = UINTVAL (operands[3]);
!   /* Clear the lower bits of the mask which overlap with the vacated bits of
!      the shift.  */
!   bitmask = (bitmask >> shiftamount) << shiftamount;
!   operands[3] = GEN_INT (bitmask);
!   return "<risbg_n>\t%0,%1,%<bfstart>3,128+%<bfend>3,%2";
! }
    [(set_attr "op_type" "RIE")
!    (set_attr "z10prop" "z10_super_E1")
!    (set_attr "mnemonic" "<risbg_n>")])
  
  
  ;
diff -Nrcpad gcc-16-20260704/gcc/config/sh/sh.md gcc-16-20260711/gcc/config/sh/sh.md
*** gcc-16-20260704/gcc/config/sh/sh.md	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/config/sh/sh.md	Sat Jul 11 22:32:07 2026
***************
*** 1563,1569 ****
  			  (match_operand:SI 2 "arith_reg_operand" "r"))
  		 (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(ltu:SI (plus:SI (match_dup 1) (match_dup 2)) (match_dup 1)))]
    "TARGET_SH1"
    "addc	%2,%0"
    [(set_attr "type" "arith")])
--- 1563,1572 ----
  			  (match_operand:SI 2 "arith_reg_operand" "r"))
  		 (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (plus:DI (plus:DI (zero_extend:DI (match_dup 1))
! 				  (zero_extend:DI (match_dup 2)))
! 			 (zero_extend:DI (reg:SI T_REG)))
! 		(const_int 4294967295)))]
    "TARGET_SH1"
    "addc	%2,%0"
    [(set_attr "type" "arith")])
***************
*** 1955,1963 ****
  			    (match_operand:SI 2 "arith_reg_operand" "r"))
  		  (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (minus:SI (minus:SI (match_dup 1) (match_dup 2))
! 			  (reg:SI T_REG))
! 		(match_dup 1)))]
    "TARGET_SH1"
    "subc	%2,%0"
    [(set_attr "type" "arith")])
--- 1958,1966 ----
  			    (match_operand:SI 2 "arith_reg_operand" "r"))
  		  (reg:SI T_REG)))
     (set (reg:SI T_REG)
! 	(gtu:SI (plus:DI (zero_extend:DI (match_dup 2))
! 			 (zero_extend:DI (reg:SI T_REG)))
! 		(zero_extend:DI (match_dup 1))))]
    "TARGET_SH1"
    "subc	%2,%0"
    [(set_attr "type" "arith")])
diff -Nrcpad gcc-16-20260704/gcc/cp/ChangeLog gcc-16-20260711/gcc/cp/ChangeLog
*** gcc-16-20260704/gcc/cp/ChangeLog	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/cp/ChangeLog	Sat Jul 11 22:32:07 2026
***************
*** 1,3 ****
--- 1,104 ----
+ 2026-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125901
+ 	* cp-tree.h (finish_trait_expr): Adjust declaration.
+ 	* reflect.cc (eval_constant_of): Adjust the call to
+ 	eval_is_array_type.
+ 	(eval_reflect_object): Adjust the call to eval_is_object_type.
+ 	(eval_type_trait): Emit a diagnostic when finish_trait_expr
+ 	returns error_mark_node and set *non_constant_p.  Adjust the
+ 	call to eval_type_trait.
+ 	(eval_is_array_type): Adjust the call to eval_type_trait.
+ 	(eval_is_pointer_type): Likewise.
+ 	(eval_is_member_object_pointer_type): Likewise.
+ 	(eval_is_member_function_pointer_type): Likewise.
+ 	(eval_is_enum_type): Likewise.
+ 	(eval_is_union_type): Likewise.
+ 	(eval_is_class_type): Likewise.
+ 	(eval_is_reference_type): Likewise.
+ 	(eval_is_member_pointer_type): Likewise.
+ 	(eval_is_object_type): Likewise.
+ 	(eval_is_trivially_copyable_type): Use eval_type_trait.
+ 	(eval_is_standard_layout_type): Likewise.
+ 	(eval_is_empty_type): Adjust the call to eval_type_trait.
+ 	(eval_is_polymorphic_type): Likewise.
+ 	(eval_is_abstract_type): Use eval_type_trait.
+ 	(eval_is_final_type): Adjust the call to eval_type_trait.
+ 	(eval_is_aggregate_type): Use eval_type_trait.
+ 	(eval_is_structural_type): Adjust the call to eval_type_trait.
+ 	(eval_is_bounded_array_type): Likewise.
+ 	(eval_is_constructible_type): Use eval_type_trait.
+ 	(eval_is_default_constructible_type): Likewise.
+ 	(eval_is_copy_constructible_type): Likewise.
+ 	(eval_is_move_constructible_type): Likewise.
+ 	(eval_is_assignable_type): Adjust the call to eval_type_trait.
+ 	(eval_is_copy_assignable_type): Use eval_type_trait.
+ 	(eval_is_move_assignable_type): Use eval_type_trait.
+ 	(eval_is_destructible_type): Adjust the call to eval_type_trait.
+ 	(eval_is_trivially_constructible_type): Use eval_type_trait.
+ 	(eval_is_trivially_default_constructible_type): Likewise.
+ 	(eval_is_trivially_copy_constructible_type): Likewise.
+ 	(eval_is_trivially_move_constructible_type): Likewise.
+ 	(eval_is_trivially_assignable_type): Adjust the call to
+ 	eval_type_trait.
+ 	(eval_is_trivially_copy_assignable_type): Use eval_type_trait.
+ 	(eval_is_trivially_move_assignable_type): Likewise.
+ 	(eval_is_trivially_destructible_type): Adjust the call to
+ 	eval_type_trait.
+ 	(eval_is_nothrow_constructible_type): Use eval_type_trait.
+ 	(eval_is_nothrow_default_constructible_type): Likewise.
+ 	(eval_is_nothrow_copy_constructible_type): Likewise.
+ 	(eval_is_nothrow_move_constructible_type): Likewise.
+ 	(eval_is_nothrow_assignable_type): Adjust the call to
+ 	eval_type_trait.
+ 	(eval_is_nothrow_copy_assignable_type): Use eval_type_trait.
+ 	(eval_is_nothrow_move_assignable_type): Likewise.
+ 	(eval_is_nothrow_destructible_type): Adjust the call to
+ 	eval_type_trait.
+ 	(eval_is_implicit_lifetime_type): Use eval_type_trait.
+ 	(eval_has_virtual_destructor): Likewise.
+ 	(eval_has_unique_object_representations): Likewise.
+ 	(eval_reference_constructs_from_temporary): Adjust the call to
+ 	eval_type_trait.
+ 	(eval_reference_converts_from_temporary): Likewise.
+ 	(eval_extent): Adjust the call to eval_is_bounded_array_type.
+ 	Check != boolean_true_node rather than == boolean_false_node when
+ 	checking eval_is_bounded_array_type.
+ 	(eval_is_same_type): Adjust the call to eval_type_trait.
+ 	(eval_is_base_of_type): Likewise.
+ 	(eval_is_virtual_base_of_type): Likewise.
+ 	(eval_is_convertible_type): Likewise.
+ 	(eval_is_nothrow_convertible_type): Likewise.
+ 	(eval_is_layout_compatible_type): Likewise.
+ 	(eval_is_pointer_interconvertible_base_of_type): Likewise.
+ 	(eval_is_invocable_type): Use eval_type_trait.
+ 	(eval_is_nothrow_invocable_type): Likewise.
+ 	(eval_data_member_spec): Adjust the calls to eval_is_array_type
+ 	and eval_is_object_type.  Check != boolean_true_node rather than
+ 	== boolean_false_node when checking eval_is_object_type.
+ 	(eval_extract): Adjust the call to eval_is_reference_type.
+ 	(process_metafunction): Adjust the calls to various
+ 	metafunctions.
+ 	* semantics.cc (check_trait_type): Remove a default argument.
+ 	Add a complain parameter.  If not emitting error messages, always
+ 	return false for incomplete types.
+ 	(finish_trait_expr): Add a complain parameter.  Use it.  Call
+ 	complete_type_or_maybe_complain instead of
+ 	complete_type_or_else.
+ 
+ 2026-07-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126031
+ 	PR c++/121552
+ 	* decl.cc (maybe_diagnose_non_c_class_typedef_for_linkage): Handle
+ 	incomplete type.
+ 
  2026-07-02  Jason Merrill  <jason@redhat.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/gcc/cp/cp-tree.h gcc-16-20260711/gcc/cp/cp-tree.h
*** gcc-16-20260704/gcc/cp/cp-tree.h	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/cp/cp-tree.h	Sat Jul 11 22:32:07 2026
*************** extern bool pointer_interconvertible_bas
*** 8662,8668 ****
  extern tree fold_builtin_is_pointer_inverconvertible_with_class (location_t, int, tree *);
  extern tree fold_builtin_is_string_literal	(location_t, int, tree *);
  extern tree finish_structured_binding_size	(location_t, tree, tsubst_flags_t);
! extern tree finish_trait_expr			(location_t, enum cp_trait_kind, tree, tree);
  extern tree finish_trait_type			(enum cp_trait_kind, tree, tree, tsubst_flags_t);
  extern tree build_lambda_expr                   (void);
  extern tree build_lambda_object			(tree);
--- 8662,8670 ----
  extern tree fold_builtin_is_pointer_inverconvertible_with_class (location_t, int, tree *);
  extern tree fold_builtin_is_string_literal	(location_t, int, tree *);
  extern tree finish_structured_binding_size	(location_t, tree, tsubst_flags_t);
! extern tree finish_trait_expr			(location_t, enum cp_trait_kind,
! 						 tree, tree,
! 						 tsubst_flags_t = tf_warning_or_error);
  extern tree finish_trait_type			(enum cp_trait_kind, tree, tree, tsubst_flags_t);
  extern tree build_lambda_expr                   (void);
  extern tree build_lambda_object			(tree);
diff -Nrcpad gcc-16-20260704/gcc/cp/decl.cc gcc-16-20260711/gcc/cp/decl.cc
*** gcc-16-20260704/gcc/cp/decl.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/cp/decl.cc	Sat Jul 11 22:32:07 2026
*************** diagnose_non_c_class_typedef_for_linkage
*** 13781,13786 ****
--- 13781,13788 ----
  static bool
  maybe_diagnose_non_c_class_typedef_for_linkage (tree type, tree orig, tree t)
  {
+   if (!COMPLETE_TYPE_P (t))
+     return false;
    if (!BINFO_BASE_BINFOS (TYPE_BINFO (t))->is_empty ())
      {
        auto_diagnostic_group d;
diff -Nrcpad gcc-16-20260704/gcc/cp/reflect.cc gcc-16-20260711/gcc/cp/reflect.cc
*** gcc-16-20260704/gcc/cp/reflect.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/cp/reflect.cc	Sat Jul 11 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 33,42 ****
  #include "metafns.h"
  
  static tree eval_is_function_type (tree);
! static tree eval_is_object_type (location_t, tree);
  static tree eval_reflect_constant (location_t, const constexpr_ctx *, tree,
  				   tree, bool *, tree *, tree);
! static tree eval_is_array_type (location_t, tree);
  static tree eval_reflect_constant_array (location_t, const constexpr_ctx *,
  					 tree, bool *, bool *, tree *, tree);
  static tree eval_reflect_function (location_t, const constexpr_ctx *, tree,
--- 33,44 ----
  #include "metafns.h"
  
  static tree eval_is_function_type (tree);
! static tree eval_is_object_type (location_t, const constexpr_ctx *, tree,
! 				 bool *, tree);
  static tree eval_reflect_constant (location_t, const constexpr_ctx *, tree,
  				   tree, bool *, tree *, tree);
! static tree eval_is_array_type (location_t, const constexpr_ctx *, tree,
! 				bool *, tree);
  static tree eval_reflect_constant_array (location_t, const constexpr_ctx *,
  					 tree, bool *, bool *, tree *, tree);
  static tree eval_reflect_function (location_t, const constexpr_ctx *, tree,
*************** eval_constant_of (location_t loc, const
*** 2794,2800 ****
  
    if (eval_is_annotation (r, kind) == boolean_true_node)
      r = tree_strip_any_location_wrapper (TREE_VALUE (TREE_VALUE (r)));
!   else if (eval_is_array_type (loc, type) == boolean_true_node)
      {
        const tsubst_flags_t complain = complain_flags (ctx);
        /* Create a call to reflect_constant_array so that we can simply
--- 2796,2803 ----
  
    if (eval_is_annotation (r, kind) == boolean_true_node)
      r = tree_strip_any_location_wrapper (TREE_VALUE (TREE_VALUE (r)));
!   else if (eval_is_array_type (loc, ctx, type, non_constant_p, fun)
! 	   == boolean_true_node)
      {
        const tsubst_flags_t complain = complain_flags (ctx);
        /* Create a call to reflect_constant_array so that we can simply
*************** eval_reflect_object (location_t loc, con
*** 4071,4077 ****
  		     tree expr, bool *non_constant_p, tree *jump_target,
  		     tree fun)
  {
!   if (eval_is_object_type (loc, type) != boolean_true_node)
      {
        error_at (loc, "%qT must be an object type", TREE_TYPE (type));
        return error_mark_node;
--- 4074,4081 ----
  		     tree expr, bool *non_constant_p, tree *jump_target,
  		     tree fun)
  {
!   if (eval_is_object_type (loc, ctx, type, non_constant_p, fun)
!       != boolean_true_node)
      {
        error_at (loc, "%qT must be an object type", TREE_TYPE (type));
        return error_mark_node;
*************** eval_reflect_function (location_t loc, c
*** 4127,4136 ****
     arguments to the trait.  */
  
  static tree
! eval_type_trait (location_t loc, tree type1, tree type2, cp_trait_kind kind)
  {
!   tree r = finish_trait_expr (loc, kind, type1, type2);
!   gcc_checking_assert (r != error_mark_node);
    STRIP_ANY_LOCATION_WRAPPER (r);
    return r;
  }
--- 4131,4177 ----
     arguments to the trait.  */
  
  static tree
! eval_type_trait (location_t loc, const constexpr_ctx *ctx, tree type1,
! 		 tree type2, cp_trait_kind kind, bool *non_constant_p,
! 		 tree fun)
  {
!   tree r = finish_trait_expr (loc, kind, type1, type2, tf_none);
!   if (r == error_mark_node)
!     {
!       /* [meta.reflection.traits]/3.2: Otherwise, if the instantiation of S
! 	 would result in undefined behavior due to dependence on an incomplete
! 	 type, then the call is not a constant subexpression.  */
!       if (!cxx_constexpr_quiet_p (ctx))
! 	{
! 	  auto_diagnostic_group d;
! 	  error_at (loc, "type trait %qE preconditions not satisfied", fun);
! 	  /* See if we can figure out which argument was incomplete.  */
! 	  tree inc = NULL_TREE;
! 	  if (!COMPLETE_OR_VOID_TYPE_P (type1)
! 	      && !array_of_unknown_bound_p (type1))
! 	    inc = type1;
! 	  else if (type2)
! 	    {
! 	      if (TYPE_P (type2)
! 		  && !COMPLETE_OR_VOID_TYPE_P (type2)
! 		  && !array_of_unknown_bound_p (type2))
! 		inc = type2;
! 	      else if (TREE_CODE (type2) == TREE_VEC)
! 		for (tree t : tree_vec_range (type2))
! 		  if (!COMPLETE_OR_VOID_TYPE_P (t)
! 		      && !array_of_unknown_bound_p (t))
! 		    {
! 		      inc = t;
! 		      break;
! 		    }
! 	    }
! 	  if (inc)
! 	    cxx_incomplete_type_diagnostic (loc, NULL_TREE, inc,
! 					    diagnostics::kind::note);
! 	}
!       *non_constant_p = true;
!       return NULL_TREE;
!     }
    STRIP_ANY_LOCATION_WRAPPER (r);
    return r;
  }
*************** eval_type_trait (location_t loc, tree ty
*** 4138,4146 ****
  /* Like above, but for type traits that take only one type.  */
  
  static tree
! eval_type_trait (location_t loc, tree type, cp_trait_kind kind)
  {
!   return eval_type_trait (loc, type, NULL_TREE, kind);
  }
  
  /* Process std::meta::is_function_type.  */
--- 4179,4189 ----
  /* Like above, but for type traits that take only one type.  */
  
  static tree
! eval_type_trait (location_t loc, const constexpr_ctx *ctx, tree type,
! 		 cp_trait_kind kind, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, NULL_TREE, kind, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_function_type.  */
*************** eval_is_floating_point_type (tree type)
*** 4201,4217 ****
  /* Process std::meta::is_array_type.  */
  
  static tree
! eval_is_array_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_ARRAY);
  }
  
  /* Process std::meta::is_pointer_type.  */
  
  static tree
! eval_is_pointer_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_POINTER);
  }
  
  /* Process std::meta::is_lvalue_reference_type.  */
--- 4244,4264 ----
  /* Process std::meta::is_array_type.  */
  
  static tree
! eval_is_array_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		    bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_ARRAY, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_pointer_type.  */
  
  static tree
! eval_is_pointer_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		      bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_POINTER, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_lvalue_reference_type.  */
*************** eval_is_rvalue_reference_type (tree type
*** 4239,4279 ****
  /* Process std::meta::is_member_object_pointer_type.  */
  
  static tree
! eval_is_member_object_pointer_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_MEMBER_OBJECT_POINTER);
  }
  
  /* Process std::meta::is_member_function_pointer_type.  */
  
  static tree
! eval_is_member_function_pointer_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_MEMBER_FUNCTION_POINTER);
  }
  
  /* Process std::meta::is_enum_type.  */
  
  static tree
! eval_is_enum_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_ENUM);
  }
  
  /* Process std::meta::is_union_type.  */
  
  static tree
! eval_is_union_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_UNION);
  }
  
  /* Process std::meta::is_class_type.  */
  
  static tree
! eval_is_class_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_CLASS);
  }
  
  /* Process std::meta::is_reflection_type.  */
--- 4286,4336 ----
  /* Process std::meta::is_member_object_pointer_type.  */
  
  static tree
! eval_is_member_object_pointer_type (location_t loc, const constexpr_ctx *ctx,
! 				    tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_MEMBER_OBJECT_POINTER,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_member_function_pointer_type.  */
  
  static tree
! eval_is_member_function_pointer_type (location_t loc, const constexpr_ctx *ctx,
! 				      tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_MEMBER_FUNCTION_POINTER,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_enum_type.  */
  
  static tree
! eval_is_enum_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		   bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_ENUM, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_union_type.  */
  
  static tree
! eval_is_union_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		    bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_UNION, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_class_type.  */
  
  static tree
! eval_is_class_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		    bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_CLASS, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_reflection_type.  */
*************** eval_is_reflection_type (tree type)
*** 4290,4298 ****
  /* Process std::meta::is_reference_type.  */
  
  static tree
! eval_is_reference_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_REFERENCE);
  }
  
  /* Process std::meta::is_arithmetic_type.  */
--- 4347,4357 ----
  /* Process std::meta::is_reference_type.  */
  
  static tree
! eval_is_reference_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 			bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_REFERENCE, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_arithmetic_type.  */
*************** eval_is_arithmetic_type (tree type)
*** 4309,4317 ****
  /* Process std::meta::is_object_type.  */
  
  static tree
! eval_is_object_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_OBJECT);
  }
  
  /* Process std::meta::is_scalar_type.  */
--- 4368,4378 ----
  /* Process std::meta::is_object_type.  */
  
  static tree
! eval_is_object_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		     bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_OBJECT, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_scalar_type.  */
*************** eval_is_compound_type (tree type)
*** 4353,4361 ****
  /* Process std::meta::is_member_pointer_type.  */
  
  static tree
! eval_is_member_pointer_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_MEMBER_POINTER);
  }
  
  /* Process std::meta::is_const_type.  */
--- 4414,4424 ----
  /* Process std::meta::is_member_pointer_type.  */
  
  static tree
! eval_is_member_pointer_type (location_t loc, const constexpr_ctx *ctx,
! 			     tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_MEMBER_POINTER,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_const_type.  */
*************** eval_is_volatile_type (tree type)
*** 4383,4440 ****
  /* Process std::meta::is_trivially_copyable_type.  */
  
  static tree
! eval_is_trivially_copyable_type (tree type)
  {
!   if (trivially_copyable_p (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_standard_layout_type.  */
  
  static tree
! eval_is_standard_layout_type (tree type)
  {
!   if (std_layout_type_p (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_empty_type.  */
  
  static tree
! eval_is_empty_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_EMPTY);
  }
  
  /* Process std::meta::is_polymorphic_type.  */
  
  static tree
! eval_is_polymorphic_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_POLYMORPHIC);
  }
  
  /* Process std::meta::is_abstract_type.  */
  
  static tree
! eval_is_abstract_type (tree type)
  {
!   if (ABSTRACT_CLASS_TYPE_P (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_final_type.  */
  
  static tree
! eval_is_final_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_FINAL);
  }
  
  /* Process std::meta::is_final.
--- 4446,4505 ----
  /* Process std::meta::is_trivially_copyable_type.  */
  
  static tree
! eval_is_trivially_copyable_type (location_t loc, const constexpr_ctx *ctx,
! 				 tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_TRIVIALLY_COPYABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_standard_layout_type.  */
  
  static tree
! eval_is_standard_layout_type (location_t loc, const constexpr_ctx *ctx,
! 			      tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_STD_LAYOUT, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_empty_type.  */
  
  static tree
! eval_is_empty_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		    bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_EMPTY, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_polymorphic_type.  */
  
  static tree
! eval_is_polymorphic_type (location_t loc, const constexpr_ctx *ctx,
! 			  tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_POLYMORPHIC, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_abstract_type.  */
  
  static tree
! eval_is_abstract_type (location_t loc, const constexpr_ctx *ctx,
! 		       tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_ABSTRACT, non_constant_p,
! 			  fun);
  }
  
  /* Process std::meta::is_final_type.  */
  
  static tree
! eval_is_final_type (location_t loc, const constexpr_ctx *ctx, tree type,
! 		    bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_FINAL, non_constant_p, fun);
  }
  
  /* Process std::meta::is_final.
*************** eval_is_final (tree r)
*** 4464,4483 ****
  /* Process std::meta::is_aggregate_type.  */
  
  static tree
! eval_is_aggregate_type (tree type)
  {
!   if (CP_AGGREGATE_TYPE_P (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_structural_type.  */
  
  static tree
! eval_is_structural_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_STRUCTURAL);
  }
  
  /* Process std::meta::is_signed_type.  */
--- 4529,4549 ----
  /* Process std::meta::is_aggregate_type.  */
  
  static tree
! eval_is_aggregate_type (location_t loc, const constexpr_ctx *ctx,
! 			tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_AGGREGATE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_structural_type.  */
  
  static tree
! eval_is_structural_type (location_t loc, const constexpr_ctx *ctx,
! 			 tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_STRUCTURAL,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_signed_type.  */
*************** eval_is_unsigned_type (tree type)
*** 4505,4513 ****
  /* Process std::meta::is_bounded_array_type.  */
  
  static tree
! eval_is_bounded_array_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_BOUNDED_ARRAY);
  }
  
  /* Process std::meta::is_unbounded_array_type.  */
--- 4571,4581 ----
  /* Process std::meta::is_bounded_array_type.  */
  
  static tree
! eval_is_bounded_array_type (location_t loc, const constexpr_ctx *ctx,
! 			    tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_BOUNDED_ARRAY,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_unbounded_array_type.  */
*************** eval_is_scoped_enum_type (tree type)
*** 4535,4862 ****
  /* Process std::meta::is_constructible_type.  */
  
  static tree
! eval_is_constructible_type (tree type, tree tvec)
  {
!   if (is_xible (INIT_EXPR, type, tvec))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_default_constructible_type.  */
  
  static tree
! eval_is_default_constructible_type (tree type)
  {
!   if (is_xible (INIT_EXPR, type, make_tree_vec (0)))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_copy_constructible_type.  */
  
  static tree
! eval_is_copy_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   if (is_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_move_constructible_type.  */
  
  static tree
! eval_is_move_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   if (is_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_assignable_type.  */
  
  static tree
! eval_is_assignable_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_ASSIGNABLE);
  }
  
  /* Process std::meta::is_copy_assignable_type.  */
  
  static tree
! eval_is_copy_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   if (is_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_move_assignable_type.  */
  
  static tree
! eval_is_move_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   if (is_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_destructible_type.  */
  
  static tree
! eval_is_destructible_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_DESTRUCTIBLE);
  }
  
  /* Process std::meta::is_trivially_constructible_type.  */
  
  static tree
! eval_is_trivially_constructible_type (tree type, tree tvec)
  {
!   if (is_trivially_xible (INIT_EXPR, type, tvec))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_default_constructible_type.  */
  
  static tree
! eval_is_trivially_default_constructible_type (tree type)
  {
!   if (is_trivially_xible (INIT_EXPR, type, make_tree_vec (0)))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_copy_constructible_type.  */
  
  static tree
! eval_is_trivially_copy_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   if (is_trivially_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_move_constructible_type.  */
  
  static tree
! eval_is_trivially_move_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   if (is_trivially_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_assignable_type.  */
  
  static tree
! eval_is_trivially_assignable_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_TRIVIALLY_ASSIGNABLE);
  }
  
  /* Process std::meta::is_trivially_copy_assignable_type.  */
  
  static tree
! eval_is_trivially_copy_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   if (is_trivially_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_move_assignable_type.  */
  
  static tree
! eval_is_trivially_move_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   if (is_trivially_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_trivially_destructible_type.  */
  
  static tree
! eval_is_trivially_destructible_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_TRIVIALLY_DESTRUCTIBLE);
  }
  
  /* Process std::meta::is_nothrow_constructible_type.  */
  
  static tree
! eval_is_nothrow_constructible_type (tree type, tree tvec)
  {
!   if (is_nothrow_xible (INIT_EXPR, type, tvec))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_default_constructible_type.  */
  
  static tree
! eval_is_nothrow_default_constructible_type (tree type)
  {
!   if (is_nothrow_xible (INIT_EXPR, type, make_tree_vec (0)))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_copy_constructible_type.  */
  
  static tree
! eval_is_nothrow_copy_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   if (is_nothrow_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_move_constructible_type.  */
  
  static tree
! eval_is_nothrow_move_constructible_type (tree type)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   if (is_nothrow_xible (INIT_EXPR, type, arg))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_assignable_type.  */
  
  static tree
! eval_is_nothrow_assignable_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_NOTHROW_ASSIGNABLE);
  }
  
  /* Process std::meta::is_nothrow_copy_assignable_type.  */
  
  static tree
! eval_is_nothrow_copy_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   if (is_nothrow_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_move_assignable_type.  */
  
  static tree
! eval_is_nothrow_move_assignable_type (tree type)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   if (is_nothrow_xible (MODIFY_EXPR, type1, type2))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::is_nothrow_destructible_type.  */
  
  static tree
! eval_is_nothrow_destructible_type (location_t loc, tree type)
  {
!   return eval_type_trait (loc, type, CPTK_IS_NOTHROW_DESTRUCTIBLE);
  }
  
  /* Process std::meta::is_implicit_lifetime_type.  */
  
  static tree
! eval_is_implicit_lifetime_type (tree type)
  {
!   if (implicit_lifetime_type_p (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::has_virtual_destructor.  */
  
  static tree
! eval_has_virtual_destructor (tree type)
  {
!   if (type_has_virtual_destructor (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::has_unique_object_representations.  */
  
  static tree
! eval_has_unique_object_representations (tree type)
  {
!   if (type_has_unique_obj_representations (type))
!     return boolean_true_node;
!   else
!     return boolean_false_node;
  }
  
  /* Process std::meta::reference_constructs_from_temporary.  */
  
  static tree
! eval_reference_constructs_from_temporary (location_t loc, tree type1,
! 					  tree type2)
  {
!   return eval_type_trait (loc, type1, type2,
! 			  CPTK_REF_CONSTRUCTS_FROM_TEMPORARY);
  }
  
  /* Process std::meta::reference_converts_from_temporary.  */
  
  static tree
! eval_reference_converts_from_temporary (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_REF_CONVERTS_FROM_TEMPORARY);
  }
  
  /* Process std::meta::rank.  */
--- 4603,4963 ----
  /* Process std::meta::is_constructible_type.  */
  
  static tree
! eval_is_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 			    tree type, tree tvec, bool *non_constant_p,
! 			    tree fun)
  {
!   return eval_type_trait (loc, ctx, type, tvec, CPTK_IS_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_default_constructible_type.  */
  
  static tree
! eval_is_default_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 				    tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, make_tree_vec (0),
! 			  CPTK_IS_CONSTRUCTIBLE, non_constant_p, fun);
  }
  
  /* Process std::meta::is_copy_constructible_type.  */
  
  static tree
! eval_is_copy_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 				 tree type, bool *non_constant_p, tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   return eval_type_trait (loc, ctx, type, arg, CPTK_IS_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_move_constructible_type.  */
  
  static tree
! eval_is_move_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 				 tree type, bool *non_constant_p, tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type, arg, CPTK_IS_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_assignable_type.  */
  
  static tree
! eval_is_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 			 tree type1, tree type2, bool *non_constant_p,
! 			 tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_copy_assignable_type.  */
  
  static tree
! eval_is_copy_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 			      tree type, bool *non_constant_p, tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_move_assignable_type.  */
  
  static tree
! eval_is_move_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 			      tree type, bool *non_constant_p, tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_destructible_type.  */
  
  static tree
! eval_is_destructible_type (location_t loc, const constexpr_ctx *ctx,
! 			   tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_DESTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_constructible_type.  */
  
  static tree
! eval_is_trivially_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 				      tree type, tree tvec,
! 				      bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, tvec,
! 			  CPTK_IS_TRIVIALLY_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_default_constructible_type.  */
  
  static tree
! eval_is_trivially_default_constructible_type (location_t loc,
! 					      const constexpr_ctx *ctx,
! 					      tree type, bool *non_constant_p,
! 					      tree fun)
  {
!   return eval_type_trait (loc, ctx, type, make_tree_vec (0),
! 			  CPTK_IS_TRIVIALLY_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_copy_constructible_type.  */
  
  static tree
! eval_is_trivially_copy_constructible_type (location_t loc,
! 					   const constexpr_ctx *ctx,
! 					   tree type, bool *non_constant_p,
! 					   tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   return eval_type_trait (loc, ctx, type, arg,
! 			  CPTK_IS_TRIVIALLY_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_move_constructible_type.  */
  
  static tree
! eval_is_trivially_move_constructible_type (location_t loc,
! 					   const constexpr_ctx *ctx,
! 					   tree type, bool *non_constant_p,
! 					   tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type, arg,
! 			  CPTK_IS_TRIVIALLY_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_assignable_type.  */
  
  static tree
! eval_is_trivially_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 				   tree type1, tree type2,
! 				   bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_TRIVIALLY_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_copy_assignable_type.  */
  
  static tree
! eval_is_trivially_copy_assignable_type (location_t loc,
! 					const constexpr_ctx *ctx,
! 					tree type, bool *non_constant_p,
! 					tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_TRIVIALLY_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_move_assignable_type.  */
  
  static tree
! eval_is_trivially_move_assignable_type (location_t loc,
! 					const constexpr_ctx *ctx,
! 					tree type, bool *non_constant_p,
! 					tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_TRIVIALLY_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_trivially_destructible_type.  */
  
  static tree
! eval_is_trivially_destructible_type (location_t loc, const constexpr_ctx *ctx,
! 				     tree type, bool *non_constant_p,
! 				     tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_TRIVIALLY_DESTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_constructible_type.  */
  
  static tree
! eval_is_nothrow_constructible_type (location_t loc, const constexpr_ctx *ctx,
! 				    tree type, tree tvec, bool *non_constant_p,
! 				    tree fun)
  {
!   return eval_type_trait (loc, ctx, type, tvec, CPTK_IS_NOTHROW_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_default_constructible_type.  */
  
  static tree
! eval_is_nothrow_default_constructible_type (location_t loc,
! 					    const constexpr_ctx *ctx,
! 					    tree type, bool *non_constant_p,
! 					    tree fun)
  {
!   return eval_type_trait (loc, ctx, type, make_tree_vec (0),
! 			  CPTK_IS_NOTHROW_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_copy_constructible_type.  */
  
  static tree
! eval_is_nothrow_copy_constructible_type (location_t loc,
! 					 const constexpr_ctx *ctx,
! 					 tree type, bool *non_constant_p,
! 					 tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0)
      = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST, false);
!   return eval_type_trait (loc, ctx, type, arg,
! 			  CPTK_IS_NOTHROW_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_move_constructible_type.  */
  
  static tree
! eval_is_nothrow_move_constructible_type (location_t loc,
! 					 const constexpr_ctx *ctx,
! 					 tree type, bool *non_constant_p,
! 					 tree fun)
  {
    tree arg = make_tree_vec (1);
    TREE_VEC_ELT (arg, 0) = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type, arg,
! 			  CPTK_IS_NOTHROW_CONSTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_assignable_type.  */
  
  static tree
! eval_is_nothrow_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 				 tree type1, tree type2, bool *non_constant_p,
! 				 tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_NOTHROW_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_copy_assignable_type.  */
  
  static tree
! eval_is_nothrow_copy_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 				      tree type, bool *non_constant_p, tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = build_stub_type (type, cp_type_quals (type) | TYPE_QUAL_CONST,
  				false);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_NOTHROW_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_move_assignable_type.  */
  
  static tree
! eval_is_nothrow_move_assignable_type (location_t loc, const constexpr_ctx *ctx,
! 				      tree type, bool *non_constant_p, tree fun)
  {
    tree type1 = cp_build_reference_type (type, /*rval=*/false);
    tree type2 = cp_build_reference_type (type, /*rval=*/true);
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_NOTHROW_ASSIGNABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_destructible_type.  */
  
  static tree
! eval_is_nothrow_destructible_type (location_t loc, const constexpr_ctx *ctx,
! 				   tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_NOTHROW_DESTRUCTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_implicit_lifetime_type.  */
  
  static tree
! eval_is_implicit_lifetime_type (location_t loc, const constexpr_ctx *ctx,
! 				tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_IS_IMPLICIT_LIFETIME,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::has_virtual_destructor.  */
  
  static tree
! eval_has_virtual_destructor (location_t loc, const constexpr_ctx *ctx,
! 			     tree type, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_HAS_VIRTUAL_DESTRUCTOR,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::has_unique_object_representations.  */
  
  static tree
! eval_has_unique_object_representations (location_t loc,
! 					const constexpr_ctx *ctx,
! 					tree type, bool *non_constant_p,
! 					tree fun)
  {
!   return eval_type_trait (loc, ctx, type, CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::reference_constructs_from_temporary.  */
  
  static tree
! eval_reference_constructs_from_temporary (location_t loc,
! 					  const constexpr_ctx *ctx,
! 					  tree type1, tree type2,
! 					  bool *non_constant_p,
! 					  tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2,
! 			  CPTK_REF_CONSTRUCTS_FROM_TEMPORARY,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::reference_converts_from_temporary.  */
  
  static tree
! eval_reference_converts_from_temporary (location_t loc,
! 					const constexpr_ctx *ctx,
! 					tree type1, tree type2,
! 					bool *non_constant_p,
! 					tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2,
! 			  CPTK_REF_CONVERTS_FROM_TEMPORARY,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::rank.  */
*************** eval_rank (tree type)
*** 4873,4879 ****
  /* Process std::meta::extent.  */
  
  static tree
! eval_extent (location_t loc, tree type, tree i)
  {
    size_t rank = tree_to_uhwi (i);
    while (rank && TREE_CODE (type) == ARRAY_TYPE)
--- 4974,4981 ----
  /* Process std::meta::extent.  */
  
  static tree
! eval_extent (location_t loc, const constexpr_ctx *ctx, tree type, tree i,
! 	     bool *non_constant_p, tree fun)
  {
    size_t rank = tree_to_uhwi (i);
    while (rank && TREE_CODE (type) == ARRAY_TYPE)
*************** eval_extent (location_t loc, tree type,
*** 4884,4890 ****
    tree r;
    if (rank
        || TREE_CODE (type) != ARRAY_TYPE
!       || eval_is_bounded_array_type (loc, type) == boolean_false_node)
      r = size_zero_node;
    else
      r = size_binop (PLUS_EXPR, TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
--- 4986,4993 ----
    tree r;
    if (rank
        || TREE_CODE (type) != ARRAY_TYPE
!       || eval_is_bounded_array_type (loc, ctx, type, non_constant_p,
! 				     fun) != boolean_true_node)
      r = size_zero_node;
    else
      r = size_binop (PLUS_EXPR, TYPE_MAX_VALUE (TYPE_DOMAIN (type)),
*************** eval_extent (location_t loc, tree type,
*** 4896,4964 ****
  /* Process std::meta::is_same_type.  */
  
  static tree
! eval_is_same_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_SAME);
  }
  
  /* Process std::meta::is_base_of_type.  */
  
  static tree
! eval_is_base_of_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_BASE_OF);
  }
  
  /* Process std::meta::is_virtual_base_of_type.  */
  
  static tree
! eval_is_virtual_base_of_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_VIRTUAL_BASE_OF);
  }
  
  /* Process std::meta::is_convertible_type.  */
  
  static tree
! eval_is_convertible_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_CONVERTIBLE);
  }
  
  /* Process std::meta::is_nothrow_convertible_type.  */
  
  static tree
! eval_is_nothrow_convertible_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_NOTHROW_CONVERTIBLE);
  }
  
  /* Process std::meta::is_layout_compatible_type.  */
  
  static tree
! eval_is_layout_compatible_type (location_t loc, tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2, CPTK_IS_LAYOUT_COMPATIBLE);
  }
  
  /* Process std::meta::is_pointer_interconvertible_base_of_type.  */
  
  static tree
  eval_is_pointer_interconvertible_base_of_type (location_t loc,
! 					       tree type1, tree type2)
  {
!   return eval_type_trait (loc, type1, type2,
! 			  CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF);
  }
  
  /* Process std::meta::is_invocable_type.  */
  
  static tree
! eval_is_invocable_type (location_t loc, tree type, tree tvec)
  {
!   tree r = finish_trait_expr (loc, CPTK_IS_INVOCABLE, type, tvec);
!   STRIP_ANY_LOCATION_WRAPPER (r);
!   return r;
  }
  
  /* Helper for various eval_* type trait functions which can't use builtin
--- 4999,5088 ----
  /* Process std::meta::is_same_type.  */
  
  static tree
! eval_is_same_type (location_t loc, const constexpr_ctx *ctx, tree type1,
! 		   tree type2, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_SAME,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_base_of_type.  */
  
  static tree
! eval_is_base_of_type (location_t loc, const constexpr_ctx *ctx,
! 		      tree type1, tree type2, bool *non_constant_p, tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_BASE_OF,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_virtual_base_of_type.  */
  
  static tree
! eval_is_virtual_base_of_type (location_t loc, const constexpr_ctx *ctx,
! 			      tree type1, tree type2, bool *non_constant_p,
! 			      tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_VIRTUAL_BASE_OF,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_convertible_type.  */
  
  static tree
! eval_is_convertible_type (location_t loc, const constexpr_ctx *ctx,
! 			  tree type1, tree type2, bool *non_constant_p,
! 			  tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_CONVERTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_nothrow_convertible_type.  */
  
  static tree
! eval_is_nothrow_convertible_type (location_t loc, const constexpr_ctx *ctx,
! 				  tree type1, tree type2, bool *non_constant_p,
! 				  tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_NOTHROW_CONVERTIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_layout_compatible_type.  */
  
  static tree
! eval_is_layout_compatible_type (location_t loc, const constexpr_ctx *ctx,
! 				tree type1, tree type2, bool *non_constant_p,
! 				tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2, CPTK_IS_LAYOUT_COMPATIBLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_pointer_interconvertible_base_of_type.  */
  
  static tree
  eval_is_pointer_interconvertible_base_of_type (location_t loc,
! 					       const constexpr_ctx *ctx,
! 					       tree type1, tree type2,
! 					       bool *non_constant_p,
! 					       tree fun)
  {
!   return eval_type_trait (loc, ctx, type1, type2,
! 			  CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_invocable_type.  */
  
  static tree
! eval_is_invocable_type (location_t loc, const constexpr_ctx *ctx,
! 			tree type, tree tvec, bool *non_constant_p,
! 			tree fun)
  {
!   return eval_type_trait (loc, ctx, type, tvec, CPTK_IS_INVOCABLE,
! 			  non_constant_p, fun);
  }
  
  /* Helper for various eval_* type trait functions which can't use builtin
*************** eval_is_invocable_r_type (location_t loc
*** 5031,5041 ****
  /* Process std::meta::is_nothrow_invocable_type.  */
  
  static tree
! eval_is_nothrow_invocable_type (location_t loc, tree type, tree tvec)
  {
!   tree r = finish_trait_expr (loc, CPTK_IS_NOTHROW_INVOCABLE, type, tvec);
!   STRIP_ANY_LOCATION_WRAPPER (r);
!   return r;
  }
  
  /* Process std::meta::is_{,nothrow_}swappable_with_type.  */
--- 5155,5166 ----
  /* Process std::meta::is_nothrow_invocable_type.  */
  
  static tree
! eval_is_nothrow_invocable_type (location_t loc, const constexpr_ctx *ctx,
! 				tree type, tree tvec, bool *non_constant_p,
! 				tree fun)
  {
!   return eval_type_trait (loc, ctx, type, tvec, CPTK_IS_NOTHROW_INVOCABLE,
! 			  non_constant_p, fun);
  }
  
  /* Process std::meta::is_{,nothrow_}swappable_with_type.  */
*************** eval_data_member_spec (location_t loc, c
*** 6079,6086 ****
  	return throw_exception (loc, ctx, "reflection does not have a type",
  				fun, non_constant_p, jump_target);
        tree type = type_of (r, kind);
!       if (eval_is_array_type (loc, type) == boolean_true_node
! 	  || eval_is_object_type (loc, type) == boolean_false_node)
  	return throw_exception (loc, ctx, "reflection does not have "
  					  "non-array object type",
  				fun, non_constant_p, jump_target);
--- 6204,6213 ----
  	return throw_exception (loc, ctx, "reflection does not have a type",
  				fun, non_constant_p, jump_target);
        tree type = type_of (r, kind);
!       if ((eval_is_array_type (loc, ctx, type, non_constant_p, fun)
! 	   == boolean_true_node)
! 	  || (eval_is_object_type (loc, ctx, type, non_constant_p, fun)
! 	      != boolean_true_node))
  	return throw_exception (loc, ctx, "reflection does not have "
  					  "non-array object type",
  				fun, non_constant_p, jump_target);
*************** eval_extract (location_t loc, const cons
*** 7689,7695 ****
  	      reflect_kind kind, bool *non_constant_p, bool *overflow_p,
  	      tree *jump_target, tree fun)
  {
!   if (eval_is_reference_type (loc, type) == boolean_true_node)
      return extract_ref (loc, ctx, type, r, kind, non_constant_p, jump_target,
  			fun);
    type = cv_unqualified (type);
--- 7816,7823 ----
  	      reflect_kind kind, bool *non_constant_p, bool *overflow_p,
  	      tree *jump_target, tree fun)
  {
!   if (eval_is_reference_type (loc, ctx, type, non_constant_p, fun)
!       == boolean_true_node)
      return extract_ref (loc, ctx, type, r, kind, non_constant_p, jump_target,
  			fun);
    type = cv_unqualified (type);
*************** process_metafunction (const constexpr_ct
*** 8263,8347 ****
      case METAFN_IS_FLOATING_POINT_TYPE:
        return eval_is_floating_point_type (h);
      case METAFN_IS_ARRAY_TYPE:
!       return eval_is_array_type (loc, h);
      case METAFN_IS_POINTER_TYPE:
!       return eval_is_pointer_type (loc, h);
      case METAFN_IS_LVALUE_REFERENCE_TYPE:
        return eval_is_lvalue_reference_type (h);
      case METAFN_IS_RVALUE_REFERENCE_TYPE:
        return eval_is_rvalue_reference_type (h);
      case METAFN_IS_MEMBER_OBJECT_POINTER_TYPE:
!       return eval_is_member_object_pointer_type (loc, h);
      case METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE:
!       return eval_is_member_function_pointer_type (loc, h);
      case METAFN_IS_ENUM_TYPE:
!       return eval_is_enum_type (loc, h);
      case METAFN_IS_UNION_TYPE:
!       return eval_is_union_type (loc, h);
      case METAFN_IS_CLASS_TYPE:
!       return eval_is_class_type (loc, h);
      case METAFN_IS_FUNCTION_TYPE:
        return eval_is_function_type (h);
      case METAFN_IS_REFLECTION_TYPE:
        return eval_is_reflection_type (h);
      case METAFN_IS_REFERENCE_TYPE:
!       return eval_is_reference_type (loc, h);
      case METAFN_IS_ARITHMETIC_TYPE:
        return eval_is_arithmetic_type (h);
      case METAFN_IS_FUNDAMENTAL_TYPE:
        return eval_is_fundamental_type (h);
      case METAFN_IS_OBJECT_TYPE:
!       return eval_is_object_type (loc, h);
      case METAFN_IS_SCALAR_TYPE:
        return eval_is_scalar_type (h);
      case METAFN_IS_COMPOUND_TYPE:
        return eval_is_compound_type (h);
      case METAFN_IS_MEMBER_POINTER_TYPE:
!       return eval_is_member_pointer_type (loc, h);
      case METAFN_IS_CONST_TYPE:
        return eval_is_const_type (h);
      case METAFN_IS_VOLATILE_TYPE:
        return eval_is_volatile_type (h);
      case METAFN_IS_TRIVIALLY_COPYABLE_TYPE:
!       return eval_is_trivially_copyable_type (h);
      case METAFN_IS_STANDARD_LAYOUT_TYPE:
!       return eval_is_standard_layout_type (h);
      case METAFN_IS_EMPTY_TYPE:
!       return eval_is_empty_type (loc, h);
      case METAFN_IS_POLYMORPHIC_TYPE:
!       return eval_is_polymorphic_type (loc, h);
      case METAFN_IS_ABSTRACT_TYPE:
!       return eval_is_abstract_type (h);
      case METAFN_IS_FINAL_TYPE:
!       return eval_is_final_type (loc, h);
      case METAFN_IS_AGGREGATE_TYPE:
!       return eval_is_aggregate_type (h);
      case METAFN_IS_STRUCTURAL_TYPE:
!       return eval_is_structural_type (loc, h);
      case METAFN_IS_SIGNED_TYPE:
        return eval_is_signed_type (h);
      case METAFN_IS_UNSIGNED_TYPE:
        return eval_is_unsigned_type (h);
      case METAFN_IS_BOUNDED_ARRAY_TYPE:
!       return eval_is_bounded_array_type (loc, h);
      case METAFN_IS_UNBOUNDED_ARRAY_TYPE:
        return eval_is_unbounded_array_type (h);
      case METAFN_IS_SCOPED_ENUM_TYPE:
        return eval_is_scoped_enum_type (h);
      case METAFN_IS_CONSTRUCTIBLE_TYPE:
!       return eval_is_constructible_type (h, hvec);
      case METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_default_constructible_type (h);
      case METAFN_IS_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_copy_constructible_type (h);
      case METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_move_constructible_type (h);
      case METAFN_IS_ASSIGNABLE_TYPE:
!       return eval_is_assignable_type (loc, h, h1);
      case METAFN_IS_COPY_ASSIGNABLE_TYPE:
!       return eval_is_copy_assignable_type (h);
      case METAFN_IS_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_move_assignable_type (h);
      case METAFN_IS_SWAPPABLE_WITH_TYPE:
        return eval_is_swappable_with_type (loc, ctx, h, h1, call,
  					  non_constant_p, jump_target, fun,
--- 8391,8480 ----
      case METAFN_IS_FLOATING_POINT_TYPE:
        return eval_is_floating_point_type (h);
      case METAFN_IS_ARRAY_TYPE:
!       return eval_is_array_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_POINTER_TYPE:
!       return eval_is_pointer_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_LVALUE_REFERENCE_TYPE:
        return eval_is_lvalue_reference_type (h);
      case METAFN_IS_RVALUE_REFERENCE_TYPE:
        return eval_is_rvalue_reference_type (h);
      case METAFN_IS_MEMBER_OBJECT_POINTER_TYPE:
!       return eval_is_member_object_pointer_type (loc, ctx, h, non_constant_p,
! 						 fun);
      case METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE:
!       return eval_is_member_function_pointer_type (loc, ctx, h, non_constant_p,
! 						   fun);
      case METAFN_IS_ENUM_TYPE:
!       return eval_is_enum_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_UNION_TYPE:
!       return eval_is_union_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_CLASS_TYPE:
!       return eval_is_class_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_FUNCTION_TYPE:
        return eval_is_function_type (h);
      case METAFN_IS_REFLECTION_TYPE:
        return eval_is_reflection_type (h);
      case METAFN_IS_REFERENCE_TYPE:
!       return eval_is_reference_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_ARITHMETIC_TYPE:
        return eval_is_arithmetic_type (h);
      case METAFN_IS_FUNDAMENTAL_TYPE:
        return eval_is_fundamental_type (h);
      case METAFN_IS_OBJECT_TYPE:
!       return eval_is_object_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_SCALAR_TYPE:
        return eval_is_scalar_type (h);
      case METAFN_IS_COMPOUND_TYPE:
        return eval_is_compound_type (h);
      case METAFN_IS_MEMBER_POINTER_TYPE:
!       return eval_is_member_pointer_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_CONST_TYPE:
        return eval_is_const_type (h);
      case METAFN_IS_VOLATILE_TYPE:
        return eval_is_volatile_type (h);
      case METAFN_IS_TRIVIALLY_COPYABLE_TYPE:
!       return eval_is_trivially_copyable_type (loc, ctx, h, non_constant_p,
! 					      fun);
      case METAFN_IS_STANDARD_LAYOUT_TYPE:
!       return eval_is_standard_layout_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_EMPTY_TYPE:
!       return eval_is_empty_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_POLYMORPHIC_TYPE:
!       return eval_is_polymorphic_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_ABSTRACT_TYPE:
!       return eval_is_abstract_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_FINAL_TYPE:
!       return eval_is_final_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_AGGREGATE_TYPE:
!       return eval_is_aggregate_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_STRUCTURAL_TYPE:
!       return eval_is_structural_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_SIGNED_TYPE:
        return eval_is_signed_type (h);
      case METAFN_IS_UNSIGNED_TYPE:
        return eval_is_unsigned_type (h);
      case METAFN_IS_BOUNDED_ARRAY_TYPE:
!       return eval_is_bounded_array_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_UNBOUNDED_ARRAY_TYPE:
        return eval_is_unbounded_array_type (h);
      case METAFN_IS_SCOPED_ENUM_TYPE:
        return eval_is_scoped_enum_type (h);
      case METAFN_IS_CONSTRUCTIBLE_TYPE:
!       return eval_is_constructible_type (loc, ctx, h, hvec, non_constant_p,
! 					 fun);
      case METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_default_constructible_type (loc, ctx, h, non_constant_p,
! 						 fun);
      case METAFN_IS_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_copy_constructible_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_move_constructible_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_ASSIGNABLE_TYPE:
!       return eval_is_assignable_type (loc, ctx, h, h1, non_constant_p, fun);
      case METAFN_IS_COPY_ASSIGNABLE_TYPE:
!       return eval_is_copy_assignable_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_move_assignable_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_SWAPPABLE_WITH_TYPE:
        return eval_is_swappable_with_type (loc, ctx, h, h1, call,
  					  non_constant_p, jump_target, fun,
*************** process_metafunction (const constexpr_ct
*** 8350,8386 ****
        return eval_is_swappable_type (loc, ctx, h, call, non_constant_p,
  				     jump_target, fun, "is_swappable");
      case METAFN_IS_DESTRUCTIBLE_TYPE:
!       return eval_is_destructible_type (loc, h);
      case METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_constructible_type (h, hvec);
      case METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_default_constructible_type (h);
      case METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_copy_constructible_type (h);
      case METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_move_constructible_type (h);
      case METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE:
!       return eval_is_trivially_assignable_type (loc, h, h1);
      case METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE:
!       return eval_is_trivially_copy_assignable_type (h);
      case METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_trivially_move_assignable_type (h);
      case METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE:
!       return eval_is_trivially_destructible_type (loc, h);
      case METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_constructible_type (h, hvec);
      case METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_default_constructible_type (h);
      case METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_copy_constructible_type (h);
      case METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_move_constructible_type (h);
      case METAFN_IS_NOTHROW_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_assignable_type (loc, h, h1);
      case METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_copy_assignable_type (h);
      case METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_move_assignable_type (h);
      case METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE:
        return eval_is_swappable_with_type (loc, ctx, h, h1, call,
  					  non_constant_p, jump_target, fun,
--- 8483,8535 ----
        return eval_is_swappable_type (loc, ctx, h, call, non_constant_p,
  				     jump_target, fun, "is_swappable");
      case METAFN_IS_DESTRUCTIBLE_TYPE:
!       return eval_is_destructible_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_constructible_type (loc, ctx, h, hvec,
! 						   non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_default_constructible_type (loc, ctx, h,
! 							   non_constant_p,
! 							   fun);
      case METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_copy_constructible_type (loc, ctx, h,
! 							non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_trivially_move_constructible_type (loc, ctx, h,
! 							non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE:
!       return eval_is_trivially_assignable_type (loc, ctx, h, h1,
! 						non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE:
!       return eval_is_trivially_copy_assignable_type (loc, ctx, h,
! 						     non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_trivially_move_assignable_type (loc, ctx, h,
! 						     non_constant_p, fun);
      case METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE:
!       return eval_is_trivially_destructible_type (loc, ctx, h, non_constant_p,
! 						  fun);
      case METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_constructible_type (loc, ctx, h, hvec,
! 						 non_constant_p, fun);
      case METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_default_constructible_type (loc, ctx, h,
! 							 non_constant_p, fun);
      case METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_copy_constructible_type (loc, ctx, h,
! 						      non_constant_p, fun);
      case METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE:
!       return eval_is_nothrow_move_constructible_type (loc, ctx, h,
! 						      non_constant_p, fun);
      case METAFN_IS_NOTHROW_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_assignable_type (loc, ctx, h, h1, non_constant_p,
! 					      fun);
      case METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_copy_assignable_type (loc, ctx, h, non_constant_p,
! 						   fun);
      case METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE:
!       return eval_is_nothrow_move_assignable_type (loc, ctx, h, non_constant_p,
! 						   fun);
      case METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE:
        return eval_is_swappable_with_type (loc, ctx, h, h1, call,
  					  non_constant_p, jump_target, fun,
*************** process_metafunction (const constexpr_ct
*** 8389,8431 ****
        return eval_is_swappable_type (loc, ctx, h, call, non_constant_p,
  				     jump_target, fun, "is_nothrow_swappable");
      case METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE:
!       return eval_is_nothrow_destructible_type (loc, h);
      case METAFN_IS_IMPLICIT_LIFETIME_TYPE:
!       return eval_is_implicit_lifetime_type (h);
      case METAFN_HAS_VIRTUAL_DESTRUCTOR:
!       return eval_has_virtual_destructor (h);
      case METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS:
!       return eval_has_unique_object_representations (h);
      case METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY:
!       return eval_reference_constructs_from_temporary (loc, h, h1);
      case METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY:
!       return eval_reference_converts_from_temporary (loc, h, h1);
      case METAFN_RANK:
        return eval_rank (h);
      case METAFN_EXTENT:
!       return eval_extent (loc, h, expr);
      case METAFN_IS_SAME_TYPE:
!       return eval_is_same_type (loc, h, h1);
      case METAFN_IS_BASE_OF_TYPE:
!       return eval_is_base_of_type (loc, h, h1);
      case METAFN_IS_VIRTUAL_BASE_OF_TYPE:
!       return eval_is_virtual_base_of_type (loc, h, h1);
      case METAFN_IS_CONVERTIBLE_TYPE:
!       return eval_is_convertible_type (loc, h, h1);
      case METAFN_IS_NOTHROW_CONVERTIBLE_TYPE:
!       return eval_is_nothrow_convertible_type (loc, h, h1);
      case METAFN_IS_LAYOUT_COMPATIBLE_TYPE:
!       return eval_is_layout_compatible_type (loc, h, h1);
      case METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE:
!       return eval_is_pointer_interconvertible_base_of_type (loc, h, h1);
      case METAFN_IS_INVOCABLE_TYPE:
!       return eval_is_invocable_type (loc, h, hvec);
      case METAFN_IS_INVOCABLE_R_TYPE:
        return eval_is_invocable_r_type (loc, ctx, h, h1, hvec, call,
  				       non_constant_p, jump_target, fun,
  				       "is_invocable_r");
      case METAFN_IS_NOTHROW_INVOCABLE_TYPE:
!       return eval_is_nothrow_invocable_type (loc, h, hvec);
      case METAFN_IS_NOTHROW_INVOCABLE_R_TYPE:
        return eval_is_invocable_r_type (loc, ctx, h, h1, hvec, call,
  				       non_constant_p, jump_target, fun,
--- 8538,8590 ----
        return eval_is_swappable_type (loc, ctx, h, call, non_constant_p,
  				     jump_target, fun, "is_nothrow_swappable");
      case METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE:
!       return eval_is_nothrow_destructible_type (loc, ctx, h, non_constant_p,
! 						fun);
      case METAFN_IS_IMPLICIT_LIFETIME_TYPE:
!       return eval_is_implicit_lifetime_type (loc, ctx, h, non_constant_p, fun);
      case METAFN_HAS_VIRTUAL_DESTRUCTOR:
!       return eval_has_virtual_destructor (loc, ctx, h, non_constant_p, fun);
      case METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS:
!       return eval_has_unique_object_representations (loc, ctx, h,
! 						     non_constant_p, fun);
      case METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY:
!       return eval_reference_constructs_from_temporary (loc, ctx, h, h1,
! 						       non_constant_p, fun);
      case METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY:
!       return eval_reference_converts_from_temporary (loc, ctx, h, h1,
! 						     non_constant_p, fun);
      case METAFN_RANK:
        return eval_rank (h);
      case METAFN_EXTENT:
!       return eval_extent (loc, ctx, h, expr, non_constant_p, fun);
      case METAFN_IS_SAME_TYPE:
!       return eval_is_same_type (loc, ctx, h, h1, non_constant_p, fun);
      case METAFN_IS_BASE_OF_TYPE:
!       return eval_is_base_of_type (loc, ctx, h, h1, non_constant_p, fun);
      case METAFN_IS_VIRTUAL_BASE_OF_TYPE:
!       return eval_is_virtual_base_of_type (loc, ctx, h, h1, non_constant_p,
! 					   fun);
      case METAFN_IS_CONVERTIBLE_TYPE:
!       return eval_is_convertible_type (loc, ctx, h, h1, non_constant_p, fun);
      case METAFN_IS_NOTHROW_CONVERTIBLE_TYPE:
!       return eval_is_nothrow_convertible_type (loc, ctx, h, h1, non_constant_p,
! 					       fun);
      case METAFN_IS_LAYOUT_COMPATIBLE_TYPE:
!       return eval_is_layout_compatible_type (loc, ctx, h, h1, non_constant_p,
! 					     fun);
      case METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE:
!       return eval_is_pointer_interconvertible_base_of_type (loc, ctx, h, h1,
! 							    non_constant_p,
! 							    fun);
      case METAFN_IS_INVOCABLE_TYPE:
!       return eval_is_invocable_type (loc, ctx, h, hvec, non_constant_p, fun);
      case METAFN_IS_INVOCABLE_R_TYPE:
        return eval_is_invocable_r_type (loc, ctx, h, h1, hvec, call,
  				       non_constant_p, jump_target, fun,
  				       "is_invocable_r");
      case METAFN_IS_NOTHROW_INVOCABLE_TYPE:
!       return eval_is_nothrow_invocable_type (loc, ctx, h, hvec, non_constant_p,
! 					     fun);
      case METAFN_IS_NOTHROW_INVOCABLE_R_TYPE:
        return eval_is_invocable_r_type (loc, ctx, h, h1, hvec, call,
  				       non_constant_p, jump_target, fun,
diff -Nrcpad gcc-16-20260704/gcc/cp/semantics.cc gcc-16-20260711/gcc/cp/semantics.cc
*** gcc-16-20260704/gcc/cp/semantics.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/cp/semantics.cc	Sat Jul 11 22:32:07 2026
*************** trait_expr_value (cp_trait_kind kind, tr
*** 14230,14239 ****
     If TYPE is a non-union class type, it must be complete.
  
     When KIND == 4:
!    If TYPE is a class type, it must be complete.  */
  
  static bool
! check_trait_type (tree type, int kind = 1)
  {
    if (type == NULL_TREE)
      return true;
--- 14230,14242 ----
     If TYPE is a non-union class type, it must be complete.
  
     When KIND == 4:
!    If TYPE is a class type, it must be complete.
! 
!    If COMPLAIN is not tf_none, we permerror and return false if that doesn't
!    produce a hard error.  */
  
  static bool
! check_trait_type (tree type, int kind, tsubst_flags_t complain)
  {
    if (type == NULL_TREE)
      return true;
*************** check_trait_type (tree type, int kind =
*** 14241,14247 ****
    if (TREE_CODE (type) == TREE_VEC)
      {
        for (tree arg : tree_vec_range (type))
! 	if (!check_trait_type (arg, kind))
  	  return false;
        return true;
      }
--- 14244,14250 ----
    if (TREE_CODE (type) == TREE_VEC)
      {
        for (tree arg : tree_vec_range (type))
! 	if (!check_trait_type (arg, kind, complain))
  	  return false;
        return true;
      }
*************** check_trait_type (tree type, int kind =
*** 14260,14268 ****
  
    type = complete_type (strip_array_types (type));
    if (!COMPLETE_TYPE_P (type)
!       && cxx_incomplete_type_diagnostic (NULL_TREE, type,
! 					 diagnostics::kind::permerror)
!       && !flag_permissive)
      return false;
    return true;
  }
--- 14263,14274 ----
  
    type = complete_type (strip_array_types (type));
    if (!COMPLETE_TYPE_P (type)
!       /* If we're not emitting error messages, always return false for
! 	 incomplete types.  */
!       && (complain == tf_none
! 	  || (cxx_incomplete_type_diagnostic (NULL_TREE, type,
! 					      diagnostics::kind::permerror)
! 	      && !flag_permissive)))
      return false;
    return true;
  }
*************** finish_structured_binding_size (location
*** 14332,14338 ****
  /* Process a trait expression.  */
  
  tree
! finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2)
  {
    if (type1 == error_mark_node
        || type2 == error_mark_node)
--- 14338,14345 ----
  /* Process a trait expression.  */
  
  tree
! finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2,
! 		   tsubst_flags_t complain/*=tf_warning_or_error*/)
  {
    if (type1 == error_mark_node
        || type2 == error_mark_node)
*************** finish_trait_expr (location_t loc, cp_tr
*** 14370,14376 ****
      case CPTK_IS_DESTRUCTIBLE:
      case CPTK_IS_NOTHROW_DESTRUCTIBLE:
      case CPTK_IS_TRIVIALLY_DESTRUCTIBLE:
!       if (!check_trait_type (type1))
  	return error_mark_node;
        break;
  
--- 14377,14383 ----
      case CPTK_IS_DESTRUCTIBLE:
      case CPTK_IS_NOTHROW_DESTRUCTIBLE:
      case CPTK_IS_TRIVIALLY_DESTRUCTIBLE:
!       if (!check_trait_type (type1, /*kind=*/1, complain))
  	return error_mark_node;
        break;
  
*************** finish_trait_expr (location_t loc, cp_tr
*** 14381,14387 ****
      case CPTK_IS_TRIVIALLY_COPYABLE:
      case CPTK_IS_STRUCTURAL:
      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
!       if (!check_trait_type (type1, /* kind = */ 2))
  	return error_mark_node;
        break;
  
--- 14388,14394 ----
      case CPTK_IS_TRIVIALLY_COPYABLE:
      case CPTK_IS_STRUCTURAL:
      case CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS:
!       if (!check_trait_type (type1, /* kind = */ 2, complain))
  	return error_mark_node;
        break;
  
*************** finish_trait_expr (location_t loc, cp_tr
*** 14389,14395 ****
      case CPTK_IS_EMPTY:
      case CPTK_IS_POLYMORPHIC:
      case CPTK_HAS_VIRTUAL_DESTRUCTOR:
!       if (!check_trait_type (type1, /* kind = */ 3))
  	return error_mark_node;
        break;
  
--- 14396,14402 ----
      case CPTK_IS_EMPTY:
      case CPTK_IS_POLYMORPHIC:
      case CPTK_HAS_VIRTUAL_DESTRUCTOR:
!       if (!check_trait_type (type1, /* kind = */ 3, complain))
  	return error_mark_node;
        break;
  
*************** finish_trait_expr (location_t loc, cp_tr
*** 14398,14404 ****
      case CPTK_IS_AGGREGATE:
      case CPTK_IS_FINAL:
      case CPTK_IS_IMPLICIT_LIFETIME:
!       if (!check_trait_type (type1, /* kind = */ 4))
  	return error_mark_node;
        break;
  
--- 14405,14411 ----
      case CPTK_IS_AGGREGATE:
      case CPTK_IS_FINAL:
      case CPTK_IS_IMPLICIT_LIFETIME:
!       if (!check_trait_type (type1, /* kind = */ 4, complain))
  	return error_mark_node;
        break;
  
*************** finish_trait_expr (location_t loc, cp_tr
*** 14419,14426 ****
      case CPTK_IS_ASSIGNABLE:
      case CPTK_IS_NOTHROW_ASSIGNABLE:
      case CPTK_IS_TRIVIALLY_ASSIGNABLE:
!       if (!check_trait_type (type1)
! 	  || !check_trait_type (type2))
  	return error_mark_node;
        break;
  
--- 14426,14433 ----
      case CPTK_IS_ASSIGNABLE:
      case CPTK_IS_NOTHROW_ASSIGNABLE:
      case CPTK_IS_TRIVIALLY_ASSIGNABLE:
!       if (!check_trait_type (type1, /*kind=*/1, complain)
! 	  || !check_trait_type (type2, /*kind=*/1, complain))
  	return error_mark_node;
        break;
  
*************** finish_trait_expr (location_t loc, cp_tr
*** 14428,14441 ****
      case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF:
        if (NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
  	  && !same_type_ignoring_top_level_qualifiers_p (type1, type2)
! 	  && !complete_type_or_else (type2, NULL_TREE))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
  
      case CPTK_IS_VIRTUAL_BASE_OF:
        if (NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
! 	  && !complete_type_or_else (type2, NULL_TREE))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
--- 14435,14448 ----
      case CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF:
        if (NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
  	  && !same_type_ignoring_top_level_qualifiers_p (type1, type2)
! 	  && !complete_type_or_maybe_complain (type2, NULL_TREE, complain))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
  
      case CPTK_IS_VIRTUAL_BASE_OF:
        if (NON_UNION_CLASS_TYPE_P (type1) && NON_UNION_CLASS_TYPE_P (type2)
! 	  && !complete_type_or_maybe_complain (type2, NULL_TREE, complain))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
*************** finish_trait_expr (location_t loc, cp_tr
*** 14472,14488 ****
        return maybe_wrap_with_location (type_order_value (type1, type2), loc);
  
      case CPTK_STRUCTURED_BINDING_SIZE:
!       return finish_structured_binding_size (loc, type1, tf_warning_or_error);
  
      case CPTK_IS_LAYOUT_COMPATIBLE:
        if (!array_of_unknown_bound_p (type1)
  	  && TREE_CODE (type1) != VOID_TYPE
! 	  && !complete_type_or_else (type1, NULL_TREE))
  	/* We already issued an error.  */
  	return error_mark_node;
        if (!array_of_unknown_bound_p (type2)
  	  && TREE_CODE (type2) != VOID_TYPE
! 	  && !complete_type_or_else (type2, NULL_TREE))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
--- 14479,14495 ----
        return maybe_wrap_with_location (type_order_value (type1, type2), loc);
  
      case CPTK_STRUCTURED_BINDING_SIZE:
!       return finish_structured_binding_size (loc, type1, complain);
  
      case CPTK_IS_LAYOUT_COMPATIBLE:
        if (!array_of_unknown_bound_p (type1)
  	  && TREE_CODE (type1) != VOID_TYPE
! 	  && !complete_type_or_maybe_complain (type1, NULL_TREE, complain))
  	/* We already issued an error.  */
  	return error_mark_node;
        if (!array_of_unknown_bound_p (type2)
  	  && TREE_CODE (type2) != VOID_TYPE
! 	  && !complete_type_or_maybe_complain (type2, NULL_TREE, complain))
  	/* We already issued an error.  */
  	return error_mark_node;
        break;
diff -Nrcpad gcc-16-20260704/gcc/doc/extend.texi gcc-16-20260711/gcc/doc/extend.texi
*** gcc-16-20260704/gcc/doc/extend.texi	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/doc/extend.texi	Sat Jul 11 22:32:07 2026
*************** vec_t __builtin_galois_field_mult_gcm (v
*** 26802,26807 ****
--- 26802,26825 ----
  vec_t __builtin_galois_field_mult_xts (vec_t, vec_t);
  @end smallexample
  
+ @subsubheading PowerPC Vector Integer Multiply High Built-in Functions
+ 
+ Future PowerPC processors may add new instructions for vector integer
+ multiply high for halfword. GCC provides support for these instructions through
+ the following built-in functions.
+ 
+ @findex vec_mulh
+ @smallexample
+ @exdent vector signed short
+ @exdent vec_mulh (vector signed short @var{a}, vector signed short @var{b});
+ @exdent vector unsigned short
+ @exdent vec_mulh (vector unsigned short @var{a}, vector unsigned short @var{b});
+ @end smallexample
+ 
+ For each integer value @code{i} from 0 to 7, do the following. The integer
+ value in halfword element @code{i} of @var{a} is multiplied by the integer
+ value in halfword element @code{i} of @var{b}. The high-order 16 bits of the
+ 32-bit product are placed into halfword element @code{i} of the vector returned.
  
  @node PowerPC Hardware Transactional Memory Built-in Functions
  @subsection PowerPC Hardware Transactional Memory Built-in Functions
diff -Nrcpad gcc-16-20260704/gcc/doc/ifn.texi gcc-16-20260711/gcc/doc/ifn.texi
*** gcc-16-20260704/gcc/doc/ifn.texi	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/doc/ifn.texi	Sat Jul 11 22:32:07 2026
*************** The @code{IFN_FLOATTOBITINT} internal fu
*** 1535,1539 ****
--- 1535,1545 ----
  The @code{IFN_BITINTTOFLOAT} internal function is expanded by the
  @code{expand_BITINTTOFLOAT} function.
  
+ @cindex @code{IFN_VARYING} internal function
+ @item @samp{IFN_VARYING}
+ Use @code{IFN_VARYING} as a temporary placeholder for a value whose
+ definition is still being built by the current pass.  The pass that creates
+ it must replace it before finishing; the verifier rejects any remaining calls.
+ 
  @end table
  
diff -Nrcpad gcc-16-20260704/gcc/doc/invoke.texi gcc-16-20260711/gcc/doc/invoke.texi
*** gcc-16-20260704/gcc/doc/invoke.texi	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/doc/invoke.texi	Sat Jul 11 22:32:07 2026
*************** Enable the TIndex Exception-like Vector
*** 21935,21942 ****
  Enable the TLBI Domains Extension.
  @item gcie
  Enable the GICv5 (Generic Interrupt Controller) CPU Interface Extension.
- @item mpamv2
- Enable MPAMv2 system registers.
  @item lscp
  Enable the load acquire and store release pair extension.
  @item mops-go
--- 21935,21940 ----
diff -Nrcpad gcc-16-20260704/gcc/fortran/ChangeLog gcc-16-20260711/gcc/fortran/ChangeLog
*** gcc-16-20260704/gcc/fortran/ChangeLog	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/ChangeLog	Sat Jul 11 22:32:07 2026
***************
*** 1,3 ****
--- 1,26 ----
+ 2026-07-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-07-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/126127
+ 	* interface.cc (find_symtree0): Check for NULL pointer.
+ 	(gfc_find_sym_in_symtree): Also search user-defined operator list
+ 	when the symbol refers to a function.
+ 
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/103367
+ 	* expr.cc (simplify_const_ref): Hoist the call to
+ 	remove_subobject_ref up a level.
+ 	* primary.cc (gfc_match_rvalue): Don't copy the value expr
+ 	if the type is an EXPR_VARIABLE.
+ 	* trans-array.cc (gfc_conv_array_initializer): Only copy the expr
+ 	value if it does not have a ref.
+ 
  2026-07-03  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/gcc/fortran/class.cc gcc-16-20260711/gcc/fortran/class.cc
*** gcc-16-20260704/gcc/fortran/class.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/class.cc	Sat Jul 11 22:32:07 2026
*************** gfc_find_derived_vtab (gfc_symbol *deriv
*** 2523,2528 ****
--- 2523,2537 ----
        if (vtab == NULL && module_ns != ns)
  	gfc_find_symbol (name, module_ns, 0, &vtab);
  
+       /* Fix up a stale non-use-associated duplicate vtab.  */
+       if (vtab
+ 	  && (derived->attr.use_assoc || derived->attr.used_in_submodule)
+ 	  && !vtab->attr.use_assoc && !vtab->module)
+ 	{
+ 	  vtab->attr.use_assoc = 1;
+ 	  vtab->module = derived->module;
+ 	}
+ 
        if (vtab == NULL)
  	{
  	  gfc_get_symbol (name, ns, &vtab);
*************** yes:
*** 2860,2865 ****
--- 2869,2887 ----
        gcc_assert (final->initializer
  		  && final->initializer->expr_type != EXPR_NULL);
        *final_expr = final->initializer;
+ 
+       /* Fix up a stale non-use-associated duplicate vtab.  */
+       if ((derived->attr.use_assoc || derived->attr.used_in_submodule)
+ 	  && (*final_expr)->expr_type == EXPR_VARIABLE
+ 	  && (*final_expr)->symtree)
+ 	{
+ 	  gfc_symbol *final_sym = (*final_expr)->symtree->n.sym;
+ 	  if (final_sym && !final_sym->attr.use_assoc && !final_sym->module)
+ 	    {
+ 	      final_sym->attr.use_assoc = 1;
+ 	      final_sym->module = derived->module;
+ 	    }
+ 	}
      }
    return true;
  }
diff -Nrcpad gcc-16-20260704/gcc/fortran/expr.cc gcc-16-20260711/gcc/fortran/expr.cc
*** gcc-16-20260704/gcc/fortran/expr.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/expr.cc	Sat Jul 11 22:32:07 2026
*************** simplify_const_ref (gfc_expr *p)
*** 2162,2177 ****
        switch (p->ref->type)
  	{
  	case REF_ARRAY:
! 	  switch (p->ref->u.ar.type)
  	    {
! 	    case AR_ELEMENT:
! 	      /* <type/kind spec>, parameter :: x(<int>) = scalar_expr
! 		 will generate this.  */
! 	      if (p->expr_type != EXPR_ARRAY)
  		{
! 		  remove_subobject_ref (p, NULL);
! 		  break;
  		}
  	      if (!find_array_element (p->value.constructor, &p->ref->u.ar, &cons))
  		return false;
  
--- 2162,2187 ----
        switch (p->ref->type)
  	{
  	case REF_ARRAY:
! 	  /* <type/kind spec>, parameter :: x(<int>) = scalar_expr
! 	     will generate this.  */
! 	  if (p->expr_type != EXPR_ARRAY)
  	    {
! 	      if (p->ref->u.ar.type == AR_ELEMENT)
  		{
! 		  int dim;
! 		  for (dim = 0; dim < p->ref->u.ar.dimen; dim++)
! 		    if (!p->ref->u.ar.start[dim]
! 			|| p->ref->u.ar.start[dim]->expr_type != EXPR_CONSTANT)
! 		      return true;
  		}
+ 
+ 	      remove_subobject_ref (p, NULL);
+ 	      break;
+ 	    }
+ 
+ 	  switch (p->ref->u.ar.type)
+ 	    {
+ 	    case AR_ELEMENT:
  	      if (!find_array_element (p->value.constructor, &p->ref->u.ar, &cons))
  		return false;
  
diff -Nrcpad gcc-16-20260704/gcc/fortran/interface.cc gcc-16-20260711/gcc/fortran/interface.cc
*** gcc-16-20260704/gcc/fortran/interface.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/interface.cc	Sat Jul 11 22:32:07 2026
*************** find_symtree0 (gfc_symtree *root, gfc_sy
*** 4844,4850 ****
  {
    gfc_symtree * st;
  
!   if (root->n.sym == sym)
      return root;
  
    st = NULL;
--- 4844,4850 ----
  {
    gfc_symtree * st;
  
!   if (root == NULL || root->n.sym == sym)
      return root;
  
    st = NULL;
*************** gfc_find_sym_in_symtree (gfc_symbol *sym
*** 4877,4882 ****
--- 4877,4890 ----
        st = find_symtree0 (ns->sym_root, sym);
        if (st)
  	return st;
+ 
+       /* Search user-defined operators.  */
+       if (ns->uop_root && sym->attr.function)
+ 	{
+ 	  st = find_symtree0 (ns->uop_root, sym);
+ 	  if (st)
+ 	    return st;
+ 	}
      }
    gfc_internal_error ("Unable to find symbol %qs", sym->name);
    /* Not reached.  */
diff -Nrcpad gcc-16-20260704/gcc/fortran/module.cc gcc-16-20260711/gcc/fortran/module.cc
*** gcc-16-20260704/gcc/fortran/module.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/module.cc	Sat Jul 11 22:32:07 2026
*************** read_module (void)
*** 5881,5886 ****
--- 5881,5900 ----
  				module_name, 0))
  	    continue;
  
+ 	  /* Skip re-importing a derived type already visible via host
+ 	     association from the same module.  */
+ 	  if (!only_flag && !info->u.rsym.renamed
+ 		&& strcmp (name, module_name) != 0
+ 		&& gfc_current_ns->parent)
+ 	    {
+ 	      gfc_symbol *host_sym;
+ 	      gfc_find_symbol (name, gfc_current_ns, 1, &host_sym);
+ 	      if (host_sym && host_sym->attr.flavor == FL_DERIVED
+ 		  && host_sym->module
+ 		  && strcmp (host_sym->module, module_name) == 0)
+ 		continue;
+ 	    }
+ 
  	  st = gfc_find_symtree (gfc_current_ns->sym_root, p);
  
  	  if (st != NULL
diff -Nrcpad gcc-16-20260704/gcc/fortran/primary.cc gcc-16-20260711/gcc/fortran/primary.cc
*** gcc-16-20260704/gcc/fortran/primary.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/primary.cc	Sat Jul 11 22:32:07 2026
*************** gfc_match_rvalue (gfc_expr **result)
*** 4025,4031 ****
  	 end up here.  Unfortunately, sym->value->expr_type is set to
  	 EXPR_CONSTANT, and so the if () branch would be followed without
  	 the !sym->as check.  */
!       if (sym->value && sym->value->expr_type != EXPR_ARRAY && !sym->as)
  	e = gfc_copy_expr (sym->value);
        else
  	{
--- 4025,4032 ----
  	 end up here.  Unfortunately, sym->value->expr_type is set to
  	 EXPR_CONSTANT, and so the if () branch would be followed without
  	 the !sym->as check.  */
!       if (sym->value && sym->value->expr_type != EXPR_ARRAY
! 	  && sym->value->expr_type != EXPR_VARIABLE && !sym->as)
  	e = gfc_copy_expr (sym->value);
        else
  	{
diff -Nrcpad gcc-16-20260704/gcc/fortran/trans-array.cc gcc-16-20260711/gcc/fortran/trans-array.cc
*** gcc-16-20260704/gcc/fortran/trans-array.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/fortran/trans-array.cc	Sat Jul 11 22:32:07 2026
*************** gfc_conv_array_initializer (tree type, g
*** 7155,7161 ****
  
    if (expr->expr_type == EXPR_VARIABLE
        && expr->symtree->n.sym->attr.flavor == FL_PARAMETER
!       && expr->symtree->n.sym->value)
      expr = expr->symtree->n.sym->value;
  
    /* After parameter substitution the expression should be a constant, array
--- 7155,7162 ----
  
    if (expr->expr_type == EXPR_VARIABLE
        && expr->symtree->n.sym->attr.flavor == FL_PARAMETER
!       && expr->symtree->n.sym->value
!       && !expr->ref)
      expr = expr->symtree->n.sym->value;
  
    /* After parameter substitution the expression should be a constant, array
diff -Nrcpad gcc-16-20260704/gcc/internal-fn.cc gcc-16-20260711/gcc/internal-fn.cc
*** gcc-16-20260704/gcc/internal-fn.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/internal-fn.cc	Sat Jul 11 22:32:08 2026
*************** expand_MASK_CALL (internal_fn, gcall *)
*** 5687,5692 ****
--- 5687,5699 ----
  }
  
  void
+ expand_VARYING (internal_fn, gcall *)
+ {
+   /* This IFN should reach expand.  */
+   gcc_unreachable ();
+ }
+ 
+ void
  expand_MULBITINT (internal_fn, gcall *stmt)
  {
    rtx_mode_t args[6];
diff -Nrcpad gcc-16-20260704/gcc/internal-fn.def gcc-16-20260711/gcc/internal-fn.def
*** gcc-16-20260704/gcc/internal-fn.def	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/internal-fn.def	Sat Jul 11 22:32:08 2026
*************** DEF_INTERNAL_FN (CO_FRAME, ECF_PURE | EC
*** 599,604 ****
--- 599,608 ----
  /* A NOP function with arbitrary arguments and return value.  */
  DEF_INTERNAL_FN (NOP, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
+ /* A GIMPLE value with no definition and not Virtual Opeands for temporary
+    assignment cases within a pass.  */
+ DEF_INTERNAL_FN (VARYING , ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
+ 
  /* Temporary vehicle for __builtin_shufflevector.  */
  DEF_INTERNAL_FN (SHUFFLEVECTOR, ECF_CONST | ECF_LEAF | ECF_NOTHROW, NULL)
  
diff -Nrcpad gcc-16-20260704/gcc/internal-fn.h gcc-16-20260711/gcc/internal-fn.h
*** gcc-16-20260704/gcc/internal-fn.h	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/internal-fn.h	Sat Jul 11 22:32:08 2026
*************** extern void expand_SPACESHIP (internal_f
*** 275,280 ****
--- 275,281 ----
  extern void expand_TRAP (internal_fn, gcall *);
  extern void expand_ASSUME (internal_fn, gcall *);
  extern void expand_MASK_CALL (internal_fn, gcall *);
+ extern void expand_VARYING (internal_fn, gcall *);
  extern void expand_MULBITINT (internal_fn, gcall *);
  extern void expand_DIVMODBITINT (internal_fn, gcall *);
  extern void expand_FLOATTOBITINT (internal_fn, gcall *);
diff -Nrcpad gcc-16-20260704/gcc/ipa-cp.cc gcc-16-20260711/gcc/ipa-cp.cc
*** gcc-16-20260704/gcc/ipa-cp.cc	Sat Jul  4 22:32:08 2026
--- gcc-16-20260711/gcc/ipa-cp.cc	Sat Jul 11 22:32:08 2026
*************** ipa_vr_intersect_with_arith_jfunc (vrang
*** 1818,1838 ****
  	  if (!ipa_vr_operation_and_type_effects (op_res, src_vr, operation,
  						  operation_type, src_type))
  	    return;
- 	  if (src_type == dst_type)
- 	    {
- 	      vr.intersect (op_res);
- 	      return;
- 	    }
  	  inter_vr = &op_res;
  	  src_type = operation_type;
  	}
        else
  	inter_vr = &src_vr;
  
!       value_range tmp_res (dst_type);
!       if (ipa_vr_operation_and_type_effects (tmp_res, *inter_vr, NOP_EXPR,
! 					     dst_type, src_type))
! 	vr.intersect (tmp_res);
        return;
      }
  
--- 1818,1839 ----
  	  if (!ipa_vr_operation_and_type_effects (op_res, src_vr, operation,
  						  operation_type, src_type))
  	    return;
  	  inter_vr = &op_res;
  	  src_type = operation_type;
  	}
        else
  	inter_vr = &src_vr;
  
!       if (src_type != dst_type)
! 	{
! 	  value_range tmp_res (dst_type);
! 	  if (!ipa_vr_operation_and_type_effects (tmp_res, *inter_vr, NOP_EXPR,
! 						  dst_type, src_type))
! 	    return;
! 	  vr.intersect (tmp_res);
! 	}
!       else
! 	vr.intersect (*inter_vr);
        return;
      }
  
diff -Nrcpad gcc-16-20260704/gcc/testsuite/ChangeLog gcc-16-20260711/gcc/testsuite/ChangeLog
*** gcc-16-20260704/gcc/testsuite/ChangeLog	Sat Jul  4 22:32:11 2026
--- gcc-16-20260711/gcc/testsuite/ChangeLog	Sat Jul 11 22:32:10 2026
***************
*** 1,3 ****
--- 1,167 ----
+ 2026-07-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	Backported from master:
+ 	2026-06-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/124128
+ 	* gcc.dg/ipa/pr124128.c: New test.
+ 
+ 2026-07-10  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-01  Stefan Schulze Frielinghaus  <stefansf@gcc.gnu.org>
+ 
+ 	PR target/126054
+ 	* gcc.target/s390/pr126054.c: New test.
+ 
+ 2026-07-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/126116
+ 	* gfortran.dg/pr126116.f90: New test.
+ 
+ 2026-07-09  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	Backported from master:
+ 	2026-07-08  Harald Anlauf  <anlauf@gmx.de>
+ 
+ 	PR fortran/126127
+ 	* gfortran.dg/block_18.f90: New test.
+ 
+ 2026-07-09  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-08  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/126148
+ 	* gcc.target/i386/pr126148.c: New test.
+ 
+ 2026-07-09  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-07  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/103367
+ 	* gfortran.dg/pr103367_2.f90: New test.
+ 	* gfortran.dg/pr103367_3.f90: New test.
+ 	* gfortran.dg/pr103367_4.f90: New test.
+ 
+ 2026-07-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/125901
+ 	* g++.dg/reflect/type_trait16.C: New test.
+ 	* g++.dg/reflect/type_trait17.C: New test.
+ 	* g++.dg/reflect/type_trait18.C: New test.
+ 
+ 2026-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	Backported from master:
+ 	2026-06-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/125597
+ 	* gcc.target/aarch64/pr125597.c: New test.
+ 
+ 2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	Backported from master:
+ 	2026-07-07  Stafford Horne  <shorne@gmail.com>
+ 
+ 	PR target/126081
+ 	* gcc.target/or1k/pr126081.c: New test.
+ 
+ 2026-07-07  Jeevitha  <jeevitha@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-07-01  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/vsx_arith_builtin-1.c: Remove inline asm
+ 	that forces operands into FPRs.
+ 	* gcc.target/powerpc/vsx_arith_builtin-2.c: Likewise.
+ 	* gcc.target/powerpc/vsx_arith_vect_1.c: Likewiswe.
+ 
+ 2026-07-07  Jeevitha  <jeevitha@linux.ibm.com>
+ 
+ 	Backported from master:
+ 	2026-06-24  Jeevitha Palanisamy  <jeevitha@linux.ibm.com>
+ 
+ 	* gcc.target/powerpc/vsx_arith_builtin-1.c: New test.
+ 	* gcc.target/powerpc/vsx_arith_builtin-2.c: Likewise.
+ 	* gcc.target/powerpc/vsx_arith_builtin-3.c: Likewise.
+ 	* gcc.target/powerpc/vsx_arith_builtin-4.c: Likewise.
+ 	* gcc.target/powerpc/vsx_arith_vect_1.c: Likewise.
+ 	* gcc.target/powerpc/vsx_arith_vect_2.c: Likewise.
+ 
+ 2026-07-07  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	Backported from master:
+ 	2026-07-01  Icenowy Zheng  <zhengxingda@iscas.ac.cn>
+ 
+ 	PR target/126049
+ 	* gcc.target/riscv/rvv/autovec/pr126049.c: New.
+ 
+ 2026-07-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/126031
+ 	PR c++/121552
+ 	* g++.dg/cpp2a/typedef2.C: New test.
+ 
+ 2026-07-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/tls-disable-literal-pool.c: Add quotation for
+ 	command line arguments.
+ 
+ 2026-07-06  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	Backported from master:
+ 	2026-07-06  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/126098
+ 	* gcc.target/i386/pr126098.c: New test.
+ 
+ 2026-07-05  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-04  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/125072
+ 	* gcc.dg/pr125072.c: New test.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c: Avoid heap
+ 	corruption.
+ 	* gcc.dg/ubsan/pointer-counted-by-bounds-124230.c: Likewise.
+ 
+ 2026-07-05  Kees Cook  <kees@kernel.org>
+ 
+ 	Backported from master:
+ 	2026-06-19  Kees Cook  <kees@kernel.org>
+ 
+ 	PR c/125604
+ 	* gcc.dg/counted-by-unary.c: New test.
+ 
+ 2026-07-05  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	Backported from master:
+ 	2026-06-03  Martin Uecker  <uecker@tugraz.at>
+ 
+ 	PR c/123569
+ 	* gcc.dg/pr123569.c: New test.
+ 
+ 2026-07-05  Oleg Endo  <olegendo@gcc.gnu.org>
+ 
+ 	PR target/67459
+ 	PR target/122948
+ 	* gcc.target/sh/pr122948.c: New test.
+ 
  2026-07-03  Avinash Jayakar  <avinashd@linux.ibm.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/gcc/testsuite/g++.dg/cpp2a/typedef2.C gcc-16-20260711/gcc/testsuite/g++.dg/cpp2a/typedef2.C
*** gcc-16-20260704/gcc/testsuite/g++.dg/cpp2a/typedef2.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/g++.dg/cpp2a/typedef2.C	Sat Jul 11 22:32:11 2026
***************
*** 0 ****
--- 1,5 ----
+ // PR c++/126031
+ 
+ typedef struct {
+   struct S;
+ } s;
diff -Nrcpad gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait16.C gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait16.C
*** gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait16.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait16.C	Sat Jul 11 22:32:12 2026
***************
*** 0 ****
--- 1,37 ----
+ // PR c++/125901
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ 
+ #include <meta>
+ 
+ template<typename T>
+ struct S {
+   T t;
+ };
+ 
+ static_assert(is_trivially_copyable_type(^^S<int>));
+ static_assert(!is_trivially_copyable_type(^^std::vector<int>));
+ static_assert(is_standard_layout_type(^^std::vector<int>));
+ static_assert(is_default_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_default_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_copy_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_move_constructible_type(^^std::vector<int>));
+ static_assert(is_copy_assignable_type(^^std::vector<int>));
+ static_assert(!is_implicit_lifetime_type(^^std::vector<int>));
+ static_assert(!has_virtual_destructor(^^std::vector<int>));
+ static_assert(!has_unique_object_representations(^^std::vector<int>));
+ 
+ const std::vector<int> vec{};
+ const S<int> s{};
+ 
+ static_assert(is_trivially_copyable_type(^^S<int>));
+ static_assert(!is_trivially_copyable_type(^^std::vector<int>));
+ static_assert(is_standard_layout_type(^^std::vector<int>));
+ static_assert(is_default_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_default_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_copy_constructible_type(^^std::vector<int>));
+ static_assert(!is_trivially_move_constructible_type(^^std::vector<int>));
+ static_assert(is_copy_assignable_type(^^std::vector<int>));
+ static_assert(!is_implicit_lifetime_type(^^std::vector<int>));
+ static_assert(!has_virtual_destructor(^^std::vector<int>));
+ static_assert(!has_unique_object_representations(^^std::vector<int>));
diff -Nrcpad gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait17.C gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait17.C
*** gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait17.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait17.C	Sat Jul 11 22:32:12 2026
***************
*** 0 ****
--- 1,315 ----
+ // PR c++/125901
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ // [meta.unary.prop]
+ 
+ #include <meta>
+ 
+ template<typename>
+ struct S;
+ union U;
+ 
+ // remove_all_extents_t<T> shall be a complete type or cv void.
+ constexpr bool b0 = is_trivially_copyable_type (^^S<int>);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b1 = is_trivially_copyable_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ constexpr bool b0u = is_trivially_copyable_type (^^U);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b1u = is_trivially_copyable_type (^^U[1]); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_copyable_type (^^void));
+ 
+ constexpr bool b2 = is_standard_layout_type (^^S<int>);	      // { dg-error "preconditions not satisfied" }
+ constexpr bool b3 = is_standard_layout_type (^^S<int>[1]);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b2u = is_standard_layout_type (^^U);	      // { dg-error "preconditions not satisfied" }
+ constexpr bool b3u = is_standard_layout_type (^^U[1]);    // { dg-error "preconditions not satisfied" }
+ static_assert (!is_standard_layout_type (^^void));
+ 
+ constexpr bool b11 = is_structural_type (^^S<int>);	      // { dg-error "preconditions not satisfied" }
+ constexpr bool b12 = is_structural_type (^^S<int>[1]);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b11u = is_structural_type (^^U);	      // { dg-error "preconditions not satisfied" }
+ constexpr bool b12u = is_structural_type (^^U[1]);    // { dg-error "preconditions not satisfied" }
+ static_assert (!is_structural_type (^^void));
+ 
+ // If T is a non-union class type, T shall be a complete type.
+ constexpr bool b4 = is_empty_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_empty_type (^^S<int>[1]));
+ static_assert (!is_empty_type (^^U));
+ static_assert (!is_empty_type (^^U[1]));
+ static_assert (!is_empty_type (^^void));
+ 
+ constexpr bool b5 = is_polymorphic_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_polymorphic_type (^^S<int>[1]));
+ static_assert (!is_polymorphic_type (^^U));
+ static_assert (!is_polymorphic_type (^^U[1]));
+ static_assert (!is_polymorphic_type (^^void));
+ 
+ constexpr bool b6 = is_abstract_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_abstract_type (^^S<int>[1]));
+ static_assert (!is_abstract_type (^^U));
+ static_assert (!is_abstract_type (^^U[1]));
+ static_assert (!is_abstract_type (^^void));
+ 
+ // If T is a class type, T shall be a complete type.
+ constexpr bool b7 = is_final_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b8 = is_final_type (^^U);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_final_type (^^S<int>[1]));
+ static_assert (!is_final_type (^^U[1]));
+ static_assert (!is_final_type (^^void));
+ 
+ // T shall be an array type, a complete type, or cv void.
+ static_assert (is_aggregate_type (^^S<int>[1]));
+ static_assert (is_aggregate_type (^^U[]));
+ static_assert (is_aggregate_type (^^S<int>[]));
+ static_assert (is_aggregate_type (^^U[1]));
+ static_assert (!is_aggregate_type (^^void));
+ constexpr bool b9 = is_aggregate_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b10 = is_aggregate_type (^^U);	// { dg-error "preconditions not satisfied" }
+ 
+ // T and all types in the template parameter pack Args shall be
+ // complete types, cv void, or arrays of unknown bound.
+ constexpr bool b13 = is_constructible_type (^^S<int>, { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b14 = is_constructible_type (^^int, { ^^S<int> }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b13a = is_constructible_type (^^S<int>[1], { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b14a = is_constructible_type (^^int, { ^^S<int>[1] }); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_constructible_type (^^S<int>[], { ^^int }));
+ static_assert (!is_constructible_type (^^int, { ^^S<int>[] }));
+ constexpr bool b15 = is_constructible_type (^^U, { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b16 = is_constructible_type (^^int, { ^^U });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b15a = is_constructible_type (^^U[1], { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b16a = is_constructible_type (^^int, { ^^U[1] });  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_constructible_type (^^U[], { ^^int }));
+ static_assert (!is_constructible_type (^^int, { ^^U[] }));
+ static_assert (!is_constructible_type (^^int, { ^^void }));
+ 
+ // T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b17 = is_default_constructible_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b18 = is_default_constructible_type (^^U);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b19 = is_default_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ constexpr bool b20 = is_default_constructible_type (^^U[1]);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_default_constructible_type (^^S<int>[]));
+ static_assert (!is_default_constructible_type (^^U[]));
+ static_assert (!is_default_constructible_type (^^void));
+ 
+ constexpr bool b21 = is_copy_constructible_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b22 = is_copy_constructible_type (^^U);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b23 = is_copy_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ constexpr bool b24 = is_copy_constructible_type (^^U[1]);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_copy_constructible_type (^^S<int>[]));
+ static_assert (!is_copy_constructible_type (^^U[]));
+ static_assert (!is_copy_constructible_type (^^void));
+ 
+ constexpr bool b25 = is_move_constructible_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b26 = is_move_constructible_type (^^U);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b27 = is_move_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ constexpr bool b28 = is_move_constructible_type (^^U[1]);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_move_constructible_type (^^S<int>[]));
+ static_assert (!is_move_constructible_type (^^U[]));
+ static_assert (!is_move_constructible_type (^^void));
+ 
+ // T and U shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b29 = is_assignable_type (^^S<int>, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b30 = is_assignable_type (^^int, ^^S<int>);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_assignable_type (^^S<int>[], ^^int));
+ static_assert (!is_assignable_type (^^int, ^^S<int>[]));
+ static_assert (!is_assignable_type (^^void, ^^int));
+ static_assert (!is_assignable_type (^^int, ^^void));
+ 
+ // T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b31 = is_copy_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b31u = is_copy_assignable_type (^^U);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_copy_assignable_type (^^S<int>[]));
+ static_assert (!is_copy_assignable_type (^^U[]));
+ static_assert (!is_copy_assignable_type (^^void));
+ 
+ constexpr bool b32 = is_move_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b32u = is_move_assignable_type (^^U);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_move_assignable_type (^^S<int>[]));
+ static_assert (!is_move_assignable_type (^^U[]));
+ static_assert (!is_move_assignable_type (^^void));
+ 
+ // T and U shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b33 = is_swappable_with_type (^^S<int>, ^^int);	// { dg-message "required from here" }
+ constexpr bool b34 = is_swappable_with_type (^^int, ^^S<int>);	// { dg-message "required from here" }
+ constexpr bool b33u = is_swappable_with_type (^^U, ^^int);	// { dg-message "required from here" }
+ constexpr bool b34u = is_swappable_with_type (^^int, ^^U);	// { dg-message "required from here" }
+ // { dg-error "static assertion failed" "" { target *-*-* } 0 }
+ static_assert (!is_swappable_with_type (^^S<int>[], ^^int));
+ static_assert (!is_swappable_with_type (^^int, ^^S<int>[]));
+ static_assert (!is_swappable_with_type (^^U[], ^^int));
+ static_assert (!is_swappable_with_type (^^int, ^^U[]));
+ static_assert (!is_swappable_with_type (^^void, ^^int));
+ static_assert (!is_swappable_with_type (^^int, ^^void));
+ 
+ constexpr bool b33n = is_nothrow_swappable_with_type (^^S<int>, ^^int);	// { dg-message "required from here" }
+ constexpr bool b34n = is_nothrow_swappable_with_type (^^int, ^^S<int>);	// { dg-message "required from here" }
+ static_assert (!is_nothrow_swappable_with_type (^^S<int>[], ^^int));
+ static_assert (!is_nothrow_swappable_with_type (^^int, ^^S<int>[]));
+ static_assert (!is_nothrow_swappable_with_type (^^void, ^^int));
+ static_assert (!is_nothrow_swappable_with_type (^^int, ^^void));
+ 
+ struct W;
+ constexpr bool b35 = is_swappable_type (^^W);	// { dg-message "required from here" }
+ static_assert (!is_swappable_type (^^S<int>[]));
+ static_assert (!is_swappable_type (^^void));
+ constexpr bool b35n = is_nothrow_swappable_type (^^W);	// { dg-message "required from here" }
+ static_assert (!is_nothrow_swappable_type (^^S<int>[]));
+ static_assert (!is_nothrow_swappable_type (^^void));
+ // { dg-error "invalid use of incomplete type .struct W." "" { target *-*-* } 0 }
+ 
+ //T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b36 = is_destructible_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b36u = is_destructible_type (^^U); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_destructible_type (^^S<int>[]));
+ static_assert (!is_destructible_type (^^void));
+ 
+ constexpr bool b36n = is_nothrow_destructible_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b36nu = is_nothrow_destructible_type (^^U); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_destructible_type (^^S<int>[]));
+ static_assert (!is_nothrow_destructible_type (^^U[]));
+ static_assert (!is_nothrow_destructible_type (^^void));
+ 
+ // T and all types in the template parameter pack Args shall be complete
+ // types, cv void, or arrays of unknown bound.
+ constexpr bool b37 = is_trivially_constructible_type (^^S<int>, {});  // { dg-error "preconditions not satisfied" }
+ constexpr bool b38 = is_trivially_constructible_type (^^int, { ^^S<int> });  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_constructible_type (^^S<int>[], {}));
+ static_assert (!is_trivially_constructible_type (^^int, { ^^S<int>[] }));
+ static_assert (!is_trivially_constructible_type (^^void, {}));
+ static_assert (!is_trivially_constructible_type (^^int, { ^^void }));
+ 
+ // T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b39 = is_trivially_default_constructible_type (^^S<int>);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b39u = is_trivially_default_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_default_constructible_type (^^S<int>[]));
+ static_assert (!is_trivially_default_constructible_type (^^U[]));
+ static_assert (!is_trivially_default_constructible_type (^^void));
+ 
+ constexpr bool b40 = is_trivially_copy_constructible_type (^^S<int>);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b40u = is_trivially_copy_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_copy_constructible_type (^^S<int>[]));
+ static_assert (!is_trivially_copy_constructible_type (^^U[]));
+ static_assert (!is_trivially_copy_constructible_type (^^void));
+ 
+ constexpr bool b41 = is_trivially_move_constructible_type (^^S<int>);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b41u = is_trivially_move_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_move_constructible_type (^^S<int>[]));
+ static_assert (!is_trivially_move_constructible_type (^^U[]));
+ static_assert (!is_trivially_move_constructible_type (^^void));
+ 
+ // T and U shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b42 = is_trivially_assignable_type (^^S<int>, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b43 = is_trivially_assignable_type (^^int, ^^S<int>);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_assignable_type (^^S<int>[], ^^int));
+ static_assert (!is_trivially_assignable_type (^^int, ^^S<int>[]));
+ static_assert (!is_trivially_assignable_type (^^void, ^^int));
+ static_assert (!is_trivially_assignable_type (^^int, ^^void));
+ 
+ // T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b44 = is_trivially_copy_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b44u = is_trivially_copy_assignable_type (^^U);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_trivially_copy_assignable_type (^^S<int>[]));
+ static_assert (!is_trivially_copy_assignable_type (^^U[]));
+ static_assert (!is_trivially_copy_assignable_type (^^void));
+ 
+ constexpr bool b45 = is_trivially_move_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b45u = is_trivially_move_assignable_type (^^U);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_trivially_move_assignable_type (^^S<int>[]));
+ static_assert (!is_trivially_move_assignable_type (^^U[]));
+ static_assert (!is_trivially_move_assignable_type (^^void));
+ 
+ constexpr bool b46 = is_trivially_destructible_type (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b46u = is_trivially_destructible_type (^^U);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_trivially_destructible_type (^^S<int>[]));
+ static_assert (!is_trivially_destructible_type (^^U[]));
+ static_assert (!is_trivially_destructible_type (^^void));
+ 
+ // T and all types in the template parameter pack Args shall be complete
+ // types, cv void, or arrays of unknown bound.
+ constexpr bool b47 = is_nothrow_constructible_type (^^S<int>, { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b48 = is_nothrow_constructible_type (^^int, { ^^S<int> }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b49 = is_nothrow_constructible_type (^^S<int>[1], { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b50 = is_nothrow_constructible_type (^^int, { ^^S<int>[1] }); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_constructible_type (^^S<int>[], { ^^int }));
+ static_assert (!is_nothrow_constructible_type (^^int, { ^^S<int>[] }));
+ constexpr bool b51 = is_nothrow_constructible_type (^^U, { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b52 = is_nothrow_constructible_type (^^int, { ^^U });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b53 = is_nothrow_constructible_type (^^U[1], { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b54 = is_nothrow_constructible_type (^^int, { ^^U[1] });  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_constructible_type (^^U[], { ^^int }));
+ static_assert (!is_nothrow_constructible_type (^^int, { ^^U[] }));
+ static_assert (!is_nothrow_constructible_type (^^int, { ^^void }));
+ 
+ // T shall be a complete type, cv void, or an array of unknown bound.
+ constexpr bool b55 = is_nothrow_default_constructible_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b56 = is_nothrow_default_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_default_constructible_type (^^S<int>[]));
+ constexpr bool b57 = is_nothrow_default_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b58 = is_nothrow_default_constructible_type (^^U[1]);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_default_constructible_type (^^U[]));
+ static_assert (!is_nothrow_default_constructible_type (^^void));
+ 
+ constexpr bool b59 = is_nothrow_copy_constructible_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b60 = is_nothrow_copy_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_copy_constructible_type (^^S<int>[]));
+ constexpr bool b61 = is_nothrow_copy_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b62 = is_nothrow_copy_constructible_type (^^U[1]);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_copy_constructible_type (^^U[]));
+ static_assert (!is_nothrow_copy_constructible_type (^^void));
+ 
+ constexpr bool b63 = is_nothrow_move_constructible_type (^^S<int>); // { dg-error "preconditions not satisfied" }
+ constexpr bool b64 = is_nothrow_move_constructible_type (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_move_constructible_type (^^S<int>[]));
+ constexpr bool b65 = is_nothrow_move_constructible_type (^^U);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b66 = is_nothrow_move_constructible_type (^^U[1]);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_move_constructible_type (^^U[]));
+ static_assert (!is_nothrow_move_constructible_type (^^void));
+ 
+ constexpr bool b67 = is_nothrow_assignable_type (^^S<int>, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b68 = is_nothrow_assignable_type (^^int, ^^S<int>);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_assignable_type (^^S<int>[], ^^int));
+ static_assert (!is_nothrow_assignable_type (^^int, ^^S<int>[]));
+ static_assert (!is_nothrow_assignable_type (^^void, ^^int));
+ static_assert (!is_nothrow_assignable_type (^^int, ^^void));
+ 
+ constexpr bool b69 = is_nothrow_copy_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b70 = is_nothrow_copy_assignable_type (^^U);	  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_nothrow_copy_assignable_type (^^S<int>[]));
+ static_assert (!is_nothrow_copy_assignable_type (^^void));
+ 
+ constexpr bool b71 = is_nothrow_move_assignable_type (^^S<int>);  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ constexpr bool b72 = is_nothrow_move_assignable_type (^^U);	  // { dg-error "preconditions not satisfied" "PR126073" { xfail *-*-* } }
+ static_assert (!is_nothrow_move_assignable_type (^^S<int>[]));
+ static_assert (!is_nothrow_move_assignable_type (^^void));
+ 
+ // T shall be an array type, a complete type, or cv void.
+ constexpr bool b73 = is_implicit_lifetime_type (^^S<int>);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b74 = is_implicit_lifetime_type (^^U);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_implicit_lifetime_type (^^S<int>[1]));
+ static_assert (!is_implicit_lifetime_type (^^void));
+ 
+ // If T is a non-union class type, T shall be a complete type.
+ constexpr bool b75 = has_virtual_destructor (^^S<int>);	// { dg-error "preconditions not satisfied" }
+ static_assert (!has_virtual_destructor (^^S<int>[1]));
+ static_assert (!has_virtual_destructor (^^U));
+ static_assert (!has_virtual_destructor (^^U[1]));
+ static_assert (!has_virtual_destructor (^^void));
+ 
+ // remove_all_extents_t<T> shall be a complete type or cv void.
+ constexpr bool b76 = has_unique_object_representations (^^S<int>);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b77 = has_unique_object_representations (^^S<int>[1]); // { dg-error "preconditions not satisfied" }
+ constexpr bool b78 = has_unique_object_representations (^^U);    // { dg-error "preconditions not satisfied" }
+ constexpr bool b79 = has_unique_object_representations (^^U[1]); // { dg-error "preconditions not satisfied" }
+ static_assert (!has_unique_object_representations (^^void));
+ 
+ // T and U shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b80 = reference_constructs_from_temporary (^^S<int>, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b81 = reference_constructs_from_temporary (^^int, ^^S<int>);  // { dg-error "preconditions not satisfied" }
+ static_assert (!reference_constructs_from_temporary (^^S<int>[], ^^int));
+ static_assert (!reference_constructs_from_temporary (^^int, ^^S<int>[]));
+ static_assert (!reference_constructs_from_temporary (^^void, ^^int));
+ static_assert (!reference_constructs_from_temporary (^^int, ^^void));
+ 
+ constexpr bool b82 = reference_converts_from_temporary (^^S<int>, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b83 = reference_converts_from_temporary (^^int, ^^S<int>);  // { dg-error "preconditions not satisfied" }
+ static_assert (!reference_converts_from_temporary (^^S<int>[], ^^int));
+ static_assert (!reference_converts_from_temporary (^^int, ^^S<int>[]));
+ static_assert (!reference_converts_from_temporary (^^void, ^^int));
+ static_assert (!reference_converts_from_temporary (^^int, ^^void));
diff -Nrcpad gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait18.C gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait18.C
*** gcc-16-20260704/gcc/testsuite/g++.dg/reflect/type_trait18.C	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/g++.dg/reflect/type_trait18.C	Sat Jul 11 22:32:12 2026
***************
*** 0 ****
--- 1,126 ----
+ // PR c++/125901
+ // { dg-do compile { target c++26 } }
+ // { dg-additional-options "-freflection" }
+ // [meta.rel]
+ 
+ #include <meta>
+ 
+ struct S;
+ union U;
+ struct B {};
+ 
+ // If Base and Derived are non-union class types and are not (possibly
+ // cv-qualified versions of) the same type, Derived shall be a complete type.
+ constexpr bool b1 = is_base_of_type (^^B, ^^S);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b2 = is_base_of_type (^^B, ^^const S);	// { dg-error "preconditions not satisfied" }
+ static_assert (is_base_of_type (^^S, ^^S));
+ static_assert (is_base_of_type (^^S, ^^const S));
+ static_assert (!is_base_of_type (^^B, ^^U));
+ 
+ constexpr bool b15 = is_pointer_interconvertible_base_of_type (^^B, ^^S);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b16 = is_pointer_interconvertible_base_of_type (^^B, ^^const S);	// { dg-error "preconditions not satisfied" }
+ static_assert (is_pointer_interconvertible_base_of_type (^^S, ^^S));
+ static_assert (is_pointer_interconvertible_base_of_type (^^S, ^^const S));
+ static_assert (!is_pointer_interconvertible_base_of_type (^^B, ^^U));
+ 
+ // If Base and Derived are non-union class types, Derived shall be a complete type.
+ constexpr bool b3 = is_virtual_base_of_type (^^B, ^^S);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b4 = is_virtual_base_of_type (^^B, ^^const S);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b5 = is_virtual_base_of_type (^^S, ^^S);	// { dg-error "preconditions not satisfied" }
+ constexpr bool b6 = is_virtual_base_of_type (^^S, ^^const S);	// { dg-error "preconditions not satisfied" }
+ static_assert (!is_virtual_base_of_type (^^B, ^^U));
+ static_assert (!is_virtual_base_of_type (^^U, ^^U));
+ 
+ // From and To shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b7 = is_convertible_type (^^S, ^^B);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b8 = is_convertible_type (^^B, ^^S);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b9 = is_convertible_type (^^S, ^^B[]);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b10 = is_convertible_type (^^B[], ^^S);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b11 = is_convertible_type (^^S, ^^void);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b12 = is_convertible_type (^^void, ^^S);   // { dg-error "preconditions not satisfied" }
+ static_assert (!is_convertible_type (^^S[], ^^B));
+ static_assert (!is_convertible_type (^^B, ^^U[]));
+ 
+ constexpr bool b7n = is_nothrow_convertible_type (^^S, ^^B);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b8n = is_nothrow_convertible_type (^^B, ^^S);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b9n = is_nothrow_convertible_type (^^S, ^^B[]);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b10n = is_nothrow_convertible_type (^^B[], ^^S);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b11n = is_nothrow_convertible_type (^^S, ^^void);   // { dg-error "preconditions not satisfied" }
+ constexpr bool b12n = is_nothrow_convertible_type (^^void, ^^S);   // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_convertible_type (^^S[], ^^B));
+ static_assert (!is_nothrow_convertible_type (^^B, ^^U[]));
+ 
+ // T and U shall be complete types, cv void, or arrays of unknown bound.
+ constexpr bool b13 = is_layout_compatible_type (^^S, ^^int);  // { dg-error "preconditions not satisfied" }
+ constexpr bool b14 = is_layout_compatible_type (^^int, ^^S);  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_layout_compatible_type (^^S[], ^^int));
+ static_assert (!is_layout_compatible_type (^^int, ^^S[]));
+ static_assert (!is_layout_compatible_type (^^void, ^^int));
+ static_assert (!is_layout_compatible_type (^^int, ^^void));
+ 
+ // Fn and all types in the template parameter pack ArgTypes shall be
+ // complete types, cv void, or arrays of unknown bound.
+ constexpr bool b17 = is_invocable_type (^^S, { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b18 = is_invocable_type (^^int, { ^^S }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b19 = is_invocable_type (^^S[1], { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b20 = is_invocable_type (^^int, { ^^S[1] }); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_invocable_type (^^S[], { ^^int }));
+ static_assert (!is_invocable_type (^^int, { ^^S[] }));
+ constexpr bool b21 = is_invocable_type (^^U, { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b22 = is_invocable_type (^^int, { ^^U });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b23 = is_invocable_type (^^U[1], { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b24 = is_invocable_type (^^int, { ^^U[1] });  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_invocable_type (^^U[], { ^^int }));
+ static_assert (!is_invocable_type (^^int, { ^^U[] }));
+ static_assert (!is_invocable_type (^^int, { ^^void }));
+ 
+ constexpr bool b17n = is_nothrow_invocable_type (^^S, { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b18n = is_nothrow_invocable_type (^^int, { ^^S }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b19n = is_nothrow_invocable_type (^^S[1], { ^^int }); // { dg-error "preconditions not satisfied" }
+ constexpr bool b20n = is_nothrow_invocable_type (^^int, { ^^S[1] }); // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_invocable_type (^^S[], { ^^int }));
+ static_assert (!is_nothrow_invocable_type (^^int, { ^^S[] }));
+ constexpr bool b21n = is_nothrow_invocable_type (^^U, { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b22n = is_nothrow_invocable_type (^^int, { ^^U });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b23n = is_nothrow_invocable_type (^^U[1], { ^^int });  // { dg-error "preconditions not satisfied" }
+ constexpr bool b24n = is_nothrow_invocable_type (^^int, { ^^U[1] });  // { dg-error "preconditions not satisfied" }
+ static_assert (!is_nothrow_invocable_type (^^U[], { ^^int }));
+ static_assert (!is_nothrow_invocable_type (^^int, { ^^U[] }));
+ static_assert (!is_nothrow_invocable_type (^^int, { ^^void }));
+ 
+ // Fn, R, and all types in the template parameter pack ArgTypes shall be
+ // complete types, cv void, or arrays of unknown bound.
+ constexpr bool b25 = is_invocable_r_type (^^S, ^^int, { ^^int }); // { dg-message "required from here" }
+ constexpr bool b26 = is_invocable_r_type (^^int, ^^S, { ^^S });	  // { dg-message "required from here" }
+ constexpr bool b27 = is_invocable_r_type (^^S[1], ^^int, { ^^int }); // { dg-message "required from here" }
+ constexpr bool b28 = is_invocable_r_type (^^int, ^^int, { ^^S[1] }); // { dg-message "required from here" }
+ constexpr bool b29 = is_invocable_r_type (^^int, ^^S, { ^^int });   // { dg-message "required from here" }
+ static_assert (!is_invocable_r_type (^^S[], ^^int, { ^^int }));
+ static_assert (!is_invocable_r_type (^^int, ^^int, { ^^S[] }));
+ constexpr bool b30 = is_invocable_r_type (^^U, ^^int, { ^^int });  // { dg-message "required from here" }
+ constexpr bool b31 = is_invocable_r_type (^^int, ^^int, { ^^U });  // { dg-message "required from here" }
+ constexpr bool b32 = is_invocable_r_type (^^U[1], ^^int, { ^^int });  // { dg-message "required from here" }
+ constexpr bool b33 = is_invocable_r_type (^^int, ^^int, { ^^U[1] });  // { dg-message "required from here" }
+ constexpr bool b34 = is_invocable_r_type (^^int, ^^U, { ^^int });     // { dg-message "required from here" }
+ static_assert (!is_invocable_r_type (^^U[], ^^int, { ^^int }));
+ static_assert (!is_invocable_r_type (^^int, ^^int, { ^^U[] }));
+ static_assert (!is_invocable_r_type (^^int, ^^U[], { ^^int }));
+ static_assert (!is_invocable_r_type (^^int, ^^int, { ^^void }));
+ 
+ constexpr bool b25n = is_nothrow_invocable_r_type (^^S, ^^int, { ^^int }); // { dg-message "required from here" }
+ constexpr bool b26n = is_nothrow_invocable_r_type (^^int, ^^S, { ^^S });	  // { dg-message "required from here" }
+ constexpr bool b27n = is_nothrow_invocable_r_type (^^S[1], ^^int, { ^^int }); // { dg-message "required from here" }
+ constexpr bool b28n = is_nothrow_invocable_r_type (^^int, ^^int, { ^^S[1] }); // { dg-message "required from here" }
+ constexpr bool b29n = is_nothrow_invocable_r_type (^^int, ^^S, { ^^int });   // { dg-message "required from here" }
+ static_assert (!is_nothrow_invocable_r_type (^^S[], ^^int, { ^^int }));
+ static_assert (!is_nothrow_invocable_r_type (^^int, ^^int, { ^^S[] }));
+ constexpr bool b30n = is_nothrow_invocable_r_type (^^U, ^^int, { ^^int });  // { dg-message "required from here" }
+ constexpr bool b31n = is_nothrow_invocable_r_type (^^int, ^^int, { ^^U });  // { dg-message "required from here" }
+ constexpr bool b32n = is_nothrow_invocable_r_type (^^U[1], ^^int, { ^^int });  // { dg-message "required from here" }
+ constexpr bool b33n = is_nothrow_invocable_r_type (^^int, ^^int, { ^^U[1] });  // { dg-message "required from here" }
+ constexpr bool b34n = is_nothrow_invocable_r_type (^^int, ^^U, { ^^int });     // { dg-message "required from here" }
+ static_assert (!is_nothrow_invocable_r_type (^^U[], ^^int, { ^^int }));
+ static_assert (!is_nothrow_invocable_r_type (^^int, ^^int, { ^^U[] }));
+ static_assert (!is_nothrow_invocable_r_type (^^int, ^^U[], { ^^int }));
+ static_assert (!is_nothrow_invocable_r_type (^^int, ^^int, { ^^void }));
+ // { dg-error "static assertion failed" "" { target *-*-* } 0 }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/counted-by-unary.c gcc-16-20260711/gcc/testsuite/gcc.dg/counted-by-unary.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/counted-by-unary.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.dg/counted-by-unary.c	Sat Jul 11 22:32:13 2026
***************
*** 0 ****
--- 1,32 ----
+ /* Verify that unary operators that rvalue-convert a counted_by-annotated
+    pointer access do not ICE.  The original PR123569 fix suppressed the
+    .ACCESS_WITH_SIZE wrapper creation for ++/-- (which keep an lvalue);
+    the rvalue-consuming ops (!, -, +) still receive the wrapper and must
+    strip it in build_unary_op.  */
+ /* { dg-do run } */
+ /* { dg-options "-std=c99" } */
+ 
+ struct s {
+     int n;
+     char *p __attribute__((__counted_by__(n)));
+ };
+ 
+ int test_not (struct s *o)    { return !o->p; }
+ __INTPTR_TYPE__ test_neg (struct s *o)   { return -(__INTPTR_TYPE__)o->p; }
+ __INTPTR_TYPE__ test_plus (struct s *o)  { return +(__INTPTR_TYPE__)o->p; }
+ 
+ extern void abort (void);
+ 
+ int main (void) {
+     char buf[4] = { 0 };
+     struct s s = { .n = 4, .p = buf };
+     if (test_not (&s) != 0)  abort ();    /* p is non-null */
+ 
+     struct s e = { .n = 0, .p = (void*)0 };
+     if (test_not (&e) != 1)  abort ();    /* p is null */
+ 
+     /* test_neg / test_plus must just compile and run without ICE.  */
+     (void) test_neg (&s);
+     (void) test_plus (&s);
+     return 0;
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/ipa/pr124128.c gcc-16-20260711/gcc/testsuite/gcc.dg/ipa/pr124128.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/ipa/pr124128.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.dg/ipa/pr124128.c	Sat Jul 11 22:32:14 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fno-early-inlining" } */
+ 
+ typedef int blasint;
+ void blas_level1_thread(long);
+ void cblas_sscal(blasint, float, float, blasint incx) {
+   blas_level1_thread(incx);
+ }
+ blasint c_api_check_saxpby_n;
+ float c_api_check_saxpby_beta;
+ long labs(long);
+ static void c_api_check_saxpby(blasint incy) {
+   blasint incy_abs = labs(incy);
+   cblas_sscal(c_api_check_saxpby_n, c_api_check_saxpby_beta, 0, incy_abs);
+ }
+ void __ctest_saxpby_c_api_inc_x_2_inc_y_1_N_100_run() {
+   c_api_check_saxpby(1);
+   c_api_check_saxpby(2);
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/pr123569.c gcc-16-20260711/gcc/testsuite/gcc.dg/pr123569.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/pr123569.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.dg/pr123569.c	Sat Jul 11 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-std=c99" } */
+ 
+ struct buffer {
+     int len;
+     char * ptr __attribute((counted_by(len)));
+ };
+ int ltrim(struct buffer * const buf) {
+     while (buf->len > 0 && *buf->ptr == ' ') {
+         buf->len--;
+         buf->ptr++;
+     }
+     return buf->len;
+ }
+ int main() {
+     struct buffer buf = {.ptr = " 123", .len = 4};
+     int ret = ltrim(&buf);
+     if (3 != ret)
+       __builtin_abort();
+     return 0;
+ }
+ 
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/pr125072.c gcc-16-20260711/gcc/testsuite/gcc.dg/pr125072.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/pr125072.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.dg/pr125072.c	Sat Jul 11 22:32:14 2026
***************
*** 0 ****
--- 1,22 ----
+ /* { dg-do run } */
+ /* { dg-options "-fsanitize=alignment,bounds -fsanitize-trap" } */
+ 
+ 
+ struct sp {
+   unsigned int c;
+   int *a __attribute__ ((counted_by (c)));
+ };
+ 
+ int
+ main ()
+ {
+   struct sp y;
+   y.a = __builtin_malloc (30 * sizeof (int));
+   y.c = 30;
+   y.a[0] = 4;
+   y.a[29] = 77;
+   (void) &y;
+ 
+   return 0;
+ }
+ 
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c gcc-16-20260711/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Sat Jul  4 22:32:14 2026
--- gcc-16-20260711/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230-union.c	Sat Jul 11 22:32:14 2026
*************** void __attribute__((__noinline__)) setup
*** 32,43 ****
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
    p_array_nested_annotated->b = annotated_count;
  
    return;
--- 32,43 ----
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc ((annotated_count + 2) * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * (annotated_count + 2));
    p_array_nested_annotated->b = annotated_count;
  
    return;
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c gcc-16-20260711/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c
*** gcc-16-20260704/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Sat Jul  4 22:32:14 2026
--- gcc-16-20260711/gcc/testsuite/gcc.dg/ubsan/pointer-counted-by-bounds-124230.c	Sat Jul 11 22:32:14 2026
*************** void __attribute__((__noinline__)) setup
*** 30,41 ****
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc (annotated_count * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * annotated_count);
    p_array_nested_annotated->b = annotated_count;
  
    return;
--- 30,41 ----
  {
    p_array_annotated
      = (struct annotated *) malloc (sizeof (struct annotated));
!   p_array_annotated->c = (PTR_TYPE *) malloc ((2 + annotated_count) * sizeof (PTR_TYPE));
    p_array_annotated->b = annotated_count;
  
    p_array_nested_annotated
      = (struct nested_annotated *) malloc (sizeof (struct nested_annotated));
!   p_array_nested_annotated->c = (PTR_TYPE *) malloc (sizeof (PTR_TYPE) * (2 + annotated_count));
    p_array_nested_annotated->b = annotated_count;
  
    return;
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/aarch64/pr125597.c gcc-16-20260711/gcc/testsuite/gcc.target/aarch64/pr125597.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/aarch64/pr125597.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/aarch64/pr125597.c	Sat Jul 11 22:32:14 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -mcpu=c1-ultra -mautovec-preference=sve-only" } */
+ 
+ _BitInt(256) b;
+ 
+ void
+ foo()
+ {
+   for (;;)
+     b ^= 0x100000000020000000000000000000000000000000000wb;
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c gcc-16-20260711/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c	Sat Jul  4 22:32:15 2026
--- gcc-16-20260711/gcc/testsuite/gcc.target/arm/tls-disable-literal-pool.c	Sat Jul 11 22:32:15 2026
*************** __thread int x = 0;
*** 10,15 ****
  int
  bar ()
  {
!   return x; /* { dg-message "sorry, unimplemented: accessing thread-local storage is not currently supported with -mpure-code or -mslow-flash-data" } */
  }
  
--- 10,15 ----
  int
  bar ()
  {
!   return x; /* { dg-message "sorry, unimplemented: accessing thread-local storage is not currently supported with '-mpure-code' or '-mslow-flash-data'" } */
  }
  
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/i386/pr126098.c gcc-16-20260711/gcc/testsuite/gcc.target/i386/pr126098.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/i386/pr126098.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/i386/pr126098.c	Sat Jul 11 22:32:15 2026
***************
*** 0 ****
--- 1,16 ----
+ /* PR target/126098 */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx512vnni -O3" } */
+ 
+ /* AVX512VNNI does not imply AVX512BW, so the byte (V64QI) dot-product must
+    not be advertised as available: emulating it needs vpmovsxbw on 512-bit
+    vectors, which requires AVX512BW.  Advertising it led to an unrecognizable
+    (sign_extend:V32HI (reg:V32QI)) insn and an ICE in extract_insn.  */
+ 
+ char *fn_c, *fn_d;
+ int fn() {
+   int res = 0;
+   for (int i = 0; i < 64; ++i)
+     res += fn_c[i] * fn_d[i];
+   return res;
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/i386/pr126148.c gcc-16-20260711/gcc/testsuite/gcc.target/i386/pr126148.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/i386/pr126148.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/i386/pr126148.c	Sat Jul 11 22:32:15 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -ffast-math -mapxf -mno-80387 -mfpmath=387" } */
+ 
+ int foo (int a, double b) {
+   if (a || b)
+     return 1;
+   return 0;
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/or1k/pr126081.c gcc-16-20260711/gcc/testsuite/gcc.target/or1k/pr126081.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/or1k/pr126081.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/or1k/pr126081.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,8 ----
+ int option_mask32;
+ void xsocket(int);
+ enum { OPT_u = 1 << 3 };
+ 
+ void nc_main() {
+   int x = option_mask32 & OPT_u ? 2 : 1;
+   xsocket(x);
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-1.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-1.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-1.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,64 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #include <altivec.h>
+ 
+ typedef vector signed int   v4si_t;
+ typedef vector signed short v8hi_t;
+ typedef vector signed long long v2di_t;
+ 
+ v4si_t int_add (v4si_t x, v4si_t y)
+ {
+   return vec_add (x, y);            /* xvadduwm */
+ }
+ 
+ v4si_t int_sub (v4si_t x, v4si_t y)
+ {
+   return vec_sub (x, y);            /* xvsubuwm */
+ }
+ 
+ v4si_t int_mul (v4si_t x, v4si_t y)
+ {
+   return vec_mul (x, y);            /* xvmuluwm */
+ }
+ 
+ v4si_t int_mulhi (v4si_t x, v4si_t y)
+ {
+   return vec_mulh (x, y);           /* xvmulhsw */
+ }
+ 
+ v8hi_t short_add (v8hi_t x, v8hi_t y)
+ {
+   return vec_add (x, y);            /* xvadduhm */
+ }
+ 
+ v8hi_t short_sub (v8hi_t x, v8hi_t y)
+ {
+   return vec_sub (x, y);            /* xvsubuhm */
+ }
+ 
+ v8hi_t short_mul (v8hi_t x, v8hi_t y)
+ {
+   return vec_mul (x, y);            /* xvmuluhm */
+ }
+ 
+ v8hi_t short_mulhi (v8hi_t x, v8hi_t y)
+ {
+   return vec_mulh (x, y);            /* xvmulhsh */
+ }
+ 
+ v2di_t longlong_mulhi (v2di_t x, v2di_t y)
+ {
+   return vec_mulh (x, y);            /* vmulhsd */
+ }
+ 
+ /* { dg-final { scan-assembler-times "xvadduwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvsubuwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmuluwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmulhsw" 1 } } */
+ /* { dg-final { scan-assembler-times "xvadduhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvsubuhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmuluhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmulhsh" 1 } } */
+ /* { dg-final { scan-assembler-times "vmulhsd" 1 } } */
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-2.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-2.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-2.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,64 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #include <altivec.h>
+ 
+ typedef vector unsigned int   v4si_t;
+ typedef vector unsigned short v8hi_t;
+ typedef vector unsigned long long v2di_t;
+ 
+ v4si_t uint_add (v4si_t x, v4si_t y)
+ {
+   return vec_add (x, y);            /* xvadduwm */
+ }
+ 
+ v4si_t uint_sub (v4si_t x, v4si_t y)
+ {
+   return vec_sub (x, y);            /* xvsubuwm */
+ }
+ 
+ v4si_t uint_mul (v4si_t x, v4si_t y)
+ {
+   return vec_mul (x, y);            /* xvmuluwm */
+ }
+ 
+ v4si_t uint_mulhi (v4si_t x, v4si_t y)
+ {
+   return vec_mulh (x, y);           /* xvmulhuw */
+ }
+ 
+ v8hi_t ushort_add (v8hi_t x, v8hi_t y)
+ {
+   return vec_add (x, y);            /* xvadduhm */
+ }
+ 
+ v8hi_t ushort_sub (v8hi_t x, v8hi_t y)
+ {
+   return vec_sub (x, y);            /* xvsubuhm */
+ }
+ 
+ v8hi_t ushort_mul (v8hi_t x, v8hi_t y)
+ {
+   return vec_mul (x, y);            /* xvmuluhm */
+ }
+ 
+ v8hi_t ushort_mulhi (v8hi_t x, v8hi_t y)
+ {
+   return vec_mulh (x, y);            /* xvmulhuh */
+ }
+ 
+ v2di_t ulonglong_mulhi (v2di_t x, v2di_t y)
+ {
+   return vec_mulh (x, y);            /* vmulhud */
+ }
+ 
+ /* { dg-final { scan-assembler-times "xvadduwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvsubuwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmuluwm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmulhuw" 1 } } */
+ /* { dg-final { scan-assembler-times "xvadduhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvsubuhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmuluhm" 1 } } */
+ /* { dg-final { scan-assembler-times "xvmulhuh" 1 } } */
+ /* { dg-final { scan-assembler-times "vmulhud" 1 } } */
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-3.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-3.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-3.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-3.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,56 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2 -mno-vsx" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ /* The -mno-vsx option turns off generation of VSX instructions (such as
+    xvadduwm) in favor of the traditional Altivec instructions (such as
+    vadduwm).  */
+ 
+ #include <altivec.h>
+ 
+ typedef vector signed int   vsi;
+ typedef vector signed short vss;
+ typedef vector unsigned int   vui;
+ 
+ vsi int_add (vsi x, vsi y)
+ {
+   return vec_add (x, y);            /* vadduwm */
+ }
+ 
+ vsi int_sub (vsi x, vsi y)
+ {
+   return vec_sub (x, y);            /* vsubuwm */
+ }
+ 
+ vsi int_mulhi (vsi x, vsi y)
+ {
+   return vec_mulh (x, y);           /* vmulhsw */
+ }
+ 
+ vui uint_mulh (vui x, vui y)
+ {
+   return vec_mulh (x, y);           /* vmulhuw */
+ }
+ 
+ vss short_add (vss x, vss y)
+ {
+   return vec_add (x, y);            /* vadduhm */
+ }
+ 
+ vss short_sub (vss x, vss y)
+ {
+   return vec_sub (x, y);            /* vsubuhm */
+ }
+ 
+ vss short_mul (vss x, vss y)
+ {
+   return vec_mul (x, y);            /* vmladduhm */
+ }
+ 
+ /* { dg-final { scan-assembler-times "vadduwm" 1 } } */
+ /* { dg-final { scan-assembler-times "vsubuwm" 1 } } */
+ /* { dg-final { scan-assembler-times "vmulhsw" 1 } } */
+ /* { dg-final { scan-assembler-times "vmulhuw" 1 } } */
+ /* { dg-final { scan-assembler-times "vadduhm" 1 } } */
+ /* { dg-final { scan-assembler-times "vsubuhm" 1 } } */
+ /* { dg-final { scan-assembler-times "vmladduhm" 1 } } */
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-4.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-4.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-4.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_builtin-4.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,20 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2 -mno-vsx" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #include <altivec.h>
+ 
+ typedef vector signed short   vss;
+ typedef vector unsigned short vus;
+ 
+ __attribute__((noinline))
+ vss short_mulhi (vss x, vss y)
+ {
+   return vec_mulh (x, y);  /* { dg-error "'__builtin_vsx_xvmulhsh' requires the '-mcpu=future' and '-mvsx' options" } */
+ }
+ 
+ __attribute__((noinline))
+ vus ushort_mulhi (vus x, vus y)
+ {
+   return vec_mulh (x, y);  /* { dg-error "'__builtin_vsx_xvmulhuh' requires the '-mcpu=future' and '-mvsx' options" } */
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_1.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_1.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_1.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_1.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,77 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #include <altivec.h>
+ 
+ typedef vector signed int      vsi;
+ typedef vector unsigned int    vui;
+ typedef vector signed short    vss;
+ typedef vector unsigned short  vus;
+ 
+ vsi int_add (vsi x, vsi y)
+ {
+   return x + y;            /* xvadduwm */
+ }
+ 
+ vsi int_sub (vsi x, vsi y)
+ {
+   return x - y;            /* xvsubuwm */
+ }
+ 
+ vsi int_mul (vsi x, vsi y)
+ {
+   return x * y;            /* xvmuluwm */
+ }
+ 
+ vui uint_add (vui x, vui y)
+ {
+   return x + y;            /* xvadduwm */
+ }
+ 
+ vui uint_sub (vui x, vui y)
+ {
+   return x - y;            /* xvsubuwm */
+ }
+ 
+ vui uint_mul (vui x, vui y)
+ {
+   return x * y;            /* xvmuluwm */
+ }
+ 
+ vss short_add (vss x, vss y)
+ {
+   return x + y;            /* xvadduhm */
+ }
+ 
+ vss short_sub (vss x, vss y)
+ {
+   return x - y;            /* xvsubuhm */
+ }
+ 
+ vss short_mul (vss x, vss y)
+ {
+   return x * y;            /* xvmuluhm */
+ }
+ 
+ vus ushort_add (vus x, vus y)
+ {
+   return x + y;            /* xvadduhm */
+ }
+ 
+ vus ushort_sub (vus x, vus y)
+ {
+   return x - y;            /* xvsubuhm */
+ }
+ 
+ vus ushort_mul (vus x, vus y)
+ {
+   return x * y;            /* xvmuluhm */
+ }
+ 
+ /* { dg-final { scan-assembler-times "xvadduwm" 2 } } */
+ /* { dg-final { scan-assembler-times "xvsubuwm" 2 } } */
+ /* { dg-final { scan-assembler-times "xvmuluwm" 2 } } */
+ /* { dg-final { scan-assembler-times "xvadduhm" 2 } } */
+ /* { dg-final { scan-assembler-times "xvsubuhm" 2 } } */
+ /* { dg-final { scan-assembler-times "xvmuluhm" 2 } } */
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_2.c gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_2.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_2.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/powerpc/vsx_arith_vect_2.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mdejagnu-cpu=future -O2 -ftree-vectorize -fno-unroll-loops" } */
+ /* { dg-require-effective-target powerpc_future_compile_ok } */
+ 
+ #define N 128
+ 
+ extern signed int   si_a[N],  si_b[N],  si_c[N];
+ extern unsigned int ui_a[N],  ui_b[N],  ui_c[N];
+ extern signed short ss_a[N],  ss_b[N],  ss_c[N];
+ extern unsigned short us_a[N], us_b[N], us_c[N];
+ 
+ void int_mulhi ()
+ {
+   for (int i = 0; i < N; i++)
+     si_c[i] = ((signed long long) si_a[i] *
+                (signed long long) si_b[i]) >> 32;
+ }
+ 
+ void uint_mulhi ()
+ {
+   for (int i = 0; i < N; i++)
+     ui_c[i] = ((unsigned long long) ui_a[i] *
+                (unsigned long long) ui_b[i]) >> 32;
+ }
+ 
+ void short_mulhi ()
+ {
+   for (int i = 0; i < N; i++)
+     ss_c[i] = ((signed int) ss_a[i] *
+                (signed int) ss_b[i]) >> 16;
+ }
+ 
+ void ushort_mulhi ()
+ {
+   for (int i = 0; i < N; i++)
+     us_c[i] = ((unsigned int) us_a[i] *
+                (unsigned int) us_b[i]) >> 16;
+ }
+ 
+ /* { dg-final { scan-assembler-times {\mxvmulhsw\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mxvmulhuw\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mxvmulhsh\M} 1 } } */
+ /* { dg-final { scan-assembler-times {\mxvmulhuh\M} 1 } } */
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c gcc-16-20260711/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr126049.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target riscv_v_ok } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O2 -ftree-vectorize" } */
+ 
+ #define NAN (__builtin_nan(""))
+ 
+ __attribute__ ((noipa)) float
+ maxx (float *arr, unsigned int sz)
+ {
+   float val = NAN;
+   unsigned int i;
+ 
+   for (i = 0; i < sz; i++)
+     val = __builtin_fmaxf (val, arr[i]);
+ 
+   return val;
+ }
+ 
+ int
+ main ()
+ {
+   float arr[] = { NAN, NAN, NAN, NAN };
+   float res = maxx (arr, 4);
+   if (!__builtin_isnan (res))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/s390/pr126054.c gcc-16-20260711/gcc/testsuite/gcc.target/s390/pr126054.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/s390/pr126054.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/s390/pr126054.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "-O2" } */
+ 
+ int a = 255, b;
+ long c = 1, d;
+ long *e = &d;
+ int main() {
+   long f;
+   unsigned char g;
+   __int128 h = -10;
+   f = (long)h * (unsigned)(c | 56);
+   for (; b;)
+     ;
+   g = (unsigned char) f;
+   *e = 2540LL ^ g;
+   a = 16777215 ^ a ^ d & 255;
+   if ((a ^ (int) 4294967295) != 0xFF0000D5)
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gcc.target/sh/pr122948.c gcc-16-20260711/gcc/testsuite/gcc.target/sh/pr122948.c
*** gcc-16-20260704/gcc/testsuite/gcc.target/sh/pr122948.c	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gcc.target/sh/pr122948.c	Sat Jul 11 22:32:16 2026
***************
*** 0 ****
--- 1,67 ----
+ /* Verify that the T bit (carry/borrow) set expression of the subc insn is
+    correct.  */
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ 
+ extern void abort (void);
+ 
+ __attribute__ ((noipa)) unsigned int
+ foo (unsigned int a, unsigned int b)
+ {
+   if (b - a - 1 <= b)
+     a = 0;
+   return a;
+ }
+ 
+ __attribute__ ((noipa)) unsigned int
+ bar (unsigned int a, unsigned int b)
+ {
+   return (b - a - 1) > b;
+ }
+ 
+ __attribute__ ((noipa)) unsigned int
+ baz (unsigned int a, unsigned int b)
+ {
+   return (a + b + 1) <= a;
+ }
+ 
+ int
+ main (void)
+ {
+   if (foo (0xffffffff, 0x4e92c833) != 0)
+     abort ();
+ 
+   if (bar (0xffffffff, 0x4e92c833) != 0)
+     abort ();
+ 
+   /* b - a - 1 wraps (borrow) whenever a + 1 > b (unsigned).  */
+   if (bar (5, 3) != 1)
+     abort ();
+ 
+   if (bar (0, 0) != 1)
+     abort ();
+ 
+   if (bar (0, 5) != 0)
+     abort ();
+ 
+   /* addc carry-out: (a + b + 1) <= a.  */
+   /* 0xffffffff + 0 + 1 wraps to 0.  */
+   if (baz (0xffffffff, 0) != 1)
+     abort ();
+ 
+   if (baz (0xffffffff, 0xffffffff) != 1)
+     abort ();
+ 
+   /* wraps to 0.  */
+   if (baz (0xfffffffe, 1) != 1)
+     abort ();
+ 
+   /* 1 <= 0 is false.  */
+   if (baz (0, 0) != 0)
+     abort ();
+ 
+   if (baz (1, 2) != 0)
+     abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/block_18.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/block_18.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/block_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/block_18.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/126127 - resolution of user-defined operators in named BLOCK
+ 
+ module geom2d
+   use, intrinsic :: iso_fortran_env, only: wp => real64
+   implicit none
+   private
+   public :: vec2_t, operator(.dot.)
+ 
+   type :: vec2_t
+      real(wp) :: x = 0, y = 0
+   end type vec2_t
+ 
+   interface operator(.dot.)
+      module procedure vec_dot
+   end interface operator(.dot.)
+ contains
+   pure function vec_dot(a, b) result(r)
+     type(vec2_t), intent(in) :: a, b
+     real(wp)                 :: r
+     r = a%x*b%x + a%y*b%y
+   end function vec_dot
+ end module
+ 
+ module consumer
+   use, intrinsic :: iso_fortran_env, only: r8 => real64
+   use geom2d, only: vec2_t, operator(.dot.)
+   implicit none
+ contains
+   subroutine f(id)
+     integer, intent(out) :: id
+     type(vec2_t) :: d
+     real(r8)     :: dd
+     id = 0
+     blk: block
+       dd = d .dot. d
+     end block blk
+   end subroutine f
+ 
+   subroutine f2(id)
+     integer, intent(out) :: id
+     type(vec2_t) :: d
+     real(r8)     :: dd
+     id = 0
+     block
+       dd = d .dot. d
+     end block
+   end subroutine f2
+ 
+   subroutine f3(id)
+     integer, intent(out) :: id
+     type(vec2_t) :: d
+     real(r8)     :: dd
+     block
+       blk1: block
+         id = 0
+         block
+           blk2: block
+             dd = d .dot. d
+           end block blk2
+         end block
+       end block blk1
+     end block
+   end subroutine f3
+ end module
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/lto/pr126170_0.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/lto/pr126170_0.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/lto/pr126170_0.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/lto/pr126170_0.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,31 ----
+ ! { dg-lto-do link }
+ !
+ ! PR fortran/126170
+ ! A redundant, already host-associated USE inside a contained function
+ ! caused gfortran to create duplicate of a derived type with
+ ! a FINAL binding.
+ 
+ module vsm
+   type :: vs
+      integer :: c
+    contains
+      final :: vdst
+   end type vs
+ contains
+   subroutine vdst(v)
+     type(vs), intent(inout) :: v
+   end subroutine vdst
+ end module vsm
+ 
+ module m_ds
+   use vsm
+   type :: mdcc
+   end type mdcc
+ contains
+   function mdot(self)
+     use vsm
+     class(mdcc), intent(inout) :: self
+     type(vs) :: mdot
+     mdot%c = 1
+   end function mdot
+ end module m_ds
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/lto/pr126170_1.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/lto/pr126170_1.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/lto/pr126170_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/lto/pr126170_1.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,14 ----
+ module caller
+   use m_ds
+ contains
+   subroutine s()
+     type(mdcc) :: self
+     type(vs) :: vs_
+     vs_ = mdot(self)
+   end subroutine s
+ end module caller
+ 
+ program main
+   use caller
+   call s()
+ end program main
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_2.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_2.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_2.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_2.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,37 ----
+ ! { dg-do compile }
+ subroutine s1
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(1,2) = (x(1)%a(m,1)) ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ 
+ subroutine s2
+   type t
+     integer :: a(2) = 3!
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y = x(1)%a(m) ! { dg-error "non-constant initialization expression" }
+   print *, y
+ end
+ 
+ subroutine s3
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(1,2) = (x(b)%a) ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ 
+ subroutine s4
+   type t
+     integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer :: y(1,2) = x(b)%a ! { dg-error "does not reduce to a constant expression" }
+   print *, y
+ end
+ ! { dg-prune-output "Legacy Extension: REAL array index" }
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_3.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_3.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_3.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_3.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,11 ----
+ ! { dg-do run }
+ ! PR103367 Test case from the PR, previously segfaulted.
+ program p
+   type t
+      integer :: a(1,2) = 3
+   end type
+   type(t), parameter :: x(1) = t(4)
+   integer, parameter :: y(2) = x(1)%a(1,:)
+   if (any (y /= [4, 4])) stop 1
+ end
+ 
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_4.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_4.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/pr103367_4.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/pr103367_4.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,14 ----
+ ! { dg-do run }
+ ! PR103367, this test previously
+ ! Test case from the PR segfaulted at compile time.
+ program p
+   type inner
+     integer :: n = 3
+   end type
+   type outer
+     type(inner) :: a(2) = inner(1)
+   end type
+   type(outer), parameter :: x(1) = outer(inner(4))
+   integer, parameter :: y(2) = x(1)%a%n
+   if (any (y /= [4, 4])) stop 1
+ end
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/pr126116.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/pr126116.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/pr126116.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/pr126116.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ ! { dg-do run }
+ 
+ program check
+     implicit none
+     integer :: u
+     character(50) :: chr
+ 
+     ! 1. Correctly generate a negative unit via NEWUNIT
+     open(file="test.txt", newunit=u) ! u gets -10
+     close(u) ! u (-10) is now closed and free
+ 
+     ! 2. Internal I/O corrupts the state of unit -10
+     write(chr, *) "test"
+ 
+     ! 3. Redundant CLOSE on the valid unit 'u'.
+     ! This should be a safe no-op according to the standard,
+     ! but it triggers the runtime error/segfault!
+     close(u)
+ end program
diff -Nrcpad gcc-16-20260704/gcc/testsuite/gfortran.dg/pr126210.f90 gcc-16-20260711/gcc/testsuite/gfortran.dg/pr126210.f90
*** gcc-16-20260704/gcc/testsuite/gfortran.dg/pr126210.f90	Thu Jan  1 00:00:00 1970
--- gcc-16-20260711/gcc/testsuite/gfortran.dg/pr126210.f90	Sat Jul 11 22:32:17 2026
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do compile }
+ !
+ ! PR fortran/126210
+ ! A redundant, already host-associated USE inside a contained
+ ! subroutine of a module defining an interface whose specific procedure
+ ! shares the generic's name caused a mismatch error.
+ 
+ module amod
+   interface foo
+     function foo (x) bind (c)
+       use iso_c_binding, only : c_int
+       integer (c_int) :: foo
+       integer (c_int), value :: x
+     end function foo
+   end interface
+ end module amod
+ 
+ module m
+   use amod
+ contains
+   subroutine bar (y)
+     use amod
+     integer :: y
+     y = foo (1)
+   end subroutine bar
+ end module m
diff -Nrcpad gcc-16-20260704/gcc/tree-cfg.cc gcc-16-20260711/gcc/tree-cfg.cc
*** gcc-16-20260704/gcc/tree-cfg.cc	Sat Jul  4 22:32:17 2026
--- gcc-16-20260711/gcc/tree-cfg.cc	Sat Jul 11 22:32:18 2026
*************** verify_gimple_call (gcall *stmt)
*** 3466,3471 ****
--- 3466,3479 ----
  	  }
      }
  
+   /* IFN_VARING is not allowed to be present after the completion of any pass
+      as it should have been replaced.  */
+   if (gimple_call_internal_p (stmt, IFN_VARYING))
+     {
+       error ("%<.VARYING%> calls should have been replaced and are not allowed "
+ 	     "outside of the pass that introduced them");
+       return true;
+     }
    /* ???  The C frontend passes unpromoted arguments in case it
       didn't see a function declaration before the call.  So for now
       leave the call arguments mostly unverified.  Once we gimplify
diff -Nrcpad gcc-16-20260704/gcc/tree-vect-loop-manip.cc gcc-16-20260711/gcc/tree-vect-loop-manip.cc
*** gcc-16-20260704/gcc/tree-vect-loop-manip.cc	Sat Jul  4 22:32:17 2026
--- gcc-16-20260711/gcc/tree-vect-loop-manip.cc	Sat Jul 11 22:32:18 2026
*************** vect_set_loop_condition (class loop *loo
*** 1402,1407 ****
--- 1402,1420 ----
    gcond *orig_cond = get_loop_exit_condition (loop_e);
    gimple_stmt_iterator loop_cond_gsi = gsi_for_stmt (orig_cond);
  
+   /* Check to see whether we will be replacing final_IV below.  Because of the
+      various replacement strategies (assign vs PHI) just remove it now and
+      leave the SSA name to be rebuild below.  */
+   if (final_iv && TREE_CODE (final_iv) == SSA_NAME)
+     {
+       gimple *def = SSA_NAME_DEF_STMT (final_iv);
+       if (gimple_call_internal_p (def, IFN_VARYING))
+ 	{
+ 	  gimple_stmt_iterator gsi = gsi_for_stmt (def);
+ 	  gsi_remove (&gsi, true);
+ 	}
+     }
+ 
    if (loop_vinfo && LOOP_VINFO_USING_PARTIAL_VECTORS_P (loop_vinfo))
      {
        if (LOOP_VINFO_PARTIAL_VECTORS_STYLE (loop_vinfo) == vect_partial_vectors_avx512)
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3680,3686 ****
  		 until then.  */
  	      niters_vector_mult_vf
  		= make_ssa_name (TREE_TYPE (*niters_vector));
! 	      SSA_NAME_DEF_STMT (niters_vector_mult_vf) = gimple_build_nop ();
  	      *niters_vector_mult_vf_var = niters_vector_mult_vf;
  	    }
  	  else
--- 3693,3705 ----
  		 until then.  */
  	      niters_vector_mult_vf
  		= make_ssa_name (TREE_TYPE (*niters_vector));
! 	      edge exit_e = LOOP_VINFO_MAIN_EXIT (loop_vinfo);
! 	      gimple_stmt_iterator loop_cond_gsi
! 		= gsi_after_labels (exit_e->dest);
! 
! 	      gcall *tmp = gimple_build_call_internal (IFN_VARYING, 0);
! 	      gimple_call_set_lhs (tmp, niters_vector_mult_vf);
! 	      gsi_insert_before (&loop_cond_gsi, tmp, GSI_SAME_STMT);
  	      *niters_vector_mult_vf_var = niters_vector_mult_vf;
  	    }
  	  else
*************** vect_do_peeling (loop_vec_info loop_vinf
*** 3759,3764 ****
--- 3778,3787 ----
  	{
  	  tree tmp_niters_vf
  	    = make_ssa_name (LOOP_VINFO_EARLY_BRK_IV_TYPE (loop_vinfo));
+ 	  gcall *tmp_call = gimple_build_call_internal (IFN_VARYING, 0);
+ 	  gimple_call_set_lhs (tmp_call, tmp_niters_vf);
+ 	  auto header_gsi = gsi_after_labels (loop->header);
+ 	  gsi_insert_after (&header_gsi, tmp_call, GSI_SAME_STMT);
  
  	  if (!(LOOP_VINFO_NITERS_UNCOUNTED_P (loop_vinfo)
  		&& get_loop_exit_edges (loop).length () == 1))
diff -Nrcpad gcc-16-20260704/gcc/tree-vect-loop.cc gcc-16-20260711/gcc/tree-vect-loop.cc
*** gcc-16-20260704/gcc/tree-vect-loop.cc	Sat Jul  4 22:32:17 2026
--- gcc-16-20260711/gcc/tree-vect-loop.cc	Sat Jul 11 22:32:18 2026
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11083,11088 ****
--- 11083,11093 ----
    auto loop = LOOP_VINFO_LOOP (loop_vinfo);
    tree induc_var = niters_skip ? copy_ssa_name (phi_var) : phi_var;
  
+   /* Remove the existing dummy GIMPLE statement and just keep the def.  */
+   gimple *def = SSA_NAME_DEF_STMT (phi_var);
+   auto def_gsi = gsi_for_stmt (def);
+   gsi_remove (&def_gsi, true);
+ 
    auto induction_phi = create_phi_node (induc_var, loop->header);
    tree induc_def = PHI_RESULT (induction_phi);
  
*************** vect_update_ivs_after_vectorizer_for_ear
*** 11153,11159 ****
        gcc_assert (exit_bb);
        auto exit_gsi = gsi_after_labels (exit_bb);
        gsi_insert_seq_before (&exit_gsi, iv_stmts, GSI_SAME_STMT);
!   }
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
--- 11158,11164 ----
        gcc_assert (exit_bb);
        auto exit_gsi = gsi_after_labels (exit_bb);
        gsi_insert_seq_before (&exit_gsi, iv_stmts, GSI_SAME_STMT);
!     }
    /* Write the init_stmts in the loop-preheader block.  */
    auto psi = gsi_last_nondebug_bb (pe->src);
    gsi_insert_seq_after (&psi, init_stmts, GSI_LAST_NEW_STMT);
diff -Nrcpad gcc-16-20260704/libgcc/ChangeLog gcc-16-20260711/libgcc/ChangeLog
*** gcc-16-20260704/libgcc/ChangeLog	Sat Jul  4 22:32:18 2026
--- gcc-16-20260711/libgcc/ChangeLog	Sat Jul 11 22:32:18 2026
***************
*** 1,3 ****
--- 1,12 ----
+ 2026-07-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	Backported from master:
+ 	2026-07-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR libgcc/123976
+ 	* config/t-darwin-ehs: Add md-unwind-def.h as a
+ 	pre-requisite.
+ 
  2026-04-30  Release Manager
  
  	* GCC 16.1.0 released.
diff -Nrcpad gcc-16-20260704/libgfortran/ChangeLog gcc-16-20260711/libgfortran/ChangeLog
*** gcc-16-20260704/libgfortran/ChangeLog	Sat Jul  4 22:32:18 2026
--- gcc-16-20260711/libgfortran/ChangeLog	Sat Jul 11 22:32:18 2026
***************
*** 1,3 ****
--- 1,23 ----
+ 2026-07-10  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	Backported from master:
+ 	2026-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR libfortran/126116
+ 	* io/io.h (struct gfc_unit): Add bool for tracking.
+ 	Fix some white space problems.
+ 	* io/unit.c (close_unit_1): Add a declaration for this
+ 	function so it can be called before it has been defined.
+ 	Use the new bool.
+ 	(is_internal_reserved): New helper function. Returns true
+ 	only if the unit is not null and the internal unit kind is zero
+ 	meaning its not a character string.
+ 	(find_unit): Use the new helper function
+ 	(find_or_create_unit): Use the new helper.
+ 	(get_unit): Set the new bool.
+ 	(close_unit): Update the close_unit_1 argument list.
+ 	(close_units): Likewise.
+ 
  2026-05-22  Tobias Burnus  <tburnus@baylibre.com>
  
  	Backported from master:
diff -Nrcpad gcc-16-20260704/libgfortran/io/io.h gcc-16-20260711/libgfortran/io/io.h
*** gcc-16-20260704/libgfortran/io/io.h	Sat Jul  4 22:32:18 2026
--- gcc-16-20260711/libgfortran/io/io.h	Sat Jul 11 22:32:18 2026
*************** typedef struct st_parameter_dt
*** 534,540 ****
  	     character string is being read so don't use commas to shorten a
  	     formatted field width.  */
  	  unsigned sf_read_comma : 1;
! 	  /* A namelist specific flag used to enable reading input from 
  	     line_buffer for logical reads.  */
  	  unsigned line_buffer_enabled : 1;
  	  /* An internal unit specific flag used to identify that the associated
--- 534,540 ----
  	     character string is being read so don't use commas to shorten a
  	     formatted field width.  */
  	  unsigned sf_read_comma : 1;
! 	  /* A namelist specific flag used to enable reading input from
  	     line_buffer for logical reads.  */
  	  unsigned line_buffer_enabled : 1;
  	  /* An internal unit specific flag used to identify that the associated
*************** typedef struct gfc_unit
*** 648,654 ****
  {
    int unit_number;
    stream *s;
!   
    /* Treap links.  */
    struct gfc_unit *left, *right;
    int priority;
--- 648,654 ----
  {
    int unit_number;
    stream *s;
! 
    /* Treap links.  */
    struct gfc_unit *left, *right;
    int priority;
*************** typedef struct gfc_unit
*** 705,714 ****
  
    /* The format hash table.  */
    struct format_hash_entry format_hash_table[FORMAT_HASH_SIZE];
!   
    /* Formatting buffer.  */
    struct fbuf *fbuf;
!   
    /* Function pointer, points to list_read worker functions.  */
    int (*next_char_fn_ptr) (st_parameter_dt *);
    void (*push_char_fn_ptr) (st_parameter_dt *, int);
--- 705,714 ----
  
    /* The format hash table.  */
    struct format_hash_entry format_hash_table[FORMAT_HASH_SIZE];
! 
    /* Formatting buffer.  */
    struct fbuf *fbuf;
! 
    /* Function pointer, points to list_read worker functions.  */
    int (*next_char_fn_ptr) (st_parameter_dt *);
    void (*push_char_fn_ptr) (st_parameter_dt *, int);
*************** typedef struct gfc_unit
*** 719,724 ****
--- 719,727 ----
    gfc_array_char *string_unit_desc;
    int internal_unit_kind;
  
+   /* Track when a gfc_unit is reserved for an internal unit.  */
+   bool internal_reserved;
+ 
    /* DTIO Parent/Child procedure, 0 = parent, >0 = child level.  */
    int child_dtio;
  
*************** predec_waiting_locked (gfc_unit *u)
*** 1013,1019 ****
  
       if (predec_waiting_locked (u) == 0)
           // destroy u
! 	 
       could be further optimized by making this be an __ATOMIC_RELEASE,
       and then inserting a
  
--- 1016,1022 ----
  
       if (predec_waiting_locked (u) == 0)
           // destroy u
! 
       could be further optimized by making this be an __ATOMIC_RELEASE,
       and then inserting a
  
diff -Nrcpad gcc-16-20260704/libgfortran/io/unit.c gcc-16-20260711/libgfortran/io/unit.c
*** gcc-16-20260704/libgfortran/io/unit.c	Sat Jul  4 22:32:18 2026
--- gcc-16-20260711/libgfortran/io/unit.c	Sat Jul 11 22:32:18 2026
*************** found:
*** 478,494 ****
  }
  
  
  gfc_unit *
  find_unit (int n)
  {
!   return get_gfc_unit (n, 0);
  }
  
  
  gfc_unit *
  find_or_create_unit (int n)
  {
!   return get_gfc_unit (n, 1);
  }
  
  
--- 478,522 ----
  }
  
  
+ static int close_unit_1 (gfc_unit *, int, bool);
+ 
+ 
+ /*  Helper to check if an internal unit is reserved.  */
+ 
+ static inline bool
+ is_internal_reserved (gfc_unit *u)
+ {
+   return u->internal_reserved && u->internal_unit_kind == 0;
+ }
+ 
+ 
  gfc_unit *
  find_unit (int n)
  {
!   gfc_unit *u = get_gfc_unit (n, 0);
! 
!   if (u != NULL && is_internal_reserved (u))
!     {
!       unlock_unit (u);
!       return NULL;
!     }
! 
!   return u;
  }
  
  
  gfc_unit *
  find_or_create_unit (int n)
  {
!   gfc_unit *u = get_gfc_unit (n, 1);
! 
!   if (u != NULL && is_internal_reserved (u))
!     {
!       close_unit_1 (u, 0, false);
!       u = get_gfc_unit (n, 1);
!     }
! 
!   return u;
  }
  
  
*************** get_unit (st_parameter_dt *dtp, int do_c
*** 624,629 ****
--- 652,658 ----
        dtp->u.p.unit_is_internal = 1;
        dtp->common.unit = newunit_alloc ();
        unit = get_gfc_unit (dtp->common.unit, do_create);
+       unit->internal_reserved = true;
        set_internal_unit (dtp, unit, kind);
        fbuf_init (unit, 128);
        return unit;
*************** init_units (void)
*** 786,792 ****
  
  
  static int
! close_unit_1 (gfc_unit *u, int locked)
  {
    int i, rc;
  
--- 815,821 ----
  
  
  static int
! close_unit_1 (gfc_unit *u, int locked, bool free_newunit)
  {
    int i, rc;
  
*************** close_unit_1 (gfc_unit *u, int locked)
*** 816,822 ****
    free_format_hash_table (u);
    fbuf_destroy (u);
  
!   if (u->unit_number <= NEWUNIT_START)
      newunit_free (u->unit_number);
  
    if (!locked)
--- 845,851 ----
    free_format_hash_table (u);
    fbuf_destroy (u);
  
!   if (free_newunit && u->unit_number <= NEWUNIT_START)
      newunit_free (u->unit_number);
  
    if (!locked)
*************** unlock_unit (gfc_unit *u)
*** 852,858 ****
  int
  close_unit (gfc_unit *u)
  {
!   return close_unit_1 (u, 0);
  }
  
  
--- 881,887 ----
  int
  close_unit (gfc_unit *u)
  {
!   return close_unit_1 (u, 0, true);
  }
  
  
*************** close_units (void)
*** 868,874 ****
  {
    WRLOCK (&unit_rwlock);
    while (unit_root != NULL)
!     close_unit_1 (unit_root, 1);
    RWUNLOCK (&unit_rwlock);
  
    free (newunits);
--- 897,903 ----
  {
    WRLOCK (&unit_rwlock);
    while (unit_root != NULL)
!     close_unit_1 (unit_root, 1, true);
    RWUNLOCK (&unit_rwlock);
  
    free (newunits);
