diff -Nrcpad gcc-17-20260816/.gitignore gcc-17-20260823/.gitignore
*** gcc-17-20260816/.gitignore	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/.gitignore	Sun Aug 23 22:32:05 2026
***************
*** 15,20 ****
--- 15,21 ----
  *.lo
  *.o
  *.pyc
+ *.egg-info
  *.tmp
  *.a
  
diff -Nrcpad gcc-17-20260816/ChangeLog gcc-17-20260823/ChangeLog
*** gcc-17-20260816/ChangeLog	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/ChangeLog	Sun Aug 23 22:32:05 2026
***************
*** 1,3 ****
--- 1,35 ----
+ 2026-08-21  David Faust  <david.faust@oss.qualcomm.com>
+ 
+ 	* MAINTAINERS: Regenerate.
+ 	* MAINTAINERS.yml: Update my email and add myself to DCO.
+ 
+ 2026-08-19  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
+ 
+ 	PR other/126226
+ 	* .gitignore: Ignore python eggs.
+ 	* pyproject.toml: New file.
+ 
+ 2026-08-19  Longjun Luo  <luolongjuna@gmail.com>
+ 
+ 	* MAINTAINERS.yml: Add myself.
+ 	* MAINTAINERS (Write After Approval): Regenerate.
+ 	(Contributing under the DCO): Regenerate.
+ 
+ 2026-08-18  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* MAINTAINERS.yml (users): Add forgeid for some users.
+ 	(subsystems): Add some labels and teams to the data.
+ 
+ 2026-08-18  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
+ 
+ 	* MAINTAINERS.yml: Add inactive_email entries.
+ 
+ 2026-08-17  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* Makefile.def (dependencies): Remove the configure-target-libstdc++-v3
+ 	on configure-target-libgomp dependency.
+ 	* Makefile.in: Regenerate.
+ 
  2026-08-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
  
  	* MAINTAINERS: Regenerate.
diff -Nrcpad gcc-17-20260816/LAST_UPDATED gcc-17-20260823/LAST_UPDATED
*** gcc-17-20260816/LAST_UPDATED	Sun Aug 16 22:32:21 2026
--- gcc-17-20260823/LAST_UPDATED	Sun Aug 23 22:32:25 2026
***************
*** 1 ****
! Obtained from git: master revision 8df013222dffbd5762233e5cfe739951e481df06
--- 1 ----
! Obtained from git: master revision 91291a45490dae956752e55398b6562505692dc5
diff -Nrcpad gcc-17-20260816/MAINTAINERS gcc-17-20260823/MAINTAINERS
*** gcc-17-20260816/MAINTAINERS	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/MAINTAINERS	Sun Aug 23 22:32:05 2026
*************** C front end             Marek Polacek
*** 295,301 ****
  c++                     Patrick Palka           <ppalka@gcc.gnu.org>
  callgraph               Martin Jambor           <mjambor@suse.cz>
  CTF, BTF                Indu Bhagat             <indu.bhagat@oracle.com>
! CTF, BTF, bpf port      David Faust             <david.faust@oracle.com>
  dataflow                Paolo Bonzini           <bonzini@gnu.org>
  dataflow                Seongbae Park           <seongbae.park@gmail.com>
  dataflow                Kenneth Zadeck          <zadeck@naturalbridge.com>
--- 295,301 ----
  c++                     Patrick Palka           <ppalka@gcc.gnu.org>
  callgraph               Martin Jambor           <mjambor@suse.cz>
  CTF, BTF                Indu Bhagat             <indu.bhagat@oracle.com>
! CTF, BTF, bpf port      David Faust             <david.faust@oss.qualcomm.com>
  dataflow                Paolo Bonzini           <bonzini@gnu.org>
  dataflow                Seongbae Park           <seongbae.park@gmail.com>
  dataflow                Kenneth Zadeck          <zadeck@naturalbridge.com>
*************** Doug Evans                      devans
*** 493,499 ****
  Chris Fairles                   cfairles        <cfairles@gcc.gnu.org>
  Alessandro Fanfarillo           afanfa          <fanfarillo.gcc@gmail.com>
  Changpeng Fang                  cfang           <changpeng.fang@amd.com>
! David Faust                     dfaust          <david.faust@oracle.com>
  Sam Feifer                      sfeifer         <sfeifer@redhat.com>
  Eric Feng                       efric           <ef2648@columbia.edu>
  Li Feng                         lifeng          <nemokingdom@gmail.com>
--- 493,499 ----
  Chris Fairles                   cfairles        <cfairles@gcc.gnu.org>
  Alessandro Fanfarillo           afanfa          <fanfarillo.gcc@gmail.com>
  Changpeng Fang                  cfang           <changpeng.fang@amd.com>
! David Faust                     dfaust          <david.faust@oss.qualcomm.com>
  Sam Feifer                      sfeifer         <sfeifer@redhat.com>
  Eric Feng                       efric           <ef2648@columbia.edu>
  Li Feng                         lifeng          <nemokingdom@gmail.com>
*************** James K. Lowden                 jklowden
*** 675,680 ****
--- 675,681 ----
  Martin v. Löwis                 loewis          <loewis@informatik.hu-berlin.de>
  Edwin Lu                        ewlu            <ewlu@rivosinc.com>
  H.J. Lu                         hjl             <hjl.tools@gmail.com>
+ Longjun Luo                     anatasluo       <luolongjuna@gmail.com>
  Xiong Hu Luo                    luoxhu          <luoxhu@gcc.gnu.org>
  Bin Bin Lv                      shlb            <shlb@linux.ibm.com>
  Christophe Lyon                 clyon           <christophe.lyon@arm.com>
*************** Giuseppe D'Angelo
*** 992,997 ****
--- 993,999 ----
  Robin Dapp                                      <rdapp.gcc@gmail.com>
  Robin Dapp                                      <rdapp@qti.qualcomm.com>
  Robin Dapp                                      <rdapp@ventanamicro.com>
+ David Faust                                     <david.faust@oss.qualcomm.com>
  Kael Andrew Franco                              <kaelfandrew@gmail.com>
  Prachi Godbole                                  <pgodbole@nvidia.com>
  Eikansh Gupta                                   <eikansh.gupta@oss.qualcomm.com>
*************** Bohan Lei
*** 1010,1015 ****
--- 1012,1018 ----
  Jim Lin                                         <jim@andestech.com>
  Martin Liška                                    <martin.liska@hey.com>
  H.J. Lu                                         <hjl.tools@gmail.com>
+ Longjun Luo                                     <luolongjuna@gmail.com>
  Yuao Ma                                         <yuao@gcc.gnu.org>
  Matthew Malcomson                               <mmalcomson@nvidia.com>
  Jose E. Marchesi                                <jemarch@gnu.org>
diff -Nrcpad gcc-17-20260816/MAINTAINERS.yml gcc-17-20260823/MAINTAINERS.yml
*** gcc-17-20260816/MAINTAINERS.yml	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/MAINTAINERS.yml	Sun Aug 23 22:32:05 2026
*************** users:
*** 7,12 ****
--- 7,14 ----
    roles:
    - WriteAfter
    account: sabson
+   inactive_email:
+   - spencer.abson@arm.com
  - sn: Adams
    cn: Mark G. Adams
    email:
*************** users:
*** 33,38 ****
--- 35,42 ----
    - WriteAfter
    account: palves
    inactive: true
+   inactive_email:
+   - pedro@codesourcery.com
  - sn: Anglin
    cn: John David Anglin
    email:
*************** users:
*** 43,48 ****
--- 47,56 ----
    - Maintainer: hpux
    - WriteAfter
    account: danglin
+   inactive_email:
+   - dave.anglin@nrc-cnrc.gc.ca
+   - dave.anglin@nrc.ca
+   - dave@hiauly1.hia.nrc.ca
  - sn: Anlauf
    cn: Harald Anlauf
    email:
*************** users:
*** 69,74 ****
--- 77,84 ----
    roles:
    - WriteAfter
    account: parras
+   inactive_email:
+   - pa@codesourcery.com
  - sn: Arsenović
    cn: Arsen Arsenović
    email:
*************** users:
*** 77,82 ****
--- 87,94 ----
    roles:
    - WriteAfter
    account: arsen
+   inactive_email:
+   - arsen@aarsen.me
  - sn: Ashok
    cn: Raksit Ashok
    email:
*************** users:
*** 95,100 ****
--- 107,115 ----
    - Maintainer: xtensa port
    - WriteAfter
    account: sterling
+   inactive_email:
+   - saugustine@google.com
+   - sterling@tensilica.com
  - sn: Austern
    cn: Matt Austern
    email:
*************** users:
*** 104,109 ****
--- 119,128 ----
    - WriteAfter
    account: austern
    inactive: true
+   inactive_email:
+   - austern@apple.com
+   - austern@gmail.com
+   - austern@sgi.com
  - sn: Ayers
    cn: David Ayers
    email:
*************** users:
*** 113,118 ****
--- 132,139 ----
    - WriteAfter
    account: ayers
    inactive: true
+   inactive_email:
+   - d.ayers@inode.at
  - sn: Bahuguna
    cn: Prakhar Bahuguna
    email:
*************** users:
*** 130,135 ****
--- 151,159 ----
    - WriteAfter
    account: giovannibajo
    inactive: true
+   inactive_email:
+   - giovannibajo@libero.it
+   - rasky@develer.com
  - sn: Baldwin
    cn: Simon Baldwin
    email:
*************** users:
*** 156,161 ****
--- 180,187 ----
    - WriteAfter
    account: scottb
    inactive: true
+   inactive_email:
+   - scottb@corelcomputer.com
  - sn: Bangerth
    cn: Wolfgang Bangerth
    email:
*************** users:
*** 165,170 ****
--- 191,200 ----
    - WriteAfter
    account: bangerth
    inactive: true
+   inactive_email:
+   - bangerth@dealii.com
+   - bangerth@ticam.utexas.edu
+   - wolfgang.bangerth@iwr.uni-heidelberg.de
  - sn: Bantaloukas
    cn: Claudio Bantaloukas
    email:
*************** users:
*** 174,179 ****
--- 204,210 ----
    - Maintainer: forge integration
    - WriteAfter
    account: rdfm
+   forgeid: rdfm
  - sn: Barany
    cn: Gergö Barany
    email:
*************** users:
*** 205,210 ****
--- 236,243 ----
    roles:
    - WriteAfter
    account: bauermann
+   inactive_email:
+   - bauerman@br.ibm.com
  - sn: Baylis
    cn: Charles Baylis
    email:
*************** users:
*** 232,237 ****
--- 265,272 ----
    roles:
    - WriteAfter
    account: belagod
+   inactive_email:
+   - tbelagod@arm.com
  - sn: Belevantsev
    cn: Andrey Belevantsev
    email:
*************** users:
*** 251,256 ****
--- 286,293 ----
    - WriteAfter
    account: mbelivea
    inactive: true
+   inactive_email:
+   - mbelivea@redhat.com.com
  - sn: Belyshev
    cn: Serge Belyshev
    email:
*************** users:
*** 260,265 ****
--- 297,305 ----
    - WriteAfter
    account: ssb
    inactive: true
+   inactive_email:
+   - 1319@bot.ru
+   - belyshev@lubercy.com
  - sn: Beniston
    cn: Jon Beniston
    email:
*************** users:
*** 286,291 ****
--- 326,333 ----
    - WriteAfter
    account: abensonca
    inactive: true
+   inactive_email:
+   - abenson@carnegiescience.edu
  - sn: Bergner
    cn: Peter Bergner
    email:
*************** users:
*** 296,301 ****
--- 338,346 ----
    - WriteAfter
    - DCO: bergner@tenstorrent.com
    account: bergner
+   inactive_email:
+   - bergner@linux.ibm.com
+   - bergner@vnet.ibm.com
  - sn: Berlin
    cn: Daniel Berlin
    email:
*************** users:
*** 305,310 ****
--- 350,359 ----
    - WriteAfter
    account: dberlin
    inactive: true
+   inactive_email:
+   - dan@cgsoftware.com
+   - dan@dberlin.org
+   - dberlin@redhat.com
  - sn: Bernardi
    cn: Pat Bernardi
    email:
*************** users:
*** 322,327 ****
--- 371,378 ----
    roles:
    - WriteAfter
    account: jbeulich
+   inactive_email:
+   - jbeulich@novell.com
  - sn: Bhagat
    cn: Indu Bhagat
    email:
*************** users:
*** 343,348 ****
--- 394,403 ----
    - Reviewer: LTO
    - WriteAfter
    account: rguenth
+   forgeid: RichardBiener
+   inactive_email:
+   - rguenth@tat.physik.uni-tuebingen.de
+   - richard.guenther@uni-tuebingen.de
  - sn: Billinghurst
    cn: David Billinghurst
    email:
*************** users:
*** 352,357 ****
--- 407,414 ----
    - WriteAfter
    account: billingd
    inactive: true
+   inactive_email:
+   - david.billinghurst@riotinto.com.au
  - sn: Bily
    cn: Tomas Bily
    email:
*************** users:
*** 370,375 ****
--- 427,435 ----
    - WriteAfter
    account: lauras
    inactive: true
+   inactive_email:
+   - lauras@softhome.net
+   - laurynas.biveinis@mif.vu.lt
  - sn: Bizjak
    cn: Uros Bizjak
    email:
*************** users:
*** 379,384 ****
--- 439,446 ----
    - Maintainer: i386 port
    - WriteAfter
    account: uros
+   inactive_email:
+   - uros@kss-loka.si
  - sn: Blackmore
    cn: Craig Blackmore
    email:
*************** users:
*** 395,400 ****
--- 457,464 ----
    - WriteAfter
    account: ericb
    inactive: true
+   inactive_email:
+   - ebb9@email.byu.edu
  - sn: Blomqvist
    cn: Janne Blomqvist
    email:
*************** users:
*** 404,409 ****
--- 468,476 ----
    - WriteAfter
    account: jb
    inactive: true
+   inactive_email:
+   - jblomqvi@cc.hut.fi
+   - jblomqvi@vipunen.hut.fi
  - sn: Blundell
    cn: Phil Blundell
    email:
*************** users:
*** 421,426 ****
--- 488,496 ----
    - WriteAfter
    account: hboehm
    inactive: true
+   inactive_email:
+   - boehm@acm.org
+   - hans_boehm@hp.com
  - sn: Boessenkool
    cn: Segher Boessenkool
    email:
*************** users:
*** 431,436 ****
--- 501,509 ----
    - Maintainer: instruction combiner
    - WriteAfter
    account: segher
+   inactive_email:
+   - boessen@de.ibm.com
+   - segher@koffie.nl
  - sn: Boger
    cn: Lynn Boger
    email:
*************** users:
*** 468,473 ****
--- 541,549 ----
    - Reviewer: dataflow
    - WriteAfter
    account: bonzini
+   inactive_email:
+   - paolo.bonzini@lu.unisi.ch
+   - pbonzini@redhat.com
  - sn: Booth
    cn: Neil Booth
    email:
*************** users:
*** 477,482 ****
--- 553,564 ----
    - WriteAfter
    account: neil
    inactive: true
+   inactive_email:
+   - neil@cat.daikokuya.co.uk
+   - neil@cat.daikokuya.demon.co.uk
+   - neil@daikokuya.demon.co.uk
+   - neil@duron.akihabara.co.uk
+   - neilb@earthling.net
  - sn: Bosscher
    cn: Steven Bosscher
    email:
*************** users:
*** 486,491 ****
--- 568,577 ----
    - WriteAfter
    account: steven
    inactive: true
+   inactive_email:
+   - s.bosscher@student.tudelft.nl
+   - stevenb.gcc@gmail.com
+   - stevenb@suse.de
  - sn: Botcazou
    cn: Eric Botcazou
    email:
*************** users:
*** 499,504 ****
--- 585,595 ----
    - Maintainer: RTL optimizers
    - WriteAfter
    account: ebotcazou
+   inactive_email:
+   - botcazou@adacore.com
+   - ebotcazou@act-europe.fr
+   - ebotcazou@adacore.come
+   - ebotcazou@multimania.com
  - sn: Bothner
    cn: Per Bothner
    email:
*************** users:
*** 509,514 ****
--- 600,611 ----
    - WriteAfter
    account: bothner
    inactive: true
+   inactive_email:
+   - bothner@bothner.com
+   - bothner@cygnus.com
+   - bothner@kalessin.cygnus.com
+   - bothner@pbothner.com
+   - pbothner@apple.com
  - sn: Boucher
    cn: Antoni Boucher
    email:
*************** users:
*** 555,560 ****
--- 652,660 ----
    - WriteAfter
    account: brobecke
    inactive: true
+   inactive_email:
+   - brobecke@adacore.com
+   - brobecker@adacore.com
  - sn: Brolley
    cn: Dave Brolley
    email:
*************** users:
*** 564,569 ****
--- 664,671 ----
    - WriteAfter
    account: brolley
    inactive: true
+   inactive_email:
+   - brolley@cygnus.com
  - sn: Brown
    cn: Julian Brown
    email:
*************** users:
*** 592,597 ****
--- 694,702 ----
    - Maintainer: libphobos
    - WriteAfter
    account: ibuclaw
+   forgeid: ibuclaw
+   inactive_email:
+   - ibuclaw@symmetryinvestments.com
  - sn: Buettner
    cn: Kevin Buettner
    email:
*************** users:
*** 608,613 ****
--- 713,721 ----
    roles:
    - WriteAfter
    account: aburgess
+   inactive_email:
+   - aburgess@broadcom.com
+   - andrew.burgess@embecosm.com
  - sn: Burnus
    cn: Tobias Burnus
    email:
*************** users:
*** 622,627 ****
--- 730,737 ----
    - Reviewer: Fortran
    - WriteAfter
    account: burnus
+   inactive_email:
+   - tobias@codesourcery.com
  - sn: Butcher
    cn: Adam Butcher
    email:
*************** users:
*** 640,645 ****
--- 750,759 ----
    - WriteAfter
    account: cagney
    inactive: true
+   inactive_email:
+   - ac131313@redhat.com
+   - cagney@b1.cygnus.com
+   - cagney@redhat.com
  - sn: Carlini
    cn: Paolo Carlini
    email:
*************** users:
*** 650,655 ****
--- 764,773 ----
    - WriteAfter
    account: paolo
    inactive: true
+   inactive_email:
+   - paolo.carlini@oracle.com
+   - pcarlini@suse.de
+   - pcarlini@unitus.it
  - sn: Carlotti
    cn: Alice Carlotti
    email:
*************** users:
*** 659,664 ****
--- 777,784 ----
    - Reviewer: aarch64 port
    - WriteAfter
    account: acarlotti
+   inactive_email:
+   - andrew.carlotti@arm.com
  - sn: Carrera
    cn: Daniel Carrera
    email:
*************** users:
*** 677,682 ****
--- 797,807 ----
    - WriteAfter
    account: ciceron
    inactive: true
+   inactive_email:
+   - stcarrez@worldnet.fr
+   - stephane.carrez@nerim.fr
+   - stephane.carrez@sun.com
+   - stephane.carrez@worldnet.fr
  - sn: Charette
    cn: Gabriel Charette
    email:
*************** users:
*** 695,700 ****
--- 820,828 ----
    - Maintainer: Ada front end
    - WriteAfter
    account: charlet
+   inactive_email:
+   - charlet@act-europe.fr
+   - charlet@gnat.com
  - sn: Chavva
    cn: Chandra Chavva
    email:
*************** users:
*** 704,709 ****
--- 832,839 ----
    - WriteAfter
    account: cchavva
    inactive: true
+   inactive_email:
+   - cchavva@cygnus.com
  - sn: Chawla
    cn: Dhruv Chawla
    email:
*************** users:
*** 743,748 ****
--- 873,880 ----
    - WriteAfter
    account: fabien
    inactive: true
+   inactive_email:
+   - fabien.chene@gmail.com
  - sn: Cheng
    cn: Bin Cheng
    email:
*************** users:
*** 754,759 ****
--- 886,893 ----
    - WriteAfter
    account: amker
    inactive: true
+   inactive_email:
+   - bin.cheng@arm.com
  - sn: Cheng
    cn: Kito Cheng
    email:
*************** users:
*** 764,769 ****
--- 898,906 ----
    - Maintainer: riscv port
    - WriteAfter
    account: kito
+   inactive_email:
+   - kito@0xlab.org
+   - kito@andestech.com
  - sn: Cheng
    cn: Lulu Cheng
    email:
*************** users:
*** 784,789 ****
--- 921,928 ----
    - Maintainer: avr port
    - WriteAfter
    account: denisc
+   inactive_email:
+   - denisc@overta.ru
  - sn: Chiang
    cn: Monk Chiang
    email:
*************** users:
*** 793,798 ****
--- 932,940 ----
    roles:
    - WriteAfter
    account: monkc
+   inactive_email:
+   - 62004175+monkchiang@users.noreply.github.com
+   - sh.chiang04@gmail.com
  - sn: Chigot
    cn: Clément Chigot
    email:
*************** users:
*** 801,806 ****
--- 943,951 ----
    roles:
    - WriteAfter
    account: helflym
+   inactive_email:
+   - chigot.c@gmail.com
+   - clement.chigot@atos.net
  - sn: Chopra
    cn: Harshit Chopra
    email:
*************** users:
*** 829,834 ****
--- 974,980 ----
    - Maintainer: vectorizer (+ tree-if-conv)
    - WriteAfter
    account: tnfchris
+   forgeid: tnfchris
  - sn: Christopher
    cn: Eric Christopher
    email:
*************** users:
*** 838,843 ****
--- 984,993 ----
    - WriteAfter
    account: echristo
    inactive: true
+   inactive_email:
+   - echristo@apple.com
+   - echristo@cygnus.com
+   - echristo@redhat.com
  - sn: Clarke
    cn: Paul Clarke
    email:
*************** users:
*** 865,870 ****
--- 1015,1025 ----
    - Maintainer: xstormy16 port
    - WriteAfter
    account: nickc
+   inactive_email:
+   - nickc@cambridge.redhat.com
+   - nickc@cygnus.com
+   - niclc@cygnus.com
+   - niclc@redhat.com
  - sn: Cohen
    cn: Arthur Cohen
    email:
*************** users:
*** 875,880 ****
--- 1030,1036 ----
    - Maintainer: libgrust
    - WriteAfter
    account: cohenarthur
+   forgeid: cohenarthur
  - sn: Cohen
    cn: William Cohen
    email:
*************** users:
*** 893,898 ****
--- 1049,1057 ----
    - WriteAfter
    account: collison
    inactive: true
+   inactive_email:
+   - collison@rivosinc.com
+   - michael.collison@linaro.org
  - sn: Colomar
    cn: Alejandro Colomar
    email:
*************** users:
*** 902,907 ****
--- 1061,1068 ----
    - WriteAfter
    - DCO: alx@kernel.org
    account: alx
+   inactive_email:
+   - alx.manpages@gmail.com
  - sn: Conner
    cn: Josh Conner
    email:
*************** users:
*** 911,916 ****
--- 1072,1079 ----
    - WriteAfter
    account: jconner
    inactive: true
+   inactive_email:
+   - jconner@apple.com
  - sn: Cook
    cn: R. Kelley Cook
    email:
*************** users:
*** 919,924 ****
--- 1082,1089 ----
    - WriteAfter
    account: kcook
    inactive: true
+   inactive_email:
+   - kelleycook@attglobal.net
  - sn: Coplan
    cn: Alex Coplan
    email:
*************** users:
*** 930,935 ****
--- 1095,1101 ----
    - Reviewer: aarch64 port
    - WriteAfter
    account: acoplan
+   forgeid: acoplan
  - sn: Corallo
    cn: Andrea Corallo
    email:
*************** users:
*** 957,962 ****
--- 1123,1130 ----
    - WriteAfter
    account: corsepiu
    inactive: true
+   inactive_email:
+   - corsepiu@faw.uni-ulm.de
  - sn: Coudert
    cn: François-Xavier Coudert
    email:
*************** users:
*** 965,970 ****
--- 1133,1140 ----
    - Reviewer: Fortran
    - WriteAfter
    account: fxcoudert
+   inactive_email:
+   - coudert@clipper.ens.fr
  - sn: Courtès
    cn: Ludovic Courtès
    email:
*************** users:
*** 985,990 ****
--- 1155,1162 ----
    - WriteAfter
    account: ccoutant
    inactive: true
+   inactive_email:
+   - ccoutant@google.com
  - sn: Crowl
    cn: Lawrence Crowl
    email:
*************** users:
*** 1022,1027 ****
--- 1194,1203 ----
    - Maintainer: riscv port
    - WriteAfter
    account: palmer
+   inactive_email:
+   - palmer@rivosinc.com
+   - palmer@sifive.com
+   - palmerdabbelt@google.com
  - sn: Dall
    cn: Ian Dall
    email:
*************** users:
*** 1031,1036 ****
--- 1207,1215 ----
    - WriteAfter
    account: iandall
    inactive: true
+   inactive_email:
+   - ian.dall@dsto.defence.gov.au
+   - ian@sibyl.beware.dropbear.id.au
  - sn: Daney
    cn: David Daney
    email:
*************** users:
*** 1040,1045 ****
--- 1219,1227 ----
    - WriteAfter
    account: daney
    inactive: true
+   inactive_email:
+   - ddaney@avtrex.com
+   - ddaney@caviumnetworks.com
  - sn: Dapp
    cn: Robin Dapp
    email:
*************** users:
*** 1056,1061 ****
--- 1238,1247 ----
    - DCO: rdapp@qti.qualcomm.com
    - DCO: rdapp@ventanamicro.com
    account: rdapp
+   inactive_email:
+   - rdapp@linux.ibm.com
+   - rdapp@linux.vnet.ibm.com
+   - rdapp@oss.qualcomm.com
  - sn: Dardis
    cn: Simon Dardis
    email:
*************** users:
*** 1065,1070 ****
--- 1251,1258 ----
    - WriteAfter
    account: dardiss
    inactive: true
+   inactive_email:
+   - simon.dardis@imgtec.com
  - sn: Das
    cn: Sudakshina Das
    email:
*************** users:
*** 1083,1088 ****
--- 1271,1281 ----
    - WriteAfter
    account: bdavis
    inactive: true
+   inactive_email:
+   - bdavis9659@comcast.net
+   - bdavis9659@sbcglobal.net
+   - bdavis@gfortran.org
+   - jimmied@smu.edu
  - sn: DeLisle
    cn: Jerry DeLisle
    email:
*************** users:
*** 1091,1096 ****
--- 1284,1292 ----
    - Reviewer: Fortran
    - WriteAfter
    account: jvdelisle
+   inactive_email:
+   - jvdelisle2@gmail.com
+   - jvdelisle@verizon.net
  - sn: Delorie
    cn: DJ Delorie
    email:
*************** users:
*** 1101,1106 ****
--- 1297,1305 ----
    - WriteAfter
    account: dj
    inactive: true
+   inactive_email:
+   - dj@cygnus.com
+   - dj@redhat.com
  - sn: Demetriou
    cn: Chris Demetriou
    email:
*************** users:
*** 1110,1115 ****
--- 1309,1318 ----
    - WriteAfter
    account: cgd
    inactive: true
+   inactive_email:
+   - cgd@broadcom.com
+   - cgd@netbsd.org
+   - cgd@sibyte.com
  - sn: Dennett
    cn: James Dennett
    email:
*************** users:
*** 1117,1122 ****
--- 1320,1327 ----
    roles:
    - BZ
    inactive: true
+   inactive_email:
+   - jdennett@google.com
  - sn: Deshpande
    cn: Sameera Deshpande
    email:
*************** users:
*** 1126,1131 ****
--- 1331,1339 ----
    - WriteAfter
    account: sameerad
    inactive: true
+   inactive_email:
+   - sameera.deshpande@arm.com
+   - sameera.deshpande@imgtec.com
  - sn: Dijkstra
    cn: Wilco Dijkstra
    email:
*************** users:
*** 1135,1140 ****
--- 1343,1351 ----
    - Reviewer: aarch64 port
    - WriteAfter
    account: wilco
+   forgeid: Wilco
+   inactive_email:
+   - wdijkstr@arm.com
  - sn: Dimitrov
    cn: Dimitar Dimitrov
    email:
*************** users:
*** 1170,1175 ****
--- 1381,1390 ----
    - Maintainer: c++ runtime libs
    - WriteAfter
    account: drepper
+   inactive_email:
+   - drepper@cygnus.com
+   - drepper@redhat.com
+   - drepper@rtl.cygnus.com
  - sn: Dubner
    cn: Robert Dubner
    email:
*************** users:
*** 1190,1195 ****
--- 1405,1413 ----
    - Maintainer: c++ runtime libs special modes
    - WriteAfter
    account: fdumont
+   forgeid: fdumont
+   inactive_email:
+   - francois.cppdevs@free.fr
  - sn: Dvorak
    cn: Zdenek Dvorak
    email:
*************** users:
*** 1202,1207 ****
--- 1420,1429 ----
    - WriteAfter
    account: rakdver
    inactive: true
+   inactive_email:
+   - dvorakz@suse.cz
+   - rakdver@atrey.karlin.mff.cuni.cz
+   - rakdver@kam.uniff.cz
  - sn: Eager
    cn: Michael Eager
    email:
*************** users:
*** 1213,1218 ****
--- 1435,1442 ----
    account: eager
    aliases:
    - Michael J. Eager
+   inactive_email:
+   - eager@mvista.com
  - sn: Earnshaw
    cn: Richard Earnshaw
    email:
*************** users:
*** 1225,1230 ****
--- 1449,1458 ----
    - Maintainer: arm port
    - WriteAfter
    account: rearnsha
+   forgeid: rearnsha
+   inactive_email:
+   - erich@gnu.org
+   - rwe11@cl.cam.ac.uk
  - sn: Eckhardt
    cn: Jason Eckhardt
    email:
*************** users:
*** 1234,1239 ****
--- 1462,1470 ----
    - WriteAfter
    account: jle
    inactive: true
+   inactive_email:
+   - jle@cygnus.com
+   - jle@redhat.com
  - sn: Edelmann
    cn: Erik Edelmann
    email:
*************** users:
*** 1244,1249 ****
--- 1475,1482 ----
    - WriteAfter
    account: eedelman
    inactive: true
+   inactive_email:
+   - eedelman@acclab.helsinki.fi
  - sn: Edelsohn
    cn: David Edelsohn
    email:
*************** users:
*** 1254,1259 ****
--- 1487,1496 ----
    - Maintainer: aix
    - WriteAfter
    account: dje
+   inactive_email:
+   - dje@watson.ibm.com
+   - edelsohn@gnu.org
+   - edelsohn@mhpcc.edu
  - sn: Edlinger
    cn: Bernd Edlinger
    email:
*************** users:
*** 1270,1275 ****
--- 1507,1518 ----
    - WriteAfter
    account: pme
    inactive: true
+   inactive_email:
+   - pedwards@disaster.jaj.com
+   - pedwards@jaj.com
+   - phil@codesourcery.com
+   - phil@jaj.com
+   - pme@sourceware.cygnus.com
  - sn: Eggleston
    cn: Mark Eggleston
    email:
*************** users:
*** 1279,1284 ****
--- 1522,1529 ----
    - WriteAfter
    account: markeggleston
    inactive: true
+   inactive_email:
+   - mark.eggleston@codethink.com
  - sn: Ehrhardt
    cn: Christian Ehrhardt
    email:
*************** users:
*** 1295,1300 ****
--- 1540,1551 ----
    - WriteAfter
    account: sje
    inactive: true
+   inactive_email:
+   - sellcey@cavium.com
+   - sellcey@imgtec.com
+   - sellcey@marvell.com
+   - sellcey@mips.com
+   - sje@cup.hp.com
  - sn: Elliston
    cn: Ben Elliston
    email:
*************** users:
*** 1305,1310 ****
--- 1556,1567 ----
    - WriteAfter
    account: bje
    inactive: true
+   inactive_email:
+   - bje@au.ibm.com
+   - bje@cygnus.com
+   - bje@gnu.org
+   - bje@redhat.com
+   - bje@wasabisystems.com
  - sn: Embar
    cn: Mohan Embar
    email:
*************** users:
*** 1322,1327 ****
--- 1579,1586 ----
    - Maintainer: sh port
    - WriteAfter
    account: olegendo
+   inactive_email:
+   - oleg.endo@t-online.de
  - sn: Eres
    cn: Revital Eres
    email:
*************** users:
*** 1331,1336 ****
--- 1590,1597 ----
    - WriteAfter
    account: revitale
    inactive: true
+   inactive_email:
+   - revital.eres@linaro.org
  - sn: Espie
    cn: Marc Espie
    email:
*************** users:
*** 1340,1345 ****
--- 1601,1611 ----
    - WriteAfter
    account: espie
    inactive: true
+   inactive_email:
+   - espie@openbsd.org
+   - espie@quatramaran.ens.fr
+   - marc.espie@liafa.jussieu.fr
+   - marc.espie@openbsd.org
  - sn: Esztermann
    cn: Ansgar Esztermann
    email:
*************** users:
*** 1358,1363 ****
--- 1624,1640 ----
    - WriteAfter
    account: devans
    inactive: true
+   inactive_email:
+   - devans@canuck.cygnus.com
+   - devans@cygnus.com
+   - devans@egcs.cygnus.com
+   - devans@transmeta.com
+   - dje@canuck.cygnus.com
+   - dje@cygnus.com
+   - dje@gnu.org
+   - dje@seba.cygnus.com
+   - dje@sebabeach.org
+   - dje@transmeta.com
  - sn: Fairles
    cn: Chris Fairles
    email:
*************** users:
*** 1366,1371 ****
--- 1643,1650 ----
    - WriteAfter
    account: cfairles
    inactive: true
+   inactive_email:
+   - chris.fairles@gmail.com
  - sn: Fanfarillo
    cn: Alessandro Fanfarillo
    email:
*************** users:
*** 1375,1380 ****
--- 1654,1661 ----
    - WriteAfter
    account: afanfa
    inactive: true
+   inactive_email:
+   - alessandro.fanfarillo@gmail.com
  - sn: Fang
    cn: Changpeng Fang
    email:
*************** users:
*** 1387,1398 ****
  - sn: Faust
    cn: David Faust
    email:
!   - david.faust@oracle.com
    - dfaust@gcc.gnu.org
    roles:
    - Reviewer: CTF, BTF, bpf port
    - WriteAfter
    account: dfaust
  - sn: Feifer
    cn: Sam Feifer
    email:
--- 1668,1682 ----
  - sn: Faust
    cn: David Faust
    email:
!   - david.faust@oss.qualcomm.com
    - dfaust@gcc.gnu.org
    roles:
    - Reviewer: CTF, BTF, bpf port
    - WriteAfter
+   - DCO: david.faust@oss.qualcomm.com
    account: dfaust
+   inactive_email:
+   - david.faust@oracle.com
  - sn: Feifer
    cn: Sam Feifer
    email:
*************** users:
*** 1446,1451 ****
--- 1730,1737 ----
    - WriteAfter
    account: afomin
    inactive: true
+   inactive_email:
+   - alexander.fomin@intel.com
  - sn: Ford
    cn: Brian Ford
    email:
*************** users:
*** 1464,1469 ****
--- 1750,1757 ----
    roles:
    - WriteAfter
    account: mpf
+   inactive_email:
+   - matthew.fortune@mips.com
  - sn: Franco
    cn: Kael Andrew Franco
    email:
*************** users:
*** 1500,1505 ****
--- 1788,1796 ----
    - WriteAfter
    account: froydnj
    inactive: true
+   inactive_email:
+   - froydnj@codesourcery.com
+   - froydnj@cs.rice.edu
  - sn: Fu
    cn: Chao-ying Fu
    email:
*************** users:
*** 1560,1565 ****
--- 1851,1858 ----
    - WriteAfter
    account: ghazi
    inactive: true
+   inactive_email:
+   - ghazi@caip.rutgers.edu
  - sn: Gilmore
    cn: Doug Gilmore
    email:
*************** users:
*** 1578,1583 ****
--- 1871,1878 ----
    - WriteAfter
    account: gingell
    inactive: true
+   inactive_email:
+   - gingell@adacore.com
  - sn: Gingold
    cn: Tristan Gingold
    email:
*************** users:
*** 1588,1593 ****
--- 1883,1890 ----
    - WriteAfter
    account: gingold
    inactive: true
+   inactive_email:
+   - gingold@adacore.com
  - sn: Glaw
    cn: Jan-Benedict Glaw
    email:
*************** users:
*** 1596,1601 ****
--- 1893,1902 ----
    roles:
    - WriteAfter
    account: jbglaw
+   inactive_email:
+   - jbglaw@getslash.de
+   - jbglaw@owl.de
+   - jbglaw@ług-owl.de
  - sn: Glisse
    cn: Marc Glisse
    email:
*************** users:
*** 1604,1609 ****
--- 1905,1912 ----
    roles:
    - WriteAfter
    account: glisse
+   inactive_email:
+   - marc.glisse@normalesup.org
  - sn: Godbole
    cn: Prachi Godbole
    email:
*************** users:
*** 1613,1618 ****
--- 1916,1924 ----
    - WriteAfter
    - DCO: pgodbole@nvidia.com
    account: pgodbole
+   inactive_email:
+   - prachi.godbole@imgtec.com
+   - prachigodbole@gcc.gnu.org
  - sn: Granlund
    cn: Torbjorn Granlund
    email:
*************** users:
*** 1620,1625 ****
--- 1926,1935 ----
    roles:
    - WriteAfter
    inactive: true
+   inactive_email:
+   - tege@gnu.org
+   - tege@matematik.su.se
+   - tege@pdc.kth.se
  - sn: Green
    cn: Anthony Green
    email:
*************** users:
*** 1630,1635 ****
--- 1940,1950 ----
    - WriteAfter
    account: green
    inactive: true
+   inactive_email:
+   - green@cygnus.com
+   - green@localhost.localdomain
+   - green@redhat.com
+   - green@trip.cygnus.com
  - sn: Greenhalgh
    cn: James Greenhalgh
    email:
*************** users:
*** 1648,1653 ****
--- 1963,1970 ----
    - WriteAfter
    account: dgregor
    inactive: true
+   inactive_email:
+   - dgregor@apple.com
  - sn: Gretton-Dann
    cn: Matthew Gretton-Dann
    email:
*************** users:
*** 1657,1662 ****
--- 1974,1981 ----
    - WriteAfter
    account: mgretton
    inactive: true
+   inactive_email:
+   - matthew.gretton-dann@linaro.org
  - sn: Gribov
    cn: Yury Gribov
    email:
*************** users:
*** 1666,1671 ****
--- 1985,1992 ----
    - WriteAfter
    account: ygribov
    inactive: true
+   inactive_email:
+   - y.gribov@samsung.com
  - sn: Grimm
    cn: Jon Grimm
    email:
*************** users:
*** 1685,1690 ****
--- 2006,2013 ----
    - WriteAfter
    account: grosser
    inactive: true
+   inactive_email:
+   - tobias@grosser.es
  - sn: Guerby
    cn: Laurent Guerby
    email:
*************** users:
*** 1694,1699 ****
--- 2017,2024 ----
    - WriteAfter
    account: guerby
    inactive: true
+   inactive_email:
+   - guerby@acm.org
  - sn: Gui
    cn: Haochen Gui
    email:
*************** users:
*** 1719,1724 ****
--- 2044,2052 ----
    - WriteAfter
    account: xguo
    inactive: true
+   inactive_email:
+   - terry.guo@arm.com
+   - xuepeng.guo@intel.com
  - sn: Guozhi
    cn: Wei Guozhi
    email:
*************** users:
*** 1737,1742 ****
--- 2065,2072 ----
    - WriteAfter
    - DCO: eikansh.gupta@oss.qualcomm.com
    account: eikansh
+   inactive_email:
+   - quic_eikagupt@quicinc.com
  - sn: Gupta
    cn: Vineet Gupta
    email:
*************** users:
*** 1745,1750 ****
--- 2075,2083 ----
    roles:
    - WriteAfter
    account: vineetg
+   inactive_email:
+   - vgupta@synopsys.com
+   - vineetg@rivosinc.com
  - sn: H.S
    cn: Naveen H.S
    email:
*************** users:
*** 1757,1762 ****
--- 2090,2100 ----
    aliases:
    - Naveen Gowda
    - Naveen
+   inactive_email:
+   - naveen.hurugalawadi@cavium.com
+   - naveen.hurugalawadi@caviumnetworks.com
+   - naveen.s@kpitcummins.com
+   - naveenh@marvell.com
  - sn: Hagog
    cn: Mostafa Hagog
    email:
*************** users:
*** 1765,1770 ****
--- 2103,2110 ----
    - WriteAfter
    account: hagog
    inactive: true
+   inactive_email:
+   - mustafa@il.ibm.com
  - sn: Hainque
    cn: Olivier Hainque
    email:
*************** users:
*** 1774,1779 ****
--- 2114,2121 ----
    - Maintainer: VxWorks ports
    - WriteAfter
    account: hainque
+   inactive_email:
+   - hainque@act-europe.fr
  - sn: Hakobyan
    cn: Jivan Hakobyan
    email:
*************** users:
*** 1791,1796 ****
--- 2133,2146 ----
    - WriteAfter
    account: aph
    inactive: true
+   inactive_email:
+   - aph@cambridge.redhat.com
+   - aph@cygnus.co.uk
+   - aph@cygnus.com
+   - aph@emcee.cambridge.redhat.com
+   - aph@host240.cambridge.redhat.com
+   - aph@littlepinkcloud.com
+   - aph@viagra.cygnus.co.uk
  - sn: Han
    cn: Demin Han
    email:
*************** users:
*** 1815,1820 ****
--- 2165,2172 ----
    roles:
    - WriteAfter
    account: frederik
+   inactive_email:
+   - frederik@codesourcery.com
  - sn: Hastings
    cn: Stuart Hastings
    email:
*************** users:
*** 1833,1838 ****
--- 2185,2192 ----
    - WriteAfter
    account: haubi
    inactive: true
+   inactive_email:
+   - michael.haubenwallner@salomon.at
  - sn: Haugen
    cn: Pat Haugen
    email:
*************** users:
*** 1842,1847 ****
--- 2196,2203 ----
    - WriteAfter
    account: pthaugen
    inactive: true
+   inactive_email:
+   - pthaugen@linux.ibm.com
  - sn: Hayes
    cn: Michael Hayes
    email:
*************** users:
*** 1851,1856 ****
--- 2207,2218 ----
    - WriteAfter
    account: m.hayes
    inactive: true
+   inactive_email:
+   - mhayes@cygnus.com
+   - mhayes@redhat.com
+   - michaelh@ongaonga.chch.cri.nz
+   - mph@elec.canterbury.ac.nz
+   - mph@paradise.net.nz
  - sn: Hayward
    cn: Alan Hayward
    email:
*************** users:
*** 1875,1880 ****
--- 2237,2244 ----
    - WriteAfter
    account: helijia
    inactive: true
+   inactive_email:
+   - helijia@linux.ibm.com
  - sn: Heffernan
    cn: Mark Heffernan
    email:
*************** users:
*** 1892,1897 ****
--- 2256,2265 ----
    - WriteAfter
    account: george
    inactive: true
+   inactive_email:
+   - bugzilla@w170.uklinux.net
+   - george@geo.titech.ac.jp
+   - george@gly.bris.ac.uk
  - sn: Hellstrom
    cn: Daniel Hellstrom
    email:
*************** users:
*** 1919,1924 ****
--- 2287,2296 ----
    - Maintainer: alpha port
    - WriteAfter
    account: rth
+   inactive_email:
+   - rth@cygnus.com
+   - rth@redhat.com
+   - rth@twiddle.net
  - sn: Henderson
    cn: Stuart Henderson
    email:
*************** users:
*** 1939,1944 ****
--- 2311,2319 ----
    - WriteAfter
    - DCO: aldy@quesejoda.com
    account: aldyh
+   inactive_email:
+   - aldyh@cygnus.com
+   - aldyh@redhat.com
  - sn: Herron
    cn: Philip Herron
    email:
*************** users:
*** 1949,1954 ****
--- 2324,2331 ----
    - Maintainer: libgrust
    - WriteAfter
    account: redbrain
+   inactive_email:
+   - philip.herron@embecosm.com
  - sn: Hillenbrand
    cn: Marius Hillenbrand
    email:
*************** users:
*** 1976,1981 ****
--- 2353,2361 ----
    - WriteAfter
    account: kazu
    inactive: true
+   inactive_email:
+   - kazu@cs.umass.edu
+   - kazu@hxi.com
  - sn: Hollstein
    cn: Manfred Hollstein
    email:
*************** users:
*** 1985,1990 ****
--- 2365,2377 ----
    - WriteAfter
    account: manfred
    inactive: true
+   inactive_email:
+   - manfred.h@gmx.net
+   - manfred@lts.sel.alcatel.de
+   - manfred@s-direktnet.de
+   - manfredh@redhat.com
+   - mhollstein@cygnus.com
+   - mhollstein@redhat.com
  - sn: Horne
    cn: Stafford Horne
    email:
*************** users:
*** 2044,2049 ****
--- 2431,2441 ----
    - Maintainer: profile feedback
    - WriteAfter
    account: hubicka
+   inactive_email:
+   - hubicka@freesoft.cz
+   - hubicka@limax.paru.cas.cz
+   - hubicka@paru.cas.cz
+   - jh@suse.cz
  - sn: Hueffner
    cn: Falk Hueffner
    email:
*************** users:
*** 2053,2058 ****
--- 2445,2452 ----
    - WriteAfter
    account: falk
    inactive: true
+   inactive_email:
+   - falk.hueffner@student.uni-tuebingen.de
  - sn: Hughes
    cn: Andrew John Hughes
    email:
*************** users:
*** 2062,2067 ****
--- 2456,2464 ----
    - WriteAfter
    account: gandalf
    inactive: true
+   inactive_email:
+   - ahughes@redhat.com
+   - gnu.andrew@redhat.com
  - sn: Humieres
    cn: Dominique d'Humieres
    email:
*************** users:
*** 2071,2076 ****
--- 2468,2475 ----
    - WriteAfter
    account: dominiq
    inactive: true
+   inactive_email:
+   - dominiq@lps.ens.fr
  - sn: Hutchinson
    cn: Andy Hutchinson
    email:
*************** users:
*** 2080,2085 ****
--- 2479,2487 ----
    - WriteAfter
    account: hutchinsonandy
    inactive: true
+   inactive_email:
+   - hutchinsonamdy@aim.com
+   - hutchinsonandy@netscape.net
  - sn: Hutton
    cn: Joel Hutton
    email:
*************** users:
*** 2159,2164 ****
--- 2561,2568 ----
    - WriteAfter
    account: aivchenk
    inactive: true
+   inactive_email:
+   - alexander.ivchenko@intel.com
  - sn: Iyer
    cn: Balaji V. Iyer
    email:
*************** users:
*** 2168,2173 ****
--- 2572,2579 ----
    - WriteAfter
    account: bviyer
    inactive: true
+   inactive_email:
+   - balaji.v.iyer@intel.com
  - sn: Jääskeläinen
    cn: Pekka Jääskeläinen
    email:
*************** users:
*** 2177,2182 ****
--- 2583,2590 ----
    - WriteAfter
    account: visit0r
    inactive: true
+   inactive_email:
+   - pekka@parmance.com
  - sn: Jacobowitz
    cn: Daniel Jacobowitz
    email:
*************** users:
*** 2186,2191 ****
--- 2594,2604 ----
    - WriteAfter
    account: drow
    inactive: true
+   inactive_email:
+   - dan@codesourcery.com
+   - dan@debian.org
+   - drow@drow.them.org
+   - drow@mvista.com
  - sn: Jaeger
    cn: Andreas Jaeger
    email:
*************** users:
*** 2195,2200 ****
--- 2608,2615 ----
    - WriteAfter
    account: aj
    inactive: true
+   inactive_email:
+   - aj@arthur.rhein-neckar.de
  - sn: Jagasia
    cn: Harsha Jagasia
    email:
*************** users:
*** 2239,2244 ****
--- 2654,2661 ----
    - Reviewer: rs6000/powerpc port
    - WriteAfter
    account: jskumari
+   inactive_email:
+   - jskumari@linux.vnet.ibm.com
  - sn: Jayakar
    cn: Avinash Jayakar
    email:
*************** users:
*** 2261,2266 ****
--- 2678,2687 ----
    - Reviewer: libsanitizer, asan.cc
    - WriteAfter
    account: jakub
+   forgeid: jakub
+   inactive_email:
+   - jj@sunsite.ms.mff.cuni.cz
+   - jj@ultra.linux.cz
  - sn: Jenner
    cn: Andrew Jenner
    email:
*************** users:
*** 2296,2301 ****
--- 2717,2724 ----
    - WriteAfter
    account: qianjh
    inactive: true
+   inactive_email:
+   - qianjh@cn.fujitsu.com
  - sn: Jires
    cn: Michal Jires
    email:
*************** users:
*** 2314,2319 ****
--- 2737,2747 ----
    - WriteAfter
    account: janis
    inactive: true
+   inactive_email:
+   - janis187@us.ibm.com
+   - janis@us.ibm.com
+   - janisjo@codesourcery.com
+   - janosjo@codesourcery.com
  - sn: Johnson
    cn: Teresa Johnson
    email:
*************** users:
*** 2375,2380 ****
--- 2803,2812 ----
    roles:
    - WriteAfter
    account: eukarpov
+   inactive_email:
+   - eukarpov@gmail.com
+   - evgeny.karpov@microsoft.com
+   - evgeny@kmaps.co
  - sn: Kastl
    cn: Filip Kastl
    email:
*************** users:
*** 2383,2388 ****
--- 2815,2822 ----
    roles:
    - WriteAfter
    account: pheeck
+   inactive_email:
+   - filip.kastl@gmail.com
  - sn: Kaushik
    cn: Abhishek Kaushik
    email:
*************** users:
*** 2400,2405 ****
--- 2834,2844 ----
    - WriteAfter
    account: geoffk
    inactive: true
+   inactive_email:
+   - geoffk@apple.com
+   - geoffk@cygnus.com
+   - geoffk@greed.local
+   - geoffk@redhat.com
  - sn: Kehoe
    cn: Brendan Kehoe
    email:
*************** users:
*** 2409,2414 ****
--- 2848,2859 ----
    - WriteAfter
    account: brendan
    inactive: true
+   inactive_email:
+   - brendan@cygnus.com
+   - brendan@lasher.cygnus.com
+   - brendan@lisa.cygnus.com
+   - brendan@mole.gnu.ai.mit.edu
+   - brendan@redhat.com
  - sn: Kenner
    cn: Richard Kenner
    email:
*************** users:
*** 2419,2424 ****
--- 2864,2875 ----
    - WriteAfter
    account: kenner
    inactive: true
+   inactive_email:
+   - kenner@adacore.com
+   - kenner@don.gnat.com
+   - kenner@gnat.com
+   - kenner@nyu.ede
+   - kenner@vlsi1.ultra.nyu.edu
  - sn: Khrustalev
    cn: Yury Khrustalev
    email:
*************** users:
*** 2435,2440 ****
--- 2886,2895 ----
    roles:
    - WriteAfter
    account: ak
+   inactive_email:
+   - ak@linux.intel.com
+   - ak@muc.de
+   - ak@suse.de
  - sn: Klose
    cn: Matthias Klose
    email:
*************** users:
*** 2443,2448 ****
--- 2898,2907 ----
    roles:
    - WriteAfter
    account: doko
+   inactive_email:
+   - doko@cs.tu-berlin.de
+   - doko@marvin.itso-berlin.de
+   - doko@ubuntu.com
  - sn: Knaggs
    cn: Jeff Knaggs
    email:
*************** users:
*** 2515,2520 ****
--- 2974,2983 ----
    - WriteAfter
    account: pkoning
    inactive: true
+   inactive_email:
+   - paulkoning@comcast.net
+   - pkoning@equallogic.com
+   - pkoning@xedia.com
  - sn: Korb
    cn: Bruce Korb
    email:
*************** users:
*** 2524,2529 ****
--- 2987,2998 ----
    - Maintainer: fixincludes
    - WriteAfter
    account: korbb
+   inactive_email:
+   - autogen@autogen.freeservers.com
+   - autogen@linuxbox.com
+   - ddsinc09@ix.netcom.com
+   - korb@datadesign.com
+   - korbb@datadesign.com
  - sn: Korn
    cn: Dave Korn
    email:
*************** users:
*** 2533,2538 ****
--- 3002,3009 ----
    - WriteAfter
    account: davek
    inactive: true
+   inactive_email:
+   - dave.korn@artimi.com
  - sn: Kosnik
    cn: Benjamin De Kosnik
    email:
*************** users:
*** 2561,2566 ****
--- 3032,3040 ----
    - WriteAfter
    account: kraai
    inactive: true
+   inactive_email:
+   - kraai@alumni.carnegiemellon.edu
+   - kraai@alumni.cmu.edu
  - sn: Kraft
    cn: Daniel Kraft
    email:
*************** users:
*** 2589,2594 ****
--- 3063,3072 ----
    - Maintainer: s390 port
    - WriteAfter
    account: krebbel
+   inactive_email:
+   - andreas.krebbel@de.ibm.com
+   - krebbel1@de.ibm.com
+   - krebbel@linux.vnet.ibm.com
  - sn: Kretz
    cn: Matthias Kretz
    email:
*************** users:
*** 2598,2603 ****
--- 3076,3083 ----
    - WriteAfter
    - DCO: m.kretz@gsi.de
    account: mkretz
+   inactive_email:
+   - kretz@kde.org
  - sn: Krupp
    cn: Louis Krupp
    email:
*************** users:
*** 2616,2621 ****
--- 3096,3104 ----
    - WriteAfter
    - DCO: prathameshk@nvidia.com
    account: prathamesh3492
+   inactive_email:
+   - bilbotheelffriend@gmail.com
+   - prathamesh.kulkarni@linaro.org
  - sn: Kumar
    cn: Venkataramanan Kumar
    email:
*************** users:
*** 2626,2631 ****
--- 3109,3116 ----
    account: vekumar
    aliases:
    - vekumar
+   inactive_email:
+   - venkataramanan.kumar@linaro.org
  - sn: Kuvyrkov
    cn: Maxim Kuvyrkov
    email:
*************** users:
*** 2635,2640 ****
--- 3120,3130 ----
    - Maintainer: Android sub-port
    - WriteAfter
    account: mkuvyrkov
+   inactive_email:
+   - maxim.kuvyrkov@gmail.com
+   - maxim@codesourcery.com
+   - maxim@kugelworks.com
+   - mkuvyrkov@ispras.ru
  - sn: Kwan
    cn: Doug Kwan
    email:
*************** users:
*** 2661,2666 ****
--- 3151,3158 ----
    - WriteAfter
    account: razya
    inactive: true
+   inactive_email:
+   - razya@il.ibm.com
  - sn: Lafage
    cn: Thierry Lafage
    email:
*************** users:
*** 2679,2684 ****
--- 3171,3179 ----
    - WriteAfter
    account: aaronwl
    inactive: true
+   inactive_email:
+   - aaronraolete36@aaronwl.com
+   - awlaframboise@aol.com
  - sn: Lambertsen
    cn: Rask Ingemann Lambertsen
    email:
*************** users:
*** 2688,2693 ****
--- 3183,3190 ----
    - WriteAfter
    account: rask
    inactive: true
+   inactive_email:
+   - rask@sygehus.dk
  - sn: Lambourg
    cn: Jerome Lambourg
    email:
*************** users:
*** 2725,2730 ****
--- 3222,3229 ----
    - WriteAfter
    account: sabre
    inactive: true
+   inactive_email:
+   - sabre@gnu.org
  - sn: Laurenzo
    cn: Terry Laurenzo
    email:
*************** users:
*** 2774,2779 ****
--- 3273,3283 ----
    account: law
    aliases:
    - jlaw
+   inactive_email:
+   - jlaw@localhost.localdomain
+   - law@cygnus.com
+   - law@redhat.com
+   - law@torsion.usersys.redhat.com
  - sn: Lawrence
    cn: Alan Lawrence
    email:
*************** users:
*** 2792,2797 ****
--- 3296,3304 ----
    - WriteAfter
    account: jozefl
    inactive: true
+   inactive_email:
+   - jozef.l@somniumtech.com
+   - jozefl.gcc@gmail.com
  - sn: Lay
    cn: Georg-Johann Lay
    email:
*************** users:
*** 2800,2805 ****
--- 3307,3314 ----
    roles:
    - WriteAfter
    account: gjl
+   inactive_email:
+   - georgjohann@web.de
  - sn: Lazar
    cn: Vlad Lazar
    email:
*************** users:
*** 2836,2841 ****
--- 3345,3356 ----
    - WriteAfter
    account: jwlemke
    inactive: true
+   inactive_email:
+   - jim@wasabisystems.com
+   - jwlemke@codesourcery.com
+   - jwlemke@juniper.net
+   - jwlemke@specifix.com
+   - jwlemke@wasabisystems.com
  - sn: Leoshkevich
    cn: Ilya Leoshkevich
    email:
*************** users:
*** 2853,2858 ****
--- 3368,3376 ----
    - WriteAfter
    account: lerdsuwa
    inactive: true
+   inactive_email:
+   - lerdsuwa@scf-fs.usc.edu
+   - lerdsuwa@scf.usc.edu
  - sn: Li
    cn: Pan Li
    email:
*************** users:
*** 2901,2906 ****
--- 3419,3427 ----
    - Maintainer: rs6000/powerpc port
    - WriteAfter
    account: linkw
+   inactive_email:
+   - linkewen@hygon.cn
+   - linkw@linux.ibm.com
  - sn: Liqin
    cn: Chen Liqin
    email:
*************** users:
*** 2910,2915 ****
--- 3431,3439 ----
    - WriteAfter
    account: liqin
    inactive: true
+   inactive_email:
+   - liqin.chen@sunplusct.com
+   - liqin@sunnorth.com.cn
  - sn: Liška
    cn: Martin Liška
    email:
*************** users:
*** 2949,2954 ****
--- 3473,3480 ----
    - WriteAfter
    account: liujiangning
    inactive: true
+   inactive_email:
+   - jiangning.liu@amperecomputing.com
  - sn: Liu
    cn: Sa Liu
    email:
*************** users:
*** 2967,2972 ****
--- 3493,3500 ----
    - WriteAfter
    account: ralph
    inactive: true
+   inactive_email:
+   - suckfish@ihug.co.nz
  - sn: Lobo
    cn: Sheldon Lobo
    email:
*************** users:
*** 2976,2981 ****
--- 3504,3511 ----
    - WriteAfter
    account: smlobo
    inactive: true
+   inactive_email:
+   - smlobo@sheldon.us.oracle.com
  - sn: Loki
    cn: Gabor Loki
    email:
*************** users:
*** 3002,3007 ****
--- 3532,3539 ----
    - Maintainer: docs co-maintainer
    - WriteAfter
    account: sandra
+   inactive_email:
+   - sandra@codesourcery.com
  - sn: López-Ibáñez
    cn: Manuel López-Ibáñez
    email:
*************** users:
*** 3018,3023 ****
--- 3550,3558 ----
    roles:
    - WriteAfter
    account: carll
+   inactive_email:
+   - carll@us.ibm.com
+   - cel@us.ibm.com
  - sn: Lowden
    cn: James K. Lowden
    email:
*************** users:
*** 3027,3032 ****
--- 3562,3569 ----
    - Maintainer: COBOL front end
    - WriteAfter
    account: jklowden
+   inactive_email:
+   - jklowden@symas.com
  - sn: Löwis
    cn: Martin v. Löwis
    email:
*************** users:
*** 3053,3058 ****
--- 3590,3610 ----
    - WriteAfter
    - DCO: hjl.tools@gmail.com
    account: hjl
+   inactive_email:
+   - hjl@gnu.ai.mit.edu
+   - hjl@gnu.org
+   - hjl@lucon.org
+   - hjl@nynexst.com
+   - hongjiu.lu@intel.com
+ - sn: Luo
+   cn: Longjun Luo
+   email:
+   - luolongjuna@gmail.com
+   - anatasluo@gcc.gnu.org
+   roles:
+   - WriteAfter
+   - DCO: luolongjuna@gmail.com
+   account: anatasluo
  - sn: Luo
    cn: Xiong Hu Luo
    email:
*************** users:
*** 3061,3066 ****
--- 3613,3621 ----
    - WriteAfter
    account: luoxhu
    inactive: true
+   inactive_email:
+   - luoxhu@linux.ibm.com
+   - luoxhu@linux.vnet.ibm.com
  - sn: Lv
    cn: Bin Bin Lv
    email:
*************** users:
*** 3079,3084 ****
--- 3634,3644 ----
    - Reviewer: arm port (MVE)
    - WriteAfter
    account: clyon
+   forgeid: clyon
+   inactive_email:
+   - christophe.lyon@foss.st.com
+   - christophe.lyon@linaro.org
+   - christophe.lyon@st.com
  - sn: Ma
    cn: Jin Ma
    email:
*************** users:
*** 3113,3118 ****
--- 3673,3682 ----
    roles:
    - WriteAfter
    account: luisgpm
+   inactive_email:
+   - luis.machado@arm.com
+   - luis.machado@linaro.org
+   - luisgpm@br.ibm.com
  - sn: MacLeod
    cn: Andrew MacLeod
    email:
*************** users:
*** 3123,3128 ****
--- 3687,3694 ----
    - Maintainer: tree-ssa
    - WriteAfter
    account: amacleod
+   inactive_email:
+   - amacleod@cygnus.com
  - sn: Mahkovec
    cn: Ziga Mahkovec
    email:
*************** users:
*** 3144,3149 ****
--- 3710,3722 ----
    account: vmakarov
    aliases:
    - Vladimir N. Makarov
+   inactive_email:
+   - vmakarov@cygnus.com
+   - vmakarov@loony.cygnus.com
+   - vmakarov@toad.to.cygnus.com
+   - vmakarov@tofu.to.cygnus.com
+   - vmakarov@toke.toronto.redhat.com
+   - vmakarov@touchme.toronto.redhat.com
  - sn: Malcolm
    cn: David Malcolm
    email:
*************** users:
*** 3157,3162 ****
--- 3730,3736 ----
    - Maintainer: static analyzer
    - WriteAfter
    account: dmalcolm
+   forgeid: dmalcolm
  - sn: Malcomson
    cn: Matthew Malcomson
    email:
*************** users:
*** 3166,3171 ****
--- 3740,3747 ----
    - WriteAfter
    - DCO: mmalcomson@nvidia.com
    account: matmal01
+   inactive_email:
+   - matthew.malcomson@arm.com
  - sn: Maltsev
    cn: Mikhail Maltsev
    email:
*************** users:
*** 3190,3195 ****
--- 3766,3772 ----
    - WriteAfter
    - DCO: jemarch@gnu.org
    account: jemarch
+   forgeid: jemarch
  - sn: Markianos-Wright
    cn: Stamatis Markianos-Wright
    email:
*************** users:
*** 3217,3222 ****
--- 3794,3801 ----
    roles:
    - WriteAfter
    account: simartin
+   inactive_email:
+   - simon-l.martin@laposte.net
  - sn: Martinez
    cn: Alejandro Martinez
    email:
*************** users:
*** 3235,3240 ****
--- 3814,3821 ----
    - WriteAfter
    account: rmathew
    inactive: true
+   inactive_email:
+   - rmathew@gmail.com
  - sn: Matos
    cn: Paulo Matos
    email:
*************** users:
*** 3244,3249 ****
--- 3825,3833 ----
    - WriteAfter
    account: pmatos
    inactive: true
+   inactive_email:
+   - paulo@matos-sorge.com
+   - pmatos@broadcom.com
  - sn: Matsui
    cn: Ken Matsui
    email:
*************** users:
*** 3251,3256 ****
--- 3835,3842 ----
    roles:
    - WriteAfter
    account: kmatsui
+   inactive_email:
+   - kmatsui@cs.washington.edu
  - sn: Matz
    cn: Michael Matz
    email:
*************** users:
*** 3259,3264 ****
--- 3845,3852 ----
    roles:
    - WriteAfter
    account: matz
+   inactive_email:
+   - matzmich@cs.tu-berlin.de
  - sn: McGary
    cn: Greg McGary
    email:
*************** users:
*** 3268,3273 ****
--- 3856,3865 ----
    - WriteAfter
    account: gkm
    inactive: true
+   inactive_email:
+   - gkm@eng.ascend.com
+   - gkm@rivosinc.com
+   - greg@mcgary.org
  - sn: McGrath
    cn: Roland McGrath
    email:
*************** users:
*** 3277,3282 ****
--- 3869,3878 ----
    roles:
    - WriteAfter
    account: roland
+   inactive_email:
+   - roland@frob.com
+   - roland@gnu.org
+   - roland@redhat.com
  - sn: McKinlay
    cn: Bryce McKinlay
    email:
*************** users:
*** 3286,3291 ****
--- 3882,3892 ----
    - WriteAfter
    account: bryce
    inactive: true
+   inactive_email:
+   - bmckinlay@gmail.com
+   - bryce@albatross.co.nz
+   - bryce@mckinlay.net.nz
+   - bryce@waitaki.otago.ac.nz
  - sn: Meakin
    cn: Karl Meakin
    email:
*************** users:
*** 3294,3299 ****
--- 3895,3902 ----
    roles:
    - WriteAfter
    account: karmea01
+   inactive_email:
+   - karlwfmeakin@gmail.com
  - sn: Megacz
    cn: Adam Megacz
    email:
*************** users:
*** 3303,3308 ****
--- 3906,3913 ----
    - WriteAfter
    account: megacz
    inactive: true
+   inactive_email:
+   - megacz@cs.berkeley.edu
  - sn: Mei
    cn: Bingfeng Mei
    email:
*************** users:
*** 3322,3327 ****
--- 3927,3941 ----
    - WriteAfter
    account: meissner
    inactive: true
+   inactive_email:
+   - gnu@the-meissners.org
+   - meissner@cygnus.com
+   - meissner@linux.ibm.com
+   - meissner@linux.vnet.ibm.com
+   - meissner@redhat.com
+   - meissner@the-meissners.org
+   - meissner@tiktok.cygnus.com
+   - michael.meissner@amd.com
  - sn: Melcr
    cn: Josef Melcr
    email:
*************** users:
*** 3330,3335 ****
--- 3944,3952 ----
    roles:
    - WriteAfter
    account: jmelcr
+   inactive_email:
+   - jmelcr02@gmail.com
+   - melcrjos@fit.cvut.cz
  - sn: Merrill
    cn: Jason Merrill
    email:
*************** users:
*** 3343,3348 ****
--- 3960,3976 ----
    - Maintainer: dwarf debugging code
    - WriteAfter
    account: jason
+   forgeid: jason
+   inactive_email:
+   - jason@casey.cygnus.com
+   - jason@casey.soma.redhat.com
+   - jason@cygnus.com
+   - jason@decepticon.cygnus.com
+   - jason@deneb.cygnus.com
+   - jason@lasher.cygnus.com
+   - jason@phydeaux.cygnus.com
+   - jason@yorick.cygnus.com
+   - merrill@gnu.org
  - sn: Meyering
    cn: Jim Meyering
    email:
*************** users:
*** 3352,3357 ****
--- 3980,3989 ----
    - WriteAfter
    account: meyering
    inactive: true
+   inactive_email:
+   - meyering@ascend.com
+   - meyering@lucent.com
+   - meyering@redhat.com
  - sn: Michlmayr
    cn: Martin Michlmayr
    email:
*************** users:
*** 3373,3378 ****
--- 4005,4019 ----
    - WriteAfter
    account: davem
    inactive: true
+   inactive_email:
+   - davem@davemloft.net
+   - davem@dm.cobaltmicro.com
+   - davem@nadzieja.rutgers.edu
+   - davem@nuts.davemloft.net
+   - davem@pierdol.cobaltmicro.com
+   - davem@pierdol.cobaltnet.com
+   - davem@sunset.davemloft.net
+   - davem@tanya.rutgers.edu
  - sn: Millward
    cn: Lee Millward
    email:
*************** users:
*** 3382,3387 ****
--- 4023,4030 ----
    - WriteAfter
    account: lmillward
    inactive: true
+   inactive_email:
+   - lee.millward@codesourcery.com
  - sn: Mir
    cn: Immad Mir
    email:
*************** users:
*** 3392,3397 ****
--- 4035,4043 ----
    - DCO: mir@sourceware.org
    account: mir
    inactive: true
+   inactive_email:
+   - mirimmad17@gmail.com
+   - mirimmad@outlook.com
  - sn: Miranda
    cn: Cupertino Miranda
    email:
*************** users:
*** 3400,3405 ****
--- 4046,4053 ----
    roles:
    - WriteAfter
    account: cupermir
+   inactive_email:
+   - cmiranda@synopsys.com
  - sn: Mladjenovic
    cn: Dragan Mladjenovic
    email:
*************** users:
*** 3409,3414 ****
--- 4057,4066 ----
    - WriteAfter
    account: draganm
    inactive: true
+   inactive_email:
+   - dmladjenovic@wavecomp.com
+   - dragan.mladjenovic@rt-rk.com
+   - ot_dragan.mladjenovic@mediatek.com
  - sn: Modra
    cn: Alan Modra
    email:
*************** users:
*** 3417,3422 ****
--- 4069,4079 ----
    roles:
    - WriteAfter
    account: amodra
+   inactive_email:
+   - alan@linuxcare.com.au
+   - alan@spri.levels.unisa.edu.au
+   - amodra@bigpond.net.au
+   - amodra@one.net.au
  - sn: Moene
    cn: Toon Moene
    email:
*************** users:
*** 3426,3431 ****
--- 4083,4090 ----
    - Reviewer: Fortran
    - WriteAfter
    account: toon
+   inactive_email:
+   - toon@moene.indiv.nluug.nl
  - sn: Monakov
    cn: Alexander Monakov
    email:
*************** users:
*** 3452,3457 ****
--- 4111,4120 ----
    - WriteAfter
    account: clm
    inactive: true
+   inactive_email:
+   - clm@cm00re.com
+   - clm@cygnus.com
+   - clm@redhat.com
  - sn: Morin
    cn: Mikael Morin
    email:
*************** users:
*** 3460,3465 ****
--- 4123,4132 ----
    - Reviewer: Fortran
    - WriteAfter
    account: mikael
+   inactive_email:
+   - mikael.morin@sfr.fr
+   - mikael.morin@tele2.fr
+   - morin-mikael@orange.fr
  - sn: Morrison
    cn: James A. Morrison
    email:
*************** users:
*** 3468,3473 ****
--- 4135,4142 ----
    - WriteAfter
    account: phython
    inactive: true
+   inactive_email:
+   - ja2morri@uwaterloo.ca
  - sn: Moses
    cn: Brooks Moses
    email:
*************** users:
*** 3477,3482 ****
--- 4146,4154 ----
    - WriteAfter
    account: brooks
    inactive: true
+   inactive_email:
+   - bmoses@stanford.edu
+   - brooks.moses@codesourcery.com
  - sn: Mueller
    cn: Dirk Mueller
    email:
*************** users:
*** 3486,3491 ****
--- 4158,4166 ----
    - WriteAfter
    account: mueller
    inactive: true
+   inactive_email:
+   - dmuell@gmx.net
+   - dmueller@suse.com
  - sn: Muldoon
    cn: Phil Muldoon
    email:
*************** users:
*** 3505,3510 ****
--- 4180,4187 ----
    - WriteAfter
    - DCO: gaiusmod2@gmail.com
    account: gaius
+   inactive_email:
+   - gaius.mulley@southwales.ac.uk
  - sn: Müllner
    cn: Christoph Müllner
    email:
*************** users:
*** 3529,3534 ****
--- 4206,4214 ----
    roles:
    - WriteAfter
    account: munroesj
+   inactive_email:
+   - munroesj@linux.vnet.ibm.com
+   - sjmunroe@us.ibm.com
  - sn: Muyter
    cn: Philippe De Muyter
    email:
*************** users:
*** 3539,3544 ****
--- 4219,4226 ----
    - WriteAfter
    account: phdm
    inactive: true
+   inactive_email:
+   - phdm@info.ucl.ac.be
  - sn: Myers
    cn: Joseph Myers
    email:
*************** users:
*** 3556,3561 ****
--- 4238,4248 ----
    - Reviewer: driver
    - WriteAfter
    account: jsm28
+   forgeid: jsm28
+   inactive_email:
+   - joseph@codesourcery.com
+   - jsm28@cam.ac.uk
+   - jsm@polyomino.org.uk
  - sn: Myers
    cn: Nathan Myers
    email:
*************** users:
*** 3564,3569 ****
--- 4251,4258 ----
    roles:
    - WriteAfter
    account: ncm
+   inactive_email:
+   - ncm-nospam@cantrip.org
  - sn: Nagy
    cn: Szabolcs Nagy
    email:
*************** users:
*** 3573,3578 ****
--- 4262,4269 ----
    - DCO: nsz@gcc.gnu.org
    account: nsz
    inactive: true
+   inactive_email:
+   - szabolcs.nagy@arm.com
  - sn: Nascimento
    cn: Victor Do Nascimento
    email:
*************** users:
*** 3590,3595 ****
--- 4281,4288 ----
    - WriteAfter
    account: qneill
    inactive: true
+   inactive_email:
+   - quentin.neill@amd.com
  - sn: Nemet
    cn: Adam Nemet
    email:
*************** users:
*** 3599,3604 ****
--- 4292,4300 ----
    - WriteAfter
    account: nemet
    inactive: true
+   inactive_email:
+   - anemet@caviumnetworks.com
+   - anemet@lnxw.com
  - sn: Nerode
    cn: Nathanael Nerode
    email:
*************** users:
*** 3608,3613 ****
--- 4304,4313 ----
    - WriteAfter
    account: neroden
    inactive: true
+   inactive_email:
+   - neroden@doctor.moo.mud.org
+   - neroden@doctormoo.dyndns.org
+   - neroden@twcny.rr.com
  - sn: Neumann
    cn: Thomas Neumann
    email:
*************** users:
*** 3617,3622 ****
--- 4317,4324 ----
    - WriteAfter
    account: tneumann
    inactive: true
+   inactive_email:
+   - thomas.neumann@in.tum.de
  - sn: Nicolaescu
    cn: Dan Nicolaescu
    email:
*************** users:
*** 3626,3631 ****
--- 4328,4335 ----
    - WriteAfter
    account: dann
    inactive: true
+   inactive_email:
+   - dann@godzilla.ics.uci.edu
  - sn: Nilsen
    cn: Kelvin Nilsen
    email:
*************** users:
*** 3635,3640 ****
--- 4339,4346 ----
    - WriteAfter
    account: kelvin
    inactive: true
+   inactive_email:
+   - kdnilsen@linux.vnet.ibm.com
  - sn: Nilsson
    cn: Hans-Peter Nilsson
    email:
*************** users:
*** 3647,3652 ****
--- 4353,4361 ----
      email: hp@bitrange.com
    - WriteAfter
    account: hp
+   inactive_email:
+   - hp@axis.se
+   - hp@dummer.localdomain
  - sn: Norris
    cn: James Norris
    email:
*************** users:
*** 3654,3659 ****
--- 4363,4370 ----
    roles:
    - WriteAfter
    inactive: true
+   inactive_email:
+   - jnorris@gcc.gnu.org
  - sn: Novillo
    cn: Diego Novillo
    email:
*************** users:
*** 3663,3668 ****
--- 4374,4382 ----
    - WriteAfter
    account: dnovillo
    inactive: true
+   inactive_email:
+   - dnovillo@cygnus.com
+   - dnovillo@redhat.com
  - sn: Nuzman
    cn: Dorit Nuzman
    email:
*************** users:
*** 3681,3686 ****
--- 4395,4404 ----
    - WriteAfter
    account: obrien
    inactive: true
+   inactive_email:
+   - obrien@bsdi.com
+   - obrien@dragon.nuxi.com
+   - obrien@nuxi.com
  - sn: O'Donell
    cn: Carlos O'Donell
    email:
*************** users:
*** 3689,3694 ****
--- 4407,4414 ----
    roles:
    - WriteAfter
    account: carlos
+   inactive_email:
+   - carlos@codesourcery.com
  - sn: O'Gorman
    cn: Peter O'Gorman
    email:
*************** users:
*** 3698,3703 ****
--- 4418,4425 ----
    - WriteAfter
    account: pogma
    inactive: true
+   inactive_email:
+   - peter@pogma.com
  - sn: O'Neill
    cn: Patrick O'Neill
    email:
*************** users:
*** 3735,3740 ****
--- 4457,4472 ----
    - Maintainer: build machinery (*.in)
    - WriteAfter
    account: aoliva
+   inactive_email:
+   - aoliva@acm.org
+   - aoliva@cygnus.com
+   - aoliva@oliva.athome.lsd.ic.unicamp.br
+   - aoliva@redhat.com
+   - oliva@dacore.com
+   - oliva@dcc.unicamp.br
+   - oliva@gcc.gnu.org
+   - oliva@gnu.org
+   - oliva@lsd.ic.unicamp.br
  - sn: Ornstein
    cn: Andrea Ornstein
    email:
*************** users:
*** 3754,3759 ****
--- 4486,4493 ----
    - Maintainer: testsuite
    - WriteAfter
    account: ro
+   inactive_email:
+   - ro@techfak.uni-bielefeld.de
  - sn: Ostapenko
    cn: Maxim Ostapenko
    email:
*************** users:
*** 3782,3787 ****
--- 4516,4524 ----
    - Reviewer: c++
    - WriteAfter
    account: ppalka
+   inactive_email:
+   - patrick@parcs.ath.cx
+   - ppalka007@gmail.com
  - sn: Park
    cn: Seongbae Park
    email:
*************** users:
*** 3838,3843 ****
--- 4575,4583 ----
    - WriteAfter
    account: andris
    inactive: true
+   inactive_email:
+   - pavenis@lanet.lv
+   - pavenis@latnet.lv
  - sn: Pereira
    cn: Fernando Pereira
    email:
*************** users:
*** 3847,3852 ****
--- 4587,4594 ----
    - WriteAfter
    account: pronesto
    inactive: true
+   inactive_email:
+   - fernando@cs.ucla.edu
  - sn: Pero
    cn: Nicola Pero
    email:
*************** users:
*** 3857,3862 ****
--- 4599,4608 ----
    - WriteAfter
    account: nicola
    inactive: true
+   inactive_email:
+   - n.pero@mi.flashnet.it
+   - nicola@brainstorm.co.uk
+   - nicola@nicola.brainstorm.co.uk
  - sn: Perta
    cn: Sebastian Perta
    email:
*************** users:
*** 3884,3889 ****
--- 4630,4637 ----
    - WriteAfter
    - DCO: mikpelinux@gmail.com
    account: mikpe
+   inactive_email:
+   - mikpe@it.uu.se
  - sn: Pfau
    cn: Johannes Pfau
    email:
*************** users:
*** 3904,3909 ****
--- 4652,4661 ----
    - Maintainer: web pages
    - WriteAfter
    account: gerald
+   inactive_email:
+   - gerald@sourceware.org
+   - gp@suse.de
+   - pfeifer@dbai.tuwien.ac.at
  - sn: Phatak
    cn: Kaushik Phatak
    email:
*************** users:
*** 3913,3918 ****
--- 4665,4672 ----
    - WriteAfter
    account: kaushikp
    inactive: true
+   inactive_email:
+   - kaushik.phatak@kpit.com
  - sn: Pinski
    cn: Andrea Pinski
    email:
*************** users:
*** 3930,3935 ****
--- 4684,4698 ----
    - DCO: andrew.pinski@oss.qualcomm.com
    - DCO: quic_apinski@quicinc.com
    account: pinskia
+   forgeid: pinskia
+   inactive_email:
+   - andrew.pinski@caviumnetworks.com
+   - andrew.pinski@playstation.sony.com
+   - andrew_pinski@playstation.sony.com
+   - apinski@apple.com
+   - apinski@cavium.com
+   - apinski@marvell.com
+   - pinskia@physics.uc.edu
  - sn: Pitre
    cn: Nicolas Pitre
    email:
*************** users:
*** 3939,3944 ****
--- 4702,4709 ----
    - WriteAfter
    account: nico
    inactive: true
+   inactive_email:
+   - nico@fluxnic.net
  - sn: Ploujnikov
    cn: Michael Ploujnikov
    email:
*************** users:
*** 3987,3992 ****
--- 4752,4764 ----
    - Reviewer: Graphite
    - WriteAfter
    account: spop
+   inactive_email:
+   - pop@cri.ensmp.fr
+   - s.pop@laposte.net
+   - s.pop@samsung.com
+   - sebastian.pop@amd.com
+   - sebastian.pop@inria.fr
+   - spop@amazon.com
  - sn: Poulhiès
    cn: Marc Poulhiès
    email:
*************** users:
*** 3996,4001 ****
--- 4768,4775 ----
    - Maintainer: Ada front end
    - WriteAfter
    account: dkm
+   inactive_email:
+   - dkm@kataplop.net
  - sn: Poyarekar
    cn: Siddhesh Poyarekar
    email:
*************** users:
*** 4005,4010 ****
--- 4779,4789 ----
    - WriteAfter
    - DCO: siddhesh@gotplt.org
    account: siddhesh
+   inactive_email:
+   - siddhesh.poyarekar@gmail.com
+   - siddhesh.poyarekar@linaro.org
+   - siddhesh@redhat.com
+   - siddhesh@sourceware.org
  - sn: Praveen
    cn: Vidya Praveen
    email:
*************** users:
*** 4014,4019 ****
--- 4793,4800 ----
    - WriteAfter
    account: vp
    inactive: true
+   inactive_email:
+   - vidya.praveen@atmel.com
  - sn: Preud'homme
    cn: Thomas Preud'homme
    email:
*************** users:
*** 4023,4028 ****
--- 4804,4812 ----
    - WriteAfter
    account: thopre01
    inactive: true
+   inactive_email:
+   - thomas.preudhomme@arm.com
+   - thomas.preudhomme@linaro.org
  - sn: Priour
    cn: Benjamin Priour
    email:
*************** users:
*** 4057,4062 ****
--- 4841,4849 ----
    - WriteAfter
    account: qiyao
    inactive: true
+   inactive_email:
+   - qiyaoltc@cn.ibm.com
+   - yao.qi@linaro.org
  - sn: Qu
    cn: Xianmiao Qu
    email:
*************** users:
*** 4066,4071 ****
--- 4853,4860 ----
    - Maintainer: c-sky port
    - WriteAfter
    account: xianmiao
+   inactive_email:
+   - xianmiao_qu@c-sky.com
  - sn: Quinn
    cn: Jerry Quinn
    email:
*************** users:
*** 4075,4080 ****
--- 4864,4871 ----
    - WriteAfter
    account: jlquinn
    inactive: true
+   inactive_email:
+   - jquinn@nortelnetworks.com
  - sn: Radhakrishnan
    cn: Ramana Radhakrishnan
    email:
*************** users:
*** 4085,4090 ****
--- 4876,4888 ----
    - WriteAfter
    - DCO: ramanara@nvidia.com
    account: ramana
+   inactive_email:
+   - ramana.gcc@gmail.com
+   - ramana.r@gmail.com
+   - ramana.radhakrishnan@arm.com
+   - ramana.radhakrishnan@codito.com
+   - ramana.radhakrishnan@linaro.org
+   - ramana@codito.com
  - sn: Rahimi
    cn: Navid Rahimi
    email:
*************** users:
*** 4094,4099 ****
--- 4892,4899 ----
    - DCO: navidr@gcc.gnu.org
    account: navidr
    inactive: true
+   inactive_email:
+   - navidrahimi@microsoft.com
  - sn: Raj
    cn: Rishi Raj
    email:
*************** users:
*** 4129,4134 ****
--- 4929,4936 ----
    roles:
    - WriteAfter
    account: ninaranns
+   inactive_email:
+   - dinka.ranns@googlemail.com
  - sn: Rasmussen
    cn: Rolf Rasmussen
    email:
*************** users:
*** 4146,4151 ****
--- 4948,4955 ----
    - WriteAfter
    account: foreese
    inactive: true
+   inactive_email:
+   - reese-fritz@zai.com
  - sn: Reichelt
    cn: Volker Reichelt
    email:
*************** users:
*** 4155,4160 ****
--- 4959,4967 ----
    - WriteAfter
    account: reichelt
    inactive: true
+   inactive_email:
+   - reichelt@igpm.rwth-aachen.de
+   - reichelt@netcologne.de
  - sn: Rennecke
    cn: Joern Rennecke
    email:
*************** users:
*** 4163,4168 ****
--- 4970,4987 ----
    roles:
    - WriteAfter
    account: amylaar
+   inactive_email:
+   - amylaar@cygnus.co.uk
+   - amylaar@cygnus.com
+   - amylaar@onetel.net.uk
+   - amylaar@redhat.co.uk
+   - amylaar@redhat.com
+   - amylaar@spamcop.net
+   - joern.rennecke@arc.com
+   - joern.rennecke@embecosm.com
+   - joern.rennecke@riscy-ip.com
+   - joern.rennecke@st.com
+   - joern.rennecke@superh.com
  - sn: Reutner-Fischer
    cn: Bernhard Reutner-Fischer
    email:
*************** users:
*** 4207,4212 ****
--- 5026,5033 ----
    - WriteAfter
    account: trix
    inactive: true
+   inactive_email:
+   - trix@juniper.net
  - sn: Rodat
    cn: Pierre-Marie de Rodat
    email:
*************** users:
*** 4226,4231 ****
--- 5047,5055 ----
    roles:
    - WriteAfter
    account: rodgertq
+   inactive_email:
+   - rodgert@appliantology.com
+   - rodgert@twrodgers.com
  - sn: Rodrigues
    cn: Craig Rodrigues
    email:
*************** users:
*** 4234,4239 ****
--- 5058,5066 ----
    - WriteAfter
    account: rodrigc
    inactive: true
+   inactive_email:
+   - crodrigu@bbn.com
+   - rodrigc@mediaone.net
  - sn: Rohou
    cn: Erven Rohou
    email:
*************** users:
*** 4243,4248 ****
--- 5070,5077 ----
    - WriteAfter
    account: erven
    inactive: true
+   inactive_email:
+   - erven.rohou@st.com
  - sn: Rosen
    cn: Ira Rosen
    email:
*************** users:
*** 4252,4257 ****
--- 5081,5088 ----
    - WriteAfter
    account: irar
    inactive: true
+   inactive_email:
+   - ira.rosen@linaro.org
  - sn: Roux
    cn: Yvan Roux
    email:
*************** users:
*** 4261,4266 ****
--- 5092,5099 ----
    - WriteAfter
    account: yroux
    inactive: true
+   inactive_email:
+   - yvan.roux@st.com
  - sn: Rozenfeld
    cn: Eugene Rozenfeld
    email:
*************** users:
*** 4271,4276 ****
--- 5104,5111 ----
    - Maintainer: AutoFDO
    - WriteAfter
    account: erozen
+   inactive_email:
+   - eugene.rozenfeld@microsoft.com
  - sn: Rozycki
    cn: Maciej W. Rozycki
    email:
*************** users:
*** 4280,4285 ****
--- 5115,5129 ----
    - Maintainer: vax port
    - WriteAfter
    account: macro
+   inactive_email:
+   - macro@codesourcery.com
+   - macro@ds2.pg.gda.pl
+   - macro@embecosm.com
+   - macro@imgtec.com
+   - macro@linux-mips.org
+   - macro@mips.com
+   - macro@redhat.com
+   - macro@wdc.com
  - sn: Rupp
    cn: Douglas Rupp
    email:
*************** users:
*** 4290,4295 ****
--- 5134,5143 ----
    - WriteAfter
    account: rupp
    inactive: true
+   inactive_email:
+   - drupp@cs.washington.edu
+   - rupp@adacore.com
+   - rupp@gnat.com
  - sn: Rus
    cn: Silvius Rus
    email:
*************** users:
*** 4299,4304 ****
--- 5147,5154 ----
    - WriteAfter
    account: rus
    inactive: true
+   inactive_email:
+   - silvius.rus@gmail.com
  - sn: Sachs
    cn: Matthew Sachs
    email:
*************** users:
*** 4326,4331 ****
--- 5176,5183 ----
    - WriteAfter
    account: hariharans
    inactive: true
+   inactive_email:
+   - hariharan@picochip.com
  - sn: Sandiford
    cn: Richard Sandiford
    email:
*************** users:
*** 4337,4342 ****
--- 5189,5204 ----
    - Reviewer: wide-int
    - WriteAfter
    account: rsandifo
+   forgeid: rsandifo
+   inactive_email:
+   - r.sandiford@redhat.com
+   - r.sandiford@uk.ibm.com
+   - richard.sandiford@arm.com
+   - richard.sandiford@linaro.org
+   - richard@codesourcery.com
+   - rsandifo@linux.vnet.ibm.com
+   - rsandifo@nildram.co.uk
+   - rsandifo@redhat.com
  - sn: Sandoe
    cn: Iain Sandoe
    email:
*************** users:
*** 4347,4352 ****
--- 5209,5221 ----
    - Maintainer: objective-c/c++
    - WriteAfter
    account: iains
+   forgeid: iains
+   inactive_email:
+   - iain.sandoe@sandoe-acoustics.co.uk
+   - iain@codesourcery.com
+   - iains.gcc@gmail.com
+   - iainsandoe@apollo-3-vm-lion-0-187.local
+   - iainsandoe@mini-05-seq.local
  - sn: Sands
    cn: Duncan Sands
    email:
*************** users:
*** 4355,4360 ****
--- 5224,5231 ----
    - WriteAfter
    account: baldrick
    inactive: true
+   inactive_email:
+   - baldrick@free.fr
  - sn: Saraswati
    cn: Sujoy Saraswati
    email:
*************** users:
*** 4374,4379 ****
--- 5245,5253 ----
    - DCO: tbsaunde+gcc@tbsaunde.org
    account: tbsaunde
    inactive: true
+   inactive_email:
+   - tbsaunde@tbsaunde.org
+   - tsaunders@mozilla.com
  - sn: Sawdey
    cn: Aaron Sawdey
    email:
*************** users:
*** 4383,4388 ****
--- 5257,5264 ----
    - WriteAfter
    account: acsawdey
    inactive: true
+   inactive_email:
+   - acsawdey@linux.vnet.ibm.com
  - sn: Sayle
    cn: Roger Sayle
    email:
*************** users:
*** 4391,4396 ****
--- 5267,5274 ----
    roles:
    - WriteAfter
    account: sayle
+   inactive_email:
+   - roger@eyesopen.com
  - sn: Schlüter
    cn: Tobias Schlüter
    email:
*************** users:
*** 4412,4417 ****
--- 5290,5306 ----
    - WriteAfter
    account: bernds
    inactive: true
+   inactive_email:
+   - bernd.schmidt@analog.com
+   - bernd.schmidt@codesourcery.com
+   - bernds@codesourcery.com
+   - bernds@cygnus.co.uk
+   - bernds@redhat.co.uk
+   - bernds@redhat.com
+   - bschmidt@redhat.com
+   - crux@gcc.gnu.org
+   - crux@ohara.informatik.rwth-aachen.de
+   - crux@pool.informatik.rwth-aachen.de
  - sn: Schmidt
    cn: Bill Schmidt
    email:
*************** users:
*** 4419,4424 ****
--- 5308,5318 ----
    roles:
    - DCO: bill.schmidt@fastmail.com
    inactive: true
+   inactive_email:
+   - wschmidt@linux.ibm.com
+   - wschmidt@linux.vnet.ibm.com
+   - wschmidt@vnet.ibm.com
+   - wschmidt@vnet.linux.ibm.com
  - sn: Schmidt
    cn: Will Schmidt
    email:
*************** users:
*** 4428,4433 ****
--- 5322,5329 ----
    - WriteAfter
    account: willschm
    inactive: true
+   inactive_email:
+   - will_schmidt@linux.ibm.com
  - sn: Schmitz
    cn: Jennifer Schmitz
    email:
*************** users:
*** 4446,4451 ****
--- 5342,5349 ----
    - Maintainer: s390 port
    - WriteAfter
    account: stefansf
+   inactive_email:
+   - xxschulz@de.ibm.com
  - sn: Schwab
    cn: Andreas Schwab
    email:
*************** users:
*** 4456,4461 ****
--- 5354,5364 ----
    - Maintainer: m68k port
    - WriteAfter
    account: schwab
+   inactive_email:
+   - schwab@issan.cs.uni-dortmund.de
+   - schwab@issan.informatik.uni-dortmund.de
+   - schwab@redhat.com
+   - whitebox_@gmx.de
  - sn: Schwarz
    cn: Tilo Schwarz
    email:
*************** users:
*** 4479,4484 ****
--- 5382,5391 ----
    - Maintainer: OpenACC
    - WriteAfter: thomas@schwinge.name
    account: tschwinge
+   forgeid: tschwinge
+   inactive_email:
+   - thomas@codesourcery.com
+   - tschwinge@gnu.org
  - sn: Sebor
    cn: Martin Sebor
    email:
*************** users:
*** 4487,4492 ****
--- 5394,5402 ----
    - WriteAfter
    account: msebor
    inactive: true
+   inactive_email:
+   - msebor@gmail.com
+   - msebor@redhat.com
  - sn: Seketeli
    cn: Dodji Seketeli
    email:
*************** users:
*** 4499,4504 ****
--- 5409,5416 ----
    - WriteAfter
    account: dodji
    inactive: true
+   inactive_email:
+   - dseketel@redhat.com
  - sn: Seldal
    cn: Svein Seldal
    email:
*************** users:
*** 4508,4513 ****
--- 5420,5427 ----
    - WriteAfter
    account: sveinse
    inactive: true
+   inactive_email:
+   - svein.seldal@solidas.com
  - sn: Selvaraj
    cn: Senthil Kumar Selvaraj
    email:
*************** users:
*** 4515,4520 ****
--- 5429,5437 ----
    roles:
    - WriteAfter
    account: saaadhu
+   inactive_email:
+   - senthil_kumar.selvaraj@atmel.com
+   - senthilkumar.selvaraj@microchip.com
  - sn: Serebryany
    cn: Kostya Serebryany
    email:
*************** users:
*** 4534,4539 ****
--- 5451,5459 ----
    - WriteAfter
    account: ths
    inactive: true
+   inactive_email:
+   - seufer@csv.ica.uni-stuttgart.de
+   - ths@mips.com
  - sn: Seurer
    cn: Bill Seurer
    email:
*************** users:
*** 4553,4558 ****
--- 5473,5480 ----
    - WriteAfter
    account: shangyunhai
    inactive: true
+   inactive_email:
+   - yunhai_shang@c-sky.com
  - sn: Shead
    cn: Nathaniel Shead
    email:
*************** users:
*** 4572,4577 ****
--- 5494,5501 ----
    - WriteAfter
    account: timshen
    inactive: true
+   inactive_email:
+   - timshen91@gmail.com
  - sn: Sherrill
    cn: Joel Sherrill
    email:
*************** users:
*** 4582,4587 ****
--- 5506,5513 ----
    - Maintainer: RTEMS Ports
    - WriteAfter
    account: joel
+   inactive_email:
+   - joel.sherrill@oarcorp.com
  - sn: Sherwood
    cn: David Sherwood
    email:
*************** users:
*** 4603,4608 ****
--- 5529,5538 ----
    - WriteAfter
    - DCO: nathan@acm.org
    account: nathan
+   inactive_email:
+   - nathan@codesourcery.com
+   - nathans@fb.com
+   - sidwell@codesourcery.com
  - sn: Singhai
    cn: Sharad Singhai
    email:
*************** users:
*** 4621,4626 ****
--- 5551,5558 ----
    - WriteAfter
    account: singler
    inactive: true
+   inactive_email:
+   - singler@ira.uka.de
  - sn: Sirl
    cn: Franz Sirl
    email:
*************** users:
*** 4657,4662 ****
--- 5589,5596 ----
    - DCO: esmithrowland@gmail.com
    account: emsr
    inactive: true
+   inactive_email:
+   - 3dw4rd@verizon.net
  - sn: Sokolov
    cn: Anatoly Sokolov
    email:
*************** users:
*** 4666,4671 ****
--- 5600,5607 ----
    - WriteAfter
    account: aesok
    inactive: true
+   inactive_email:
+   - aesok@post.ru
  - sn: Sokolov
    cn: Michael Sokolov
    email:
*************** users:
*** 4684,4689 ****
--- 5620,5628 ----
    - WriteAfter
    account: jayants
    inactive: true
+   inactive_email:
+   - jayant.sonar@kpitcummins.com
+   - jayants@kpitcummins.com
  - sn: Song
    cn: Fangrui Song
    email:
*************** users:
*** 4692,4697 ****
--- 5631,5638 ----
    - WriteAfter
    - DCO: maskray@gcc.gnu.org
    account: maskray
+   inactive_email:
+   - maskray@google.com
  - sn: Stallman
    cn: Richard Stallman
    email:
*************** users:
*** 4727,4732 ****
--- 5668,5678 ----
    - WriteAfter
    account: grahams
    inactive: true
+   inactive_email:
+   - grahams@btinternet.com
+   - grahams@cygnus.co.uk
+   - grahams@rcp.co.uk
+   - grahams@redhat.com
  - sn: Stubbs
    cn: Andrew Stubbs
    email:
*************** users:
*** 4736,4741 ****
--- 5682,5690 ----
    - Maintainer: amdgcn port
    - WriteAfter
    account: ams
+   inactive_email:
+   - ams@codesourcery.com
+   - andrew.stubbs@st.com
  - sn: Stump
    cn: Mike Stump
    email:
*************** users:
*** 4748,4753 ****
--- 5697,5710 ----
    - Reviewer: wide-int
    - WriteAfter
    account: mrs
+   inactive_email:
+   - mrs@apple.com
+   - mrs@cygnus.com
+   - mrs@kankakee.wrs.com
+   - mrs@mrs.kithrup.com
+   - mrs@windriver.com
+   - mrs@wombat.gnu.ai.mit.edu
+   - mrs@wrs.com
  - sn: Sturm
    cn: Jeff Sturm
    email:
*************** users:
*** 4756,4761 ****
--- 5713,5723 ----
    - WriteAfter
    account: jsturm
    inactive: true
+   inactive_email:
+   - jeff.sturm@appnet.com
+   - jeff.sturm@commerceone.com
+   - jsturm@one-point.com
+   - jsturm@sigma6.com
  - sn: Su
    cn: YunQiang Su
    email:
*************** users:
*** 4765,4770 ****
--- 5727,5735 ----
    - Maintainer: mips port
    - WriteAfter
    account: syq
+   inactive_email:
+   - syq@debian.org
+   - yunqiang.su@cipunited.com
  - sn: Suchanek
    cn: Robert Suchanek
    email:
*************** users:
*** 4774,4779 ****
--- 5739,5747 ----
    - WriteAfter
    account: rts
    inactive: true
+   inactive_email:
+   - robert.suchanek@imgtec.com
+   - robert.suchanek@mips.com
  - sn: Supers1ngular
    cn: Supers1ngular
    email:
*************** users:
*** 4791,4796 ****
--- 5759,5766 ----
    - WriteAfter
    account: asutton
    inactive: true
+   inactive_email:
+   - asutton@lock3software.com
  - sn: Svelto
    cn: Gabriele Svelto
    email:
*************** users:
*** 4817,4822 ****
--- 5787,5794 ----
    - WriteAfter
    account: tomtab
    inactive: true
+   inactive_email:
+   - toma.tabacu@imgtec.com
  - sn: Tahir
    cn: Omar Tahir
    email:
*************** users:
*** 4843,4848 ****
--- 5815,5823 ----
    roles:
    - WriteAfter
    account: cltang
+   inactive_email:
+   - cltang@codesourcery.com
+   - ctang@marvell.com
  - sn: Tardieu
    cn: Samuel Tardieu
    email:
*************** users:
*** 4869,4874 ****
--- 5844,5855 ----
    - Maintainer: middle-end
    - WriteAfter
    account: ian
+   inactive_email:
+   - ian@c2micro.com
+   - ian@cygnus.com
+   - ian@wasabisystems.com
+   - ian@zembu.com
+   - iant@google.com
  - sn: Tebbs
    cn: Sam Tebbs
    email:
*************** users:
*** 4878,4883 ****
--- 5859,5866 ----
    - WriteAfter
    account: samtebbs
    inactive: true
+   inactive_email:
+   - sam.tebbs@arm.com
  - sn: Telidevulapalli
    cn: Vijay Telidevulapalli
    email:
*************** users:
*** 4897,4902 ****
--- 5880,5887 ----
    - WriteAfter
    account: dinar
    inactive: true
+   inactive_email:
+   - dinar@kugelworks.com
  - sn: Thomas
    cn: Matt Thomas
    email:
*************** users:
*** 4915,4920 ****
--- 5900,5909 ----
    - Reviewer: Fortran
    - WriteAfter
    account: pault
+   inactive_email:
+   - paul.richard.thomas@gmail.com
+   - pault@pc30.home
+   - paulthomas2@wanadoo.fr
  - sn: Thomas
    cn: Philipp Thomas
    email:
*************** users:
*** 4925,4930 ****
--- 5914,5923 ----
    - WriteAfter
    account: pthomas
    inactive: true
+   inactive_email:
+   - kthomas@gwdg.de
+   - kthomas@lxi165.gwdg.de
+   - pthomas@suse.de
  - sn: Thorpe
    cn: Jason Thorpe
    email:
*************** users:
*** 4935,4940 ****
--- 5928,5935 ----
    - WriteAfter
    account: thorpej
    inactive: true
+   inactive_email:
+   - thorpej@wasabisystems.com
  - sn: Thorup
    cn: Kresten Krab Thorup
    email:
*************** users:
*** 4943,4948 ****
--- 5938,5946 ----
    - WriteAfter
    account: krab
    inactive: true
+   inactive_email:
+   - krab@gnu.org
+   - krab@samam.daimi.au.dk
  - sn: Tice
    cn: Caroline Tice
    email:
*************** users:
*** 4953,4958 ****
--- 5951,5958 ----
    - WriteAfter
    account: ctice
    inactive: true
+   inactive_email:
+   - ctice@apple.com
  - sn: Tietz
    cn: Kai Tietz
    email:
*************** users:
*** 4962,4967 ****
--- 5962,5971 ----
    - WriteAfter
    account: ktietz
    inactive: true
+   inactive_email:
+   - kai.tietz@onevision.com
+   - kitetz@redhat.com
+   - ktietz@redhat.com
  - sn: Tkachov
    cn: Kyrylo Tkachov
    email:
*************** users:
*** 4972,4977 ****
--- 5976,5984 ----
    - WriteAfter
    - DCO: ktkachov@nvidia.com
    account: ktkachov
+   forgeid: ktkachov
+   inactive_email:
+   - kyrylo.tkachov@arm.com
  - sn: Tobler
    cn: Andreas Tobler
    email:
*************** users:
*** 4981,4986 ****
--- 5988,5999 ----
    - WriteAfter
    account: andreast
    inactive: true
+   inactive_email:
+   - a.tobler@schweiz.ch
+   - a.tobler@schweiz.org
+   - andreast-list@fgznet.ch
+   - andreast@fgznet.ch
+   - toa@pop.agri.ch
  - sn: Tocar
    cn: Ilya Tocar
    email:
*************** users:
*** 4990,4995 ****
--- 6003,6010 ----
    - WriteAfter
    account: tocarip
    inactive: true
+   inactive_email:
+   - ilya.tocar@intel.com
  - sn: Tomner
    cn: Petter Tomner
    email:
*************** users:
*** 5000,5005 ****
--- 6015,6022 ----
    - DCO: tomner@bahnhof.se
    account: tomner
    inactive: true
+   inactive_email:
+   - tomner@kth.se
  - sn: Tomsich
    cn: Philipp Tomsich
    email:
*************** users:
*** 5008,5013 ****
--- 6025,6033 ----
    roles:
    - WriteAfter
    account: ptomsich
+   inactive_email:
+   - philipp.tomsich@theobroma-systems.com
+   - ptomsich@theobroma-systems.com
  - sn: Towner
    cn: Daniel Towner
    email:
*************** users:
*** 5026,5031 ****
--- 6046,6053 ----
    - WriteAfter
    account: trifunovic
    inactive: true
+   inactive_email:
+   - konrad.trifunovic@gmail.com
  - sn: Trippelsdorf
    cn: Markus Trippelsdorf
    email:
*************** users:
*** 5043,5048 ****
--- 6065,6072 ----
    roles:
    - WriteAfter
    account: slyfox
+   inactive_email:
+   - slyfox@gentoo.org
  - sn: Tromey
    cn: Tom Tromey
    email:
*************** users:
*** 5053,5058 ****
--- 6077,6086 ----
    - Reviewer: libcpp
    - WriteAfter
    account: tromey
+   inactive_email:
+   - tom@tromey.com
+   - tromey@cygnus.com
+   - tromey@ferrule.cygnus.com
  - sn: Tsimbalist
    cn: Igor Tsimbalist
    email:
*************** users:
*** 5071,5076 ****
--- 6099,6108 ----
    - WriteAfter
    - DCO: uecker@gcc.gnu.org
    account: uecker
+   inactive_email:
+   - martin.uecker@med.uni-goettingen.de
+   - muecker@gwdg.de
+   - uecker@eecs.berkeley.edu
  - sn: Ung
    cn: David Ung
    email:
*************** users:
*** 5089,5094 ****
--- 6121,6128 ----
    - WriteAfter
    account: nvachhar
    inactive: true
+   inactive_email:
+   - nvachhar@google.com
  - sn: Van Hees
    cn: Kris Van Hees
    email:
*************** users:
*** 5133,5138 ****
--- 6167,6174 ----
    - WriteAfter
    account: iverbin
    inactive: true
+   inactive_email:
+   - ilya.verbin@intel.com
  - sn: Vieira
    cn: Andre Vieira
    email:
*************** users:
*** 5151,5156 ****
--- 6187,6194 ----
    roles:
    - WriteAfter
    account: villemoes
+   inactive_email:
+   - rasmus.villemoes@prevas.dk
  - sn: Vivekanandarajah
    cn: Kugan Vivekanandarajah
    email:
*************** users:
*** 5160,5165 ****
--- 6198,6205 ----
    - WriteAfter
    - DCO: kvivekananda@nvidia.com
    account: kugan
+   inactive_email:
+   - kuganv@linaro.org
  - sn: Volkov
    cn: Artemiy Volkov
    email:
*************** users:
*** 5168,5173 ****
--- 6208,6216 ----
    roles:
    - WriteAfter
    account: artemiyv
+   inactive_email:
+   - artemiy.volkov@synopsys.com
+   - artemiyv@acm.org
  - sn: Vollweiler
    cn: Marcel Vollweiler
    email:
*************** users:
*** 5194,5199 ****
--- 6237,6246 ----
    - Maintainer: nvptx port
    - WriteAfter
    account: vries
+   inactive_email:
+   - tjvries@xs4all.nl
+   - tom@codesourcery.com
+   - vries@codesourcery.com
  - sn: Vukicevic
    cn: Nenad Vukicevic
    email:
*************** users:
*** 5221,5226 ****
--- 6268,6275 ----
    roles:
    - WriteAfter
    account: waffl3x
+   inactive_email:
+   - waffl3x@protonmail.com
  - sn: Wakely
    cn: Jonathan Wakely
    email:
*************** users:
*** 5231,5236 ****
--- 6280,6291 ----
    - WriteAfter
    - DCO: jwakely@redhat.com
    account: redi
+   forgeid: redi
+   inactive_email:
+   - cow@compsoc.man.ac.uk
+   - jw@kayari.org
+   - jwakely.gcc@gmail.com
+   - redi@kayari.org
  - sn: Walfridsson
    cn: Krister Walfridsson
    email:
*************** users:
*** 5240,5245 ****
--- 6295,6302 ----
    - Maintainer: netbsd
    - WriteAfter
    account: kristerw
+   inactive_email:
+   - cato@df.lth.se
  - sn: Wang
    cn: Feng Wang
    email:
*************** users:
*** 5249,5254 ****
--- 6306,6313 ----
    - WriteAfter
    account: fengwang
    inactive: true
+   inactive_email:
+   - wangfeng@eswincomputing.com
  - sn: Wang
    cn: Feng Wang
    email:
*************** users:
*** 5257,5262 ****
--- 6316,6324 ----
    roles:
    - WriteAfter
    account: fengwang1792
+   inactive_email:
+   - fengwang@gcc.gnu.org
+   - fengwang@nudt.edu.cn
  - sn: Wang
    cn: Hongyu Wang
    email:
*************** users:
*** 5283,5288 ****
--- 6345,6352 ----
    - Maintainer: riscv port
    - WriteAfter
    account: aswaterman
+   inactive_email:
+   - waterman@cs.berkeley.edu
  - sn: Webb
    cn: Stephen M. Webb
    email:
*************** users:
*** 5292,5297 ****
--- 6356,6366 ----
    - WriteAfter
    account: smw
    inactive: true
+   inactive_email:
+   - stephen.webb@bregmasoft.ca
+   - stephen.webb@cybersafe.com
+   - stephen@bregmasoft.com
+   - stephenw@xandros.com
  - sn: Wehle
    cn: John Wehle
    email:
*************** users:
*** 5312,5317 ****
--- 6381,6389 ----
    - Maintainer: reload
    - WriteAfter
    account: uweigand
+   inactive_email:
+   - ulrich.weigand@linaro.org
+   - weigand@informatik.uni-erlangen.de
  - sn: Weil
    cn: Janus Weil
    email:
*************** users:
*** 5321,5326 ****
--- 6393,6400 ----
    - WriteAfter
    account: janus
    inactive: true
+   inactive_email:
+   - jaydub66@gmail.com
  - sn: Weimer
    cn: Florian Weimer
    email:
*************** users:
*** 5329,5334 ****
--- 6403,6410 ----
    roles:
    - WriteAfter
    account: fw
+   inactive_email:
+   - fw@deneb.enyo.de
  - sn: Weinberg
    cn: Zack Weinberg
    email:
*************** users:
*** 5338,5343 ****
--- 6414,6429 ----
    - WriteAfter
    account: zack
    inactive: true
+   inactive_email:
+   - zack@bitmover.com
+   - zack@codesourcery.com
+   - zack@midnite.ec.rhno.columbia.edu
+   - zack@mrtock.ucsd.edu
+   - zack@rabi.columbia.edu
+   - zack@rabi.phys.columbia.edu
+   - zack@wolery.cumb.org
+   - zack@wolery.stanford.edu
+   - zackw@stanford.edu
  - sn: Westbrooks
    cn: Alexander Westbrooks
    email:
*************** users:
*** 5355,5360 ****
--- 6441,6448 ----
    roles:
    - WriteAfter
    account: mark
+   inactive_email:
+   - mjw@redhat.com
  - sn: Wienskoski
    cn: Edmar Wienskoski
    email:
*************** users:
*** 5407,5412 ****
--- 6495,6508 ----
    - WriteAfter: jim.wilson.gcc@gmail.com
    account: wilson
    inactive: true
+   inactive_email:
+   - jim.wilson@linaro.org
+   - jim.wilson@r3-a15.aus-colo
+   - jimw@sifive.com
+   - wilson@codesourcery.com
+   - wilson@cygnus.com
+   - wilson@redhat.com
+   - wilson@specifixinc.com
  - sn: Wirkus
    cn: Przemyslaw Wirkus
    email:
*************** users:
*** 5425,5430 ****
--- 6521,6529 ----
    - WriteAfter
    account: carlo
    inactive: true
+   inactive_email:
+   - carlo@gnu.org
+   - carlo@runaway.xs4all.nl
  - sn: Woodruff
    cn: Jackson Woodruff
    email:
*************** users:
*** 5473,5478 ****
--- 6572,6579 ----
    account: xry111
    aliases:
    - Xi Ruoyao
+   inactive_email:
+   - xry111@mengyan1223.wang
  - sn: Xing
    cn: Mingjie Xing
    email:
*************** users:
*** 5546,5551 ****
--- 6647,6654 ----
    - WriteAfter
    account: jye2
    inactive: true
+   inactive_email:
+   - joey.ye@intel.com
  - sn: Yeung
    cn: Kwok Cheung Yeung
    email:
*************** users:
*** 5554,5559 ****
--- 6657,6664 ----
    roles:
    - WriteAfter
    account: kcy
+   inactive_email:
+   - kcy@codesourcery.com
  - sn: Yong
    cn: Jonathan Yong
    email:
*************** users:
*** 5563,5568 ****
--- 6668,6675 ----
    - Maintainer: cygwin, mingw-w64
    - WriteAfter
    account: jyong
+   inactive_email:
+   - jon_y@users.sourceforge.net
  - sn: Yorsh
    cn: Greta Yorsh
    email:
*************** users:
*** 5582,5587 ****
--- 6689,6696 ----
    - WriteAfter
    account: kyukhin
    inactive: true
+   inactive_email:
+   - kirill.yukhin@intel.com
  - sn: Yuste
    cn: David Yuste
    email:
*************** users:
*** 5603,5608 ****
--- 6712,6719 ----
    - WriteAfter
    account: zadeck
    inactive: true
+   inactive_email:
+   - kenneth.zadeck@naturalbridge.com
  - sn: Zanella
    cn: Adhemerval Zanella
    email:
*************** users:
*** 5612,5617 ****
--- 6723,6730 ----
    - WriteAfter
    account: azanella
    inactive: true
+   inactive_email:
+   - adhemerval.zanella@linaro.org
  - sn: Zeng
    cn: Xiao Zeng
    email:
*************** users:
*** 5629,5634 ****
--- 6742,6750 ----
    - WriteAfter
    account: xczhang
    inactive: true
+   inactive_email:
+   - dennis.zh@live.com
+   - denzha01@e124712.cambridge.arm.com
  - sn: Zhang
    cn: Jie Zhang
    email:
*************** users:
*** 5639,5644 ****
--- 6755,6764 ----
    - WriteAfter
    account: jiez
    inactive: true
+   inactive_email:
+   - jie.zhang@analog.com
+   - jie@codesourcery.com
+   - zhangjie@magima.com.cn
  - sn: Zhang
    cn: Yufeng Zhang
    email:
*************** users:
*** 5737,5742 ****
--- 6857,6865 ----
    - Maintainer: arc port
    - WriteAfter
    account: claziss
+   inactive_email:
+   - claudiu.zissulescu-ianculescu@oracle.com
+   - claziss@synopsys.com
  - sn: Zlomek
    cn: Josef Zlomek
    email:
*************** users:
*** 5746,5751 ****
--- 6869,6878 ----
    - WriteAfter
    account: zlomek
    inactive: true
+   inactive_email:
+   - zlomek@matfyz.cz
+   - zlomekj@suse.cz
+   - zlomj9am@artax.karlin.mff.cuni.cz
  subsystems:
  - name: '*gimpl*'
    class: Subsystem
*************** subsystems:
*** 5758,5764 ****
    labels: []
  - name: Algol 68
    class: Lang
!   labels: []
  - name: Android sub-port
    class: OS
    labels: []
--- 6885,6894 ----
    labels: []
  - name: Algol 68
    class: Lang
!   labels:
!   - Lang/algol68
!   teams:
!   - Maintainers.Algol68
  - name: Android sub-port
    class: OS
    labels: []
*************** subsystems:
*** 5829,5837 ****
  - name: aarch64 ldp/stp
    class: CPU
    labels: []
  - name: aarch64 port
    class: CPU
!   labels: []
  - name: aix
    class: OS
    labels: []
--- 6959,6972 ----
  - name: aarch64 ldp/stp
    class: CPU
    labels: []
+   teams:
+   - Maintainers.AArch64
  - name: aarch64 port
    class: CPU
!   labels:
!   - Target/aarch64
!   teams:
!   - Maintainers.AArch64
  - name: aix
    class: OS
    labels: []
*************** subsystems:
*** 5846,5854 ****
    labels: []
  - name: arm port
    class: CPU
!   labels: []
  - name: arm port (MVE)
!   labels: []
  - name: avr port
    class: CPU
    labels: []
--- 6981,6996 ----
    labels: []
  - name: arm port
    class: CPU
!   labels:
!   - Target/arm
!   teams:
!   - Maintainers.Arm
  - name: arm port (MVE)
!   class: CPU
!   labels:
!   - Target/arm
!   teams:
!   - Maintainers.Arm
  - name: avr port
    class: CPU
    labels: []
*************** subsystems:
*** 5866,5872 ****
    labels: []
  - name: c++ runtime libs
    class: Subsystem
!   labels: []
  - name: c++ runtime libs special modes
    class: Subsystem
    labels: []
--- 7008,7017 ----
    labels: []
  - name: c++ runtime libs
    class: Subsystem
!   labels:
!   - Library/libstdc++
!   teams:
!   - Maintainers.libstdcplusplus
  - name: c++ runtime libs special modes
    class: Subsystem
    labels: []
*************** subsystems:
*** 5918,5924 ****
    labels: []
  - name: forge integration
    class: Subsystem
!   labels: []
  - name: fp-bit
    class: Subsystem
    labels: []
--- 7063,7072 ----
    labels: []
  - name: forge integration
    class: Subsystem
!   labels:
!   - Misc/forge
!   teams:
!   - Maintainers.forge
  - name: fp-bit
    class: Subsystem
    labels: []
diff -Nrcpad gcc-17-20260816/MD5SUMS gcc-17-20260823/MD5SUMS
*** gcc-17-20260816/MD5SUMS	Sun Aug 16 22:32:26 2026
--- gcc-17-20260823/MD5SUMS	Sun Aug 23 22:32:31 2026
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the
! # gcc-17-20260816.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-17-20260823.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
*************** b91d600742b62d1860809cb184055a3d  .forge
*** 17,38 ****
  4b254279920374351da794ea1ef21fae  .forgejo/workflows/format-checks.yaml
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
  d3c20a5ea9672cd8045fe8226c76e6b7  .github/CONTRIBUTING.md
! ac5a8807f431d3dab46a7425b96379e4  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 5e6842445bda61f2151a08248f5a97eb  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b4e2d2e2fb54cd43b917f2899be2195d  LAST_UPDATED
! cea05570a2dcf2e94f92e785cccce4e5  MAINTAINERS
! 4f2b740b26f8466fa70b90e611d2b807  MAINTAINERS.yml
! f1b0fe5b41f7272f173407bd21947846  Makefile.def
! 675aaa503a59b3649e74d3b85f824294  Makefile.in
  094bca3adcf0638f5361563ad6717350  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  7be8773244474bc82211a4726f43c3c8  SECURITY.txt
--- 17,38 ----
  4b254279920374351da794ea1ef21fae  .forgejo/workflows/format-checks.yaml
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
  d3c20a5ea9672cd8045fe8226c76e6b7  .github/CONTRIBUTING.md
! 05baeff13fc87e99b69ad13a9ed69b9d  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! 296c53f3a11d2192131d1da02cf3bcce  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! 005c760ddfe83d5681f54825c494306c  LAST_UPDATED
! a7d0ab83fc3c7da30451b3e07652bfe1  MAINTAINERS
! 703c372a29f5027add1f8fd516124910  MAINTAINERS.yml
! 0ee9767a4a3a98a9c80a24e87901dda4  Makefile.def
! c663e01440fb168b18f0f238f3aa29b9  Makefile.in
  094bca3adcf0638f5361563ad6717350  Makefile.tpl
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  7be8773244474bc82211a4726f43c3c8  SECURITY.txt
*************** dd20b4aa952e750070486e3525cba7bd  config
*** 161,170 ****
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  1c3690fce82ddfdbef4dc182a4bc6785  configure
  32aa07435dfdbb17b3484dc82ad8e8d4  configure.ac
! 01f759d6009f83cf532449f2f0e75024  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! 95f2ccad93e447dc3cbd991a1e66fae2  contrib/add-write-after.py
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
  fe0f3407e74565a0439ac210148486ca  contrib/analyze_brprob_spec.py
  f32ea8aa594c39765895562afc43e221  contrib/bench-stringop
--- 161,170 ----
  db74a73c3c9c3cc71edec37c2436e082  config/zstd.m4
  1c3690fce82ddfdbef4dc182a4bc6785  configure
  32aa07435dfdbb17b3484dc82ad8e8d4  configure.ac
! a19bb491c4efcbcab05940b3e88f4cca  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! 8fcbbd5bdaa79194f5f487810733e455  contrib/add-write-after.py
  0928ae42250fbb57246cf6e9bff2276b  contrib/analyze_brprob.py
  fe0f3407e74565a0439ac210148486ca  contrib/analyze_brprob_spec.py
  f32ea8aa594c39765895562afc43e221  contrib/bench-stringop
*************** c453348f88ec592d49be554008473ba8  contri
*** 211,216 ****
--- 211,217 ----
  332fd0835826d637b5b6cf8db14358a5  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  d577ea19d05f19a8364f73c9901223b7  contrib/filter_params.py
+ e98c0354c830a95a5fe2e30149b7c076  contrib/forge_teams.py
  8dc743863dae4b7f6ed6a75acf483f1b  contrib/gcc-changelog/git_check_commit.py
  1462df56c813a6a6cdf97c7baa877d7c  contrib/gcc-changelog/git_commit.py
  4f7f7ef965f965a23efd54be62ace12d  contrib/gcc-changelog/git_email.py
*************** fa945bac89ee68b410027dcfe1312f4b  contri
*** 250,256 ****
  683b1e9e6343d2a6e1cae194ca512d06  contrib/jit-coverage-report.py
  d029ec51f5de739992e4bd55131d68b6  contrib/legacy/mklog
  2e6880a36fbaf31bc16067c51bdb986b  contrib/legacy/mklog.pl
! 8c358bf9703984df9c22ba01f969bb07  contrib/maintainer_utils.py
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  f70a5a540f49df19724d827b2262b9fa  contrib/make_sunver.pl
  5eb1bf9df19e0134a2f87b849d222312  contrib/mark_spam.py
--- 251,257 ----
  683b1e9e6343d2a6e1cae194ca512d06  contrib/jit-coverage-report.py
  d029ec51f5de739992e4bd55131d68b6  contrib/legacy/mklog
  2e6880a36fbaf31bc16067c51bdb986b  contrib/legacy/mklog.pl
! 725144c0dfa4fac59e3ebeca77c8a92f  contrib/maintainer_utils.py
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
  f70a5a540f49df19724d827b2262b9fa  contrib/make_sunver.pl
  5eb1bf9df19e0134a2f87b849d222312  contrib/mark_spam.py
*************** f15bc3c5de22eac0bdd4f611502139a0  gcc/AB
*** 534,540 ****
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 7244bf327b94e1f4c811746d8664638c  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
--- 535,541 ----
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! 5477f2aa3e6734c59e26bb3fade73ddd  gcc/ChangeLog
  51281e73aa07fb62394bd72f3c9299ba  gcc/ChangeLog-1997
  f77af8c9ac412064886b00c5506123b5  gcc/ChangeLog-1998
  00a2e4ead1b289bf69bca0196fed6f9f  gcc/ChangeLog-1999
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 572,590 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 71efddc5c005ca2d71ab635e9565ef64  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! 0231b3d8a4a61179efe56cfcc20ac88b  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  a9a7c60459b2407bfdf4e68c0ed4ad0a  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 0f1a4390586c904953cdd3e22a04dbbc  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
--- 573,591 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! a17063c69940cf6ebd0e4234c47329df  gcc/DATESTAMP
  deb513e591f23901188e22323bd3b1d4  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
  a817c5577f2b35f8d2481c787e3ff7e2  gcc/LANGUAGES
! 9d838c7b304ab9d4bb331742b95bd616  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
  c8c9dd1eaee4ffd4d5d9f3ab70fddd4b  gcc/README.Portability
  a9a7c60459b2407bfdf4e68c0ed4ad0a  gcc/acinclude.m4
  e74733ebf762151e601c9e0aa1461a20  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 53fbae1169f28bd710b77d24d9c17164  gcc/ada/ChangeLog
  c2094c0d3135f9ac89917f162046ee04  gcc/ada/ChangeLog-2001
  fa410b57f5d814d5d3ac3b45f486cdcf  gcc/ada/ChangeLog-2002
  2dbefa7bdc8dc28ec746002028861278  gcc/ada/ChangeLog-2003
*************** acf67cc2ad3c40fe466a03f76c6450e1  gcc/ad
*** 2914,2920 ****
  65869457d1676879dc545835475f7421  gcc/ada/sem.ads
  1f1ea5b059ab31ee369cc51ba1071c8c  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! 97476ab6ca09c705f50f38ebac8f6f42  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  39892cb912c9fe4b0d512cfc104e5bd7  gcc/ada/sem_aux.adb
  5df4642fb17b29da9f787e48f24551b9  gcc/ada/sem_aux.ads
--- 2915,2921 ----
  65869457d1676879dc545835475f7421  gcc/ada/sem.ads
  1f1ea5b059ab31ee369cc51ba1071c8c  gcc/ada/sem_aggr.adb
  d5ddab4fcf440bf2f49a9a190fd12829  gcc/ada/sem_aggr.ads
! 8d49ebc7cb8502f333c2a0297ce4e4f0  gcc/ada/sem_attr.adb
  f5a25d26b815f5d376e2873f3ab69359  gcc/ada/sem_attr.ads
  39892cb912c9fe4b0d512cfc104e5bd7  gcc/ada/sem_aux.adb
  5df4642fb17b29da9f787e48f24551b9  gcc/ada/sem_aux.ads
*************** f682892145d1a369cdc5b3f73935f8d9  gcc/ad
*** 2926,2932 ****
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! e102106501ec17369ddacce53c1c6c05  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
  fe468d84a62f2f72acdbd42edefd07a3  gcc/ada/sem_ch13.adb
  5a191101027e418c8b7f17e2de83974e  gcc/ada/sem_ch13.ads
--- 2927,2933 ----
  ad2bb60b9c4c67653f4da4b0e70277d7  gcc/ada/sem_ch10.ads
  e3dc2d270994bba222e70ec02479ac37  gcc/ada/sem_ch11.adb
  7efb6a0f371113d8b55b421ee56dd1dd  gcc/ada/sem_ch11.ads
! e75b77c72c553506ec86eb1f76e08969  gcc/ada/sem_ch12.adb
  2622dbf1c1774a89ada3cba34f1da316  gcc/ada/sem_ch12.ads
  fe468d84a62f2f72acdbd42edefd07a3  gcc/ada/sem_ch13.adb
  5a191101027e418c8b7f17e2de83974e  gcc/ada/sem_ch13.ads
*************** b7dd8bd2dd68f81643704bf0b73553a1  gcc/al
*** 3155,3161 ****
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  b4e46e469a1489710e8e4c6f91fe1769  gcc/alloc-pool.cc
  d9a0827561e1202f405290a0d2aabb73  gcc/alloc-pool.h
! de537d6998a12b9321d5f7c4d2f523cb  gcc/analyzer/ChangeLog
  2efbdc8b8a68e1025a7219e0b1f99360  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
--- 3156,3162 ----
  71901705cb0e11732bae53ff9de25faf  gcc/align.h
  b4e46e469a1489710e8e4c6f91fe1769  gcc/alloc-pool.cc
  d9a0827561e1202f405290a0d2aabb73  gcc/alloc-pool.h
! 6bcd650a4cca21116409e652873a4f89  gcc/analyzer/ChangeLog
  2efbdc8b8a68e1025a7219e0b1f99360  gcc/analyzer/access-diagram.cc
  c41fa6be7ca91f40a15a7b8f03732d25  gcc/analyzer/access-diagram.h
  d97e417faf9694fdbd68f91aee129bd2  gcc/analyzer/ana-state-to-diagnostic-state.cc
*************** c10c515fd18d92850db760e5c083c1c2  gcc/an
*** 3169,3175 ****
  bedbea78751b139538f4c906011432fe  gcc/analyzer/analyzer-pass.cc
  380f2a7c04a014441f78569ef397a8a4  gcc/analyzer/analyzer-selftests.cc
  e87a9090a957efa1653cc5a6e36ec346  gcc/analyzer/analyzer-selftests.h
! 227c620122777a459d2dc5f8575fc075  gcc/analyzer/analyzer.cc
  1708e1bf7b93e19f073cc11833cd2725  gcc/analyzer/analyzer.opt
  5847f7da212ee502959192dec8edf0e2  gcc/analyzer/analyzer.opt.urls
  4a17f3766ca5b4ec528ac459c519fc61  gcc/analyzer/bar-chart.cc
--- 3170,3176 ----
  bedbea78751b139538f4c906011432fe  gcc/analyzer/analyzer-pass.cc
  380f2a7c04a014441f78569ef397a8a4  gcc/analyzer/analyzer-selftests.cc
  e87a9090a957efa1653cc5a6e36ec346  gcc/analyzer/analyzer-selftests.h
! 13acacaee7827f2cd2751a2a73381ca0  gcc/analyzer/analyzer.cc
  1708e1bf7b93e19f073cc11833cd2725  gcc/analyzer/analyzer.opt
  5847f7da212ee502959192dec8edf0e2  gcc/analyzer/analyzer.opt.urls
  4a17f3766ca5b4ec528ac459c519fc61  gcc/analyzer/bar-chart.cc
*************** bc77cd1e5aec40e5623c49cb8974b3d4  gcc/an
*** 3188,3194 ****
  ba0e3f8ef30941728a1363efc633fa00  gcc/analyzer/checker-event.h
  27f8555a4210038eaa81c4f1f66b0d6b  gcc/analyzer/checker-path.cc
  29924be6344174d2253288429074c0f4  gcc/analyzer/checker-path.h
! b80a4cbfffb740548c8d1606ca22aba9  gcc/analyzer/common.h
  5ff0274ed0a527fd34bb3ec30c36543f  gcc/analyzer/complexity.cc
  f945a407a1ad45be621e572190f6e11f  gcc/analyzer/complexity.h
  f8b499c8f963748c73700db85edd79fe  gcc/analyzer/constraint-manager.cc
--- 3189,3195 ----
  ba0e3f8ef30941728a1363efc633fa00  gcc/analyzer/checker-event.h
  27f8555a4210038eaa81c4f1f66b0d6b  gcc/analyzer/checker-path.cc
  29924be6344174d2253288429074c0f4  gcc/analyzer/checker-path.h
! 10a07e296bf8b62c2b1ad95304485b13  gcc/analyzer/common.h
  5ff0274ed0a527fd34bb3ec30c36543f  gcc/analyzer/complexity.cc
  f945a407a1ad45be621e572190f6e11f  gcc/analyzer/complexity.h
  f8b499c8f963748c73700db85edd79fe  gcc/analyzer/constraint-manager.cc
*************** f0d253f05a474982aa1e1e4c99a0ff98  gcc/an
*** 3210,3218 ****
  4a24b9bb8673fa192a1f8c010bad8a98  gcc/analyzer/infinite-recursion.cc
  21349bc3885995e539fec2d9f3ca7628  gcc/analyzer/inlining-iterator.h
  8af331ea68e39926dae8949ff0e49c24  gcc/analyzer/kf-analyzer.cc
! 8916a9c075a04e691e41ea4601cdb475  gcc/analyzer/kf-lang-cp.cc
  0068087273bfa4ad5bf21ca330a06e60  gcc/analyzer/kf.cc
! 0652b497ab69835a3ec50cb920b8a973  gcc/analyzer/known-function-manager.cc
  d065f64c3be7da8efff67c73024dd990  gcc/analyzer/known-function-manager.h
  ac63559bfdfb71b35e42cdde1fcbfc6a  gcc/analyzer/ops.cc
  2e431f5c97833b392b28d0b7c15ab28a  gcc/analyzer/ops.h
--- 3211,3219 ----
  4a24b9bb8673fa192a1f8c010bad8a98  gcc/analyzer/infinite-recursion.cc
  21349bc3885995e539fec2d9f3ca7628  gcc/analyzer/inlining-iterator.h
  8af331ea68e39926dae8949ff0e49c24  gcc/analyzer/kf-analyzer.cc
! 87fe649e0141c4b1123b4f56c19ff3e6  gcc/analyzer/kf-lang-cp.cc
  0068087273bfa4ad5bf21ca330a06e60  gcc/analyzer/kf.cc
! 7da0ccadf6f72cc963d2b0f89cbdbf25  gcc/analyzer/known-function-manager.cc
  d065f64c3be7da8efff67c73024dd990  gcc/analyzer/known-function-manager.h
  ac63559bfdfb71b35e42cdde1fcbfc6a  gcc/analyzer/ops.cc
  2e431f5c97833b392b28d0b7c15ab28a  gcc/analyzer/ops.h
*************** fa5a2dbbece7e674ee0ba490d0777420  gcc/an
*** 3233,3240 ****
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! a5a8b7349ae26babfb19c89fb2b5458c  gcc/analyzer/region-model.cc
! e1ca448c3317aa8eb83581a362b3f77c  gcc/analyzer/region-model.h
  f8d7bd1e0de4ee53bff75c10df2ce248  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
  dc13af22c8f08d0e5313c40e412517df  gcc/analyzer/setjmp-longjmp.cc
--- 3234,3241 ----
  40d67196cea5adf495b1ff0a0d26039c  gcc/analyzer/region-model-manager.h
  bd7b3b87348aab71c19df788f0817233  gcc/analyzer/region-model-reachability.cc
  93431d9eca086e4c7811afc3a66197ea  gcc/analyzer/region-model-reachability.h
! c30a68d92cd5c775504a5835e622eade  gcc/analyzer/region-model.cc
! 9617dbd95bd997981b570e3c7cf8aac9  gcc/analyzer/region-model.h
  f8d7bd1e0de4ee53bff75c10df2ce248  gcc/analyzer/region.cc
  4282b6abcc1e39df9d5727003ce6c000  gcc/analyzer/region.h
  dc13af22c8f08d0e5313c40e412517df  gcc/analyzer/setjmp-longjmp.cc
*************** c21be8736ac701b9ddae4e83d6522cd4  gcc/as
*** 3284,3292 ****
  feed071e9f711f8ebbc91f8636422f93  gcc/attribs.h
  bd317e24faffad6f2106396f1c3401b1  gcc/auto-inc-dec.cc
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
! b27892a8f728df598e54273272b34115  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
! c46de58da61041da0ad341a5f8114382  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  6770584a7ddc4817aef150c43e430367  gcc/basic-block.h
--- 3285,3293 ----
  feed071e9f711f8ebbc91f8636422f93  gcc/attribs.h
  bd317e24faffad6f2106396f1c3401b1  gcc/auto-inc-dec.cc
  fc353966a860a12cbc161a87f5619b51  gcc/auto-obstack.h
! 1ff22d5b0f3c9e897a8fe69a6166469a  gcc/auto-profile.cc
  d290a68be0a787113b46b8c5ec98f710  gcc/auto-profile.h
! d17418917cd3beb2b440e9cb6a73e4df  gcc/avoid-store-forwarding.cc
  df8fff5733f0af601cd10d3e2611b94a  gcc/avoid-store-forwarding.h
  8ec9314e9edefe43a037289f48e6602a  gcc/backend.h
  6770584a7ddc4817aef150c43e430367  gcc/basic-block.h
*************** e5a012c1da31f9a8d61212cd17d2761a  gcc/cf
*** 3391,3412 ****
  f06c849f4ab033a8269f676731b08388  gcc/cfgloopmanip.h
  bf51c09e81eb3433da948582cff58444  gcc/cfgrtl.cc
  c41525a1de6e78cabd4414d6a8c3dac9  gcc/cfgrtl.h
! a69e4366eff6f80a49e4f4467a903748  gcc/cgraph.cc
  0c9fe7329f8b2ff0fb69961350196249  gcc/cgraph.h
  b50dcacbe77c96809023aa599a556717  gcc/cgraphbuild.cc
  6bbd9709ea4ceecf5a5aa5db6e94305f  gcc/cgraphclones.cc
  a0decca90d109aea1db48b0c0b1aa825  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! b1697a25fbba152e2f57456a979b815e  gcc/cobol/ChangeLog
  fcb021496628ea0c70ca22a6f8b75eb5  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! adfd86ea937fe023a507370bde9412a3  gcc/cobol/cbldiag.h
  5d42f453c7204fe5b6a0098f45c3d54b  gcc/cobol/cdf-copy.cc
! 74e5c10d81ca3bf2b3de3eb4231b3227  gcc/cobol/cdf.y
  314ba2fe46efd7508b3cd6ef99aa964f  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! c5a8d054534ea6e8b7cdcf30091a8065  gcc/cobol/cobol1.cc
  7a689655afcafc1b63d3ebe6b42ad0c2  gcc/cobol/compare.cc
  30fe1e768a76bb15b7d6d2d12bb53a3a  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
--- 3392,3413 ----
  f06c849f4ab033a8269f676731b08388  gcc/cfgloopmanip.h
  bf51c09e81eb3433da948582cff58444  gcc/cfgrtl.cc
  c41525a1de6e78cabd4414d6a8c3dac9  gcc/cfgrtl.h
! b017c04fd62ddad9a7991a117deec1c3  gcc/cgraph.cc
  0c9fe7329f8b2ff0fb69961350196249  gcc/cgraph.h
  b50dcacbe77c96809023aa599a556717  gcc/cgraphbuild.cc
  6bbd9709ea4ceecf5a5aa5db6e94305f  gcc/cgraphclones.cc
  a0decca90d109aea1db48b0c0b1aa825  gcc/cgraphunit.cc
  45b21ab7ea818c3a3ce60bf8d3cbd252  gcc/channels.h
  f2981f79a749a2269d7ea349ab37ca3e  gcc/cif-code.def
! ec02ba422030485a1f16887e56b17655  gcc/cobol/ChangeLog
  fcb021496628ea0c70ca22a6f8b75eb5  gcc/cobol/Make-lang.in
  0a84e784d2bc4066654d2377fc6a2930  gcc/cobol/TODO
! dd2b964b0e5eda571b510dbcc357149b  gcc/cobol/cbldiag.h
  5d42f453c7204fe5b6a0098f45c3d54b  gcc/cobol/cdf-copy.cc
! bdb2531d89f681dbf53b5e94085c3eed  gcc/cobol/cdf.y
  314ba2fe46efd7508b3cd6ef99aa964f  gcc/cobol/cdfval.h
  39a7cc8aae37a642491e77796d652ebe  gcc/cobol/cobol-system.h
! c12b82f2ab467c082bebde524e6c4bcb  gcc/cobol/cobol1.cc
  7a689655afcafc1b63d3ebe6b42ad0c2  gcc/cobol/compare.cc
  30fe1e768a76bb15b7d6d2d12bb53a3a  gcc/cobol/compare.h
  8b7f26d4855e5bb69a66eecc586d9742  gcc/cobol/config-lang.in
*************** d662c0c5ca1bc4d52a83fa1d89e0db14  gcc/co
*** 3421,3427 ****
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
  a1984d9fb354cff78bcf2184d3cffa21  gcc/cobol/genapi.cc
  d123a110b5bdd12bc4b6d11604cfa72a  gcc/cobol/genapi.h
! 9c04aa8d3e444a0787f3f3ebf19db66d  gcc/cobol/gengen.cc
  8f8657092699ecf5713e37b4ccc90baa  gcc/cobol/gengen.h
  138a86216ef1a87dbafc564fef54f80c  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
--- 3422,3428 ----
  6c87ff946886a67b55671336b1424703  gcc/cobol/gcobolspec.cc
  a1984d9fb354cff78bcf2184d3cffa21  gcc/cobol/genapi.cc
  d123a110b5bdd12bc4b6d11604cfa72a  gcc/cobol/genapi.h
! b16c0b6e905e571f500c48b45cc7c574  gcc/cobol/gengen.cc
  8f8657092699ecf5713e37b4ccc90baa  gcc/cobol/gengen.h
  138a86216ef1a87dbafc564fef54f80c  gcc/cobol/genmath.cc
  78d263e35c67698f367e118c95157cb4  gcc/cobol/genmath.h
*************** eb64a00a8301726556e9befda294143a  gcc/co
*** 3429,3456 ****
  d4281e18d5605e9736af62191e62e4b7  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 849f65fbc76c0b46ba94bad8fd12ddec  gcc/cobol/lang-specs.h
! 605095c5db8ee10a0dc7c192401f1cc4  gcc/cobol/lang.opt
  fd4809576031a8df82aa91899e5e6a5f  gcc/cobol/lang.opt.urls
! 35fb28b97e39f7e8939c659948b12aa9  gcc/cobol/lexio.cc
  e062f9692ebf1a0a57ae640afec53eea  gcc/cobol/lexio.h
! b2985748687d8afd5dcb169600e891a1  gcc/cobol/messages.cc
  0c2abdb82a005eeaccf5a086f5d9f49c  gcc/cobol/move.cc
! c162f8fc6c37c93aa5b2e53ec1924002  gcc/cobol/parse.y
! dc2b7b7145657351782d9be90349d8ac  gcc/cobol/parse_ante.h
  07e2f8ea22b70968a03d9ddf07a64315  gcc/cobol/parse_util.h
! 0050d3cb98902bbc8c4e7d0858075327  gcc/cobol/scan.l
! 0ab7f4637b1decaff8e37da75429d750  gcc/cobol/scan_ante.h
! eb170968edbe38ae3d438691e00e4930  gcc/cobol/scan_post.h
  101567c93410c3bf96c11ed170b57f3d  gcc/cobol/show_parse.h
  67018417e6b9207073ab29a9c383a8e1  gcc/cobol/structs.cc
  5c0d1b14653ab0afb694ae1bfadcbad5  gcc/cobol/structs.h
! 0c9530563086e744cffa6152f7e47941  gcc/cobol/symbols.cc
  1b909acead294adde262afc8ba965ca3  gcc/cobol/symbols.h
  2862172acfe51d0110621aa14e8b9655  gcc/cobol/symfind.cc
! e46c348276950beff20df278e4e041c8  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! 4cbdd7e5535d1027f14d81151f4ed8cf  gcc/cobol/util.cc
  483ee4b003fe2afabe91bf455aa5cebb  gcc/cobol/util.h
  8eceaeb8e762ac925b791d2a5d2a6e16  gcc/collect-utils.cc
  ac937838bf0c954b723fba6b6a088b4c  gcc/collect-utils.h
--- 3430,3457 ----
  d4281e18d5605e9736af62191e62e4b7  gcc/cobol/genutil.h
  7b9c1ead6f9d3661133f7f732811719c  gcc/cobol/help.gen
  0c56a591cf166a8d83553c2afd4b3ce3  gcc/cobol/inspect.h
! 337ae42f895ed6b1bf4777dda0bc0e00  gcc/cobol/lang-specs.h
! 6770f5894e15fc888a906eaea559333b  gcc/cobol/lang.opt
  fd4809576031a8df82aa91899e5e6a5f  gcc/cobol/lang.opt.urls
! b882474654709098298572822c5a1ed3  gcc/cobol/lexio.cc
  e062f9692ebf1a0a57ae640afec53eea  gcc/cobol/lexio.h
! 7abce59a112aec6c05f4e7a1d79f1841  gcc/cobol/messages.cc
  0c2abdb82a005eeaccf5a086f5d9f49c  gcc/cobol/move.cc
! 35ad55a8fd6c7b7f002e5beb99ff5ec0  gcc/cobol/parse.y
! 389bfa1f2962b8adfdd34eb680390637  gcc/cobol/parse_ante.h
  07e2f8ea22b70968a03d9ddf07a64315  gcc/cobol/parse_util.h
! 3121e0fb1350b93767c7ffff7fd14e2b  gcc/cobol/scan.l
! edc14f2d1d1652d88499eb861620fdf7  gcc/cobol/scan_ante.h
! 9690a33431169b9a17759255ddebbcd8  gcc/cobol/scan_post.h
  101567c93410c3bf96c11ed170b57f3d  gcc/cobol/show_parse.h
  67018417e6b9207073ab29a9c383a8e1  gcc/cobol/structs.cc
  5c0d1b14653ab0afb694ae1bfadcbad5  gcc/cobol/structs.h
! b1ba76fea58365d3a89595753f945cef  gcc/cobol/symbols.cc
  1b909acead294adde262afc8ba965ca3  gcc/cobol/symbols.h
  2862172acfe51d0110621aa14e8b9655  gcc/cobol/symfind.cc
! dc02077e1f0561ed3b057fd824cc134e  gcc/cobol/token_names.h
  434f4899280e27d0717b2e56d5bf12f2  gcc/cobol/udf/stored-char-length.cbl
! a54468d736d6b6137fa446192cd40418  gcc/cobol/util.cc
  483ee4b003fe2afabe91bf455aa5cebb  gcc/cobol/util.h
  8eceaeb8e762ac925b791d2a5d2a6e16  gcc/collect-utils.cc
  ac937838bf0c954b723fba6b6a088b4c  gcc/collect-utils.h
*************** a56f67bf9504f1f91df64d23b9ce6f3b  gcc/co
*** 3460,3469 ****
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
! ea95d5e9d3cea68dc06bd3738d029508  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
! bfdfb20d3f5bb9d1af813c2365a1b97a  gcc/common.opt
! 5f891fd92b2d5a16202d826d2511e3d1  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
--- 3461,3470 ----
  d48c86bc52a7b8ee38281d6069d3eb6a  gcc/collect2.h
  9b54c6ade2ed5ee11859b498e663936e  gcc/color-macros.h
  903401554d90de06743fb9a836e6a45b  gcc/combine-stack-adj.cc
! 100506a8d163543727e88837c245a4b3  gcc/combine.cc
  9f2835a8fa18cfce2249127014eb7edd  gcc/common.md
! f6d493aabc47355d8d59d0c5350d0314  gcc/common.opt
! 0adac6d65f53c31ab204318202298c08  gcc/common.opt.urls
  d3b28fb0d49a8d683dde6011400fd7e7  gcc/common/common-target-def.h
  93cf11d6a27d42f73799ae012d2f876e  gcc/common/common-target.def
  d8f7142c05c4102806a8b26817df17a6  gcc/common/common-target.h
*************** c116871b1bccc88a0b8f946d6a68d0d0  gcc/co
*** 3521,3527 ****
  a9614075e7c73706d66b5947ee7833e8  gcc/common/config/visium/visium-common.cc
  d3b8ce30c6110489fd0b57d6792f3f29  gcc/common/config/xstormy16/xstormy16-common.cc
  5f57f58fab0281a10ab69169f1a9093a  gcc/common/config/xtensa/xtensa-common.cc
! 88eac990ca6879dcd747cf5113888b1e  gcc/compare-elim.cc
  6137f3da8f70ec4262acab21bb549148  gcc/conditions.h
  4250c8b8d57bf1315174cf436a74a88b  gcc/config.build
  03c394e48a27f3ec7b01db8f77f1bc90  gcc/config.gcc
--- 3522,3528 ----
  a9614075e7c73706d66b5947ee7833e8  gcc/common/config/visium/visium-common.cc
  d3b8ce30c6110489fd0b57d6792f3f29  gcc/common/config/xstormy16/xstormy16-common.cc
  5f57f58fab0281a10ab69169f1a9093a  gcc/common/config/xtensa/xtensa-common.cc
! 5370af2e3d8323d9b237214fc0c1b479  gcc/compare-elim.cc
  6137f3da8f70ec4262acab21bb549148  gcc/conditions.h
  4250c8b8d57bf1315174cf436a74a88b  gcc/config.build
  03c394e48a27f3ec7b01db8f77f1bc90  gcc/config.gcc
*************** aff01d1ea9fc10bd68293fb6710a46b2  gcc/co
*** 3532,3543 ****
  c47b4191f7bac0196ab63ca2c66bfa98  gcc/config/aarch64/aarch64-abi-ms.cc
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  2b7f6a82618753cc717ecba05c7698cd  gcc/config/aarch64/aarch64-acle-builtins.cc
! d68b90a2c90a9f993a1ee0c905dc8c33  gcc/config/aarch64/aarch64-acle-builtins.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  8cde3eaba718a22299b177f85495f10f  gcc/config/aarch64/aarch64-builtins.cc
  774e028817e0a146d9b3d54a734fa748  gcc/config/aarch64/aarch64-builtins.h
! 6ccffeab5d68850661318c8b64d3ab40  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
  b63633b6fb7a5d491fa65687788a4128  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
--- 3533,3544 ----
  c47b4191f7bac0196ab63ca2c66bfa98  gcc/config/aarch64/aarch64-abi-ms.cc
  148fedc3acd410f7a82133d0e78b02df  gcc/config/aarch64/aarch64-abi-ms.h
  2b7f6a82618753cc717ecba05c7698cd  gcc/config/aarch64/aarch64-acle-builtins.cc
! 721c8677663b8b50fd84bef3e4322e4f  gcc/config/aarch64/aarch64-acle-builtins.h
  9b6ffa67b7e7f7cc2348fa0dc728072e  gcc/config/aarch64/aarch64-arches.def
  c8a924cfcb693679febdcde3a0cc0809  gcc/config/aarch64/aarch64-builtin-pairs.def
  8cde3eaba718a22299b177f85495f10f  gcc/config/aarch64/aarch64-builtins.cc
  774e028817e0a146d9b3d54a734fa748  gcc/config/aarch64/aarch64-builtins.h
! 2ae10fc85cde61d51069fc18ad0d3a23  gcc/config/aarch64/aarch64-c.cc
  5f567f76d6adf2e43af2f3a4704e87d6  gcc/config/aarch64/aarch64-coff.h
  b63633b6fb7a5d491fa65687788a4128  gcc/config/aarch64/aarch64-cores.def
  cd1537928dd0fadfa53b88b278af0ed2  gcc/config/aarch64/aarch64-cost-tables.h
*************** b824341b8f6fdb8eb1667425adf63db8  gcc/co
*** 3585,3615 ****
  20b82c79e0cef4c8a586aa7244c64619  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8e5bb37aa84cd6bc8571a8bab6e8e981  gcc/config/aarch64/aarch64-simd-builtins.def
  2fae3501b318ccd9be92a4b49710913e  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! 6777ff72dcec06c0b3ef15838f3aae95  gcc/config/aarch64/aarch64-simd.md
! f27b31555e077ce25b7e0120a532cfdf  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
! 725c198baccf0c8de44302c52912d142  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  c99e182b978e80e38324d5c7ec79f6c0  gcc/config/aarch64/aarch64-sve-builtins-base.def
  c21ba709d29fe9718239fabf22dcb9a9  gcc/config/aarch64/aarch64-sve-builtins-base.h
! e7083cbd51cf9e3a51bec45b4ad7e02e  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! ea733af8be014cecd63f53058e339d01  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! 4b72c4c599af0401dd35b4e272853e10  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! 3abf6e7f915bbd7ba8aff5846525a390  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
! 9b8d2b36dbb4654027ff7a093a335092  gcc/config/aarch64/aarch64-sve-builtins-sme.def
! 1cb175058a4da1ec265f07a8c37df781  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! 5c4f9479c1f044cb09e77e5d15d0a8d5  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 739177f982f9b5ef65ce0e6966eee1fa  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! a5526385f9aeaa19441a2b4d1780d24d  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 1dbf75556bc08b498647ecc2bbdcea3e  gcc/config/aarch64/aarch64-sve-builtins.def
  41895685be9fbf8e377dd5b352d11c60  gcc/config/aarch64/aarch64-sve.md
  295a31a85c9e603552e62d4514c1860c  gcc/config/aarch64/aarch64-sve2.md
! 9482a051d967c399dfed0923c294de3f  gcc/config/aarch64/aarch64-sys-regs.def
  4d85753c314f127c5c701c3fc4c29ae5  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  3e678460d03287c5817595f99c59d4c5  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! 6786ce1fb9a8d00e4eae1a5a13a7e9d4  gcc/config/aarch64/aarch64.cc
! c88fdf5ee84080dc4205f26170767440  gcc/config/aarch64/aarch64.h
  cb531746658627cf8c8fce448e021c62  gcc/config/aarch64/aarch64.md
  dabea943ce1adc1cd1db5e4de971fbeb  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
--- 3586,3616 ----
  20b82c79e0cef4c8a586aa7244c64619  gcc/config/aarch64/aarch64-simd-builtin-types.def
  8e5bb37aa84cd6bc8571a8bab6e8e981  gcc/config/aarch64/aarch64-simd-builtins.def
  2fae3501b318ccd9be92a4b49710913e  gcc/config/aarch64/aarch64-simd-pragma-builtins.def
! ea1663b59ee220250341d565d59df68f  gcc/config/aarch64/aarch64-simd.md
! 4f58257263f852e3e4d1d85d153ad10e  gcc/config/aarch64/aarch64-sme.md
  49d4ace4311e9b1d77ff31b3b8883769  gcc/config/aarch64/aarch64-speculation.cc
! d3c7baa322f67b8985a917cfd80206bf  gcc/config/aarch64/aarch64-sve-builtins-base.cc
  c99e182b978e80e38324d5c7ec79f6c0  gcc/config/aarch64/aarch64-sve-builtins-base.def
  c21ba709d29fe9718239fabf22dcb9a9  gcc/config/aarch64/aarch64-sve-builtins-base.h
! 8ec92d8ad5ee085bbbe87ae078dd16bc  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 1c364e4d6d203accb7752c358593403d  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! fbf69c510d13f789db338a2d76bcfbc0  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! 723b209c4ff60bc5f035560039ae29ef  gcc/config/aarch64/aarch64-sve-builtins-sme.cc
! 8e8e4dd8188b6ac591fa82d8288fd6ef  gcc/config/aarch64/aarch64-sve-builtins-sme.def
! f6bf57cc3a6b2aad401f1701c2b3557e  gcc/config/aarch64/aarch64-sve-builtins-sme.h
! 0d47ddf10ab5cd7ca69284768aaf9236  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! fcd7e0b0ab3fc708fdb2995741ef1e99  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! a4a345dbdcb2992f4e1119944ecfb4d7  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 291a20863f179a8a723fca6a3b0e013c  gcc/config/aarch64/aarch64-sve-builtins.def
  41895685be9fbf8e377dd5b352d11c60  gcc/config/aarch64/aarch64-sve.md
  295a31a85c9e603552e62d4514c1860c  gcc/config/aarch64/aarch64-sve2.md
! 5aaf169c0abf8e22f5d9271ea6bc3c79  gcc/config/aarch64/aarch64-sys-regs.def
  4d85753c314f127c5c701c3fc4c29ae5  gcc/config/aarch64/aarch64-tune.md
  dec4c8fd03ac5636ba08d9523bee06be  gcc/config/aarch64/aarch64-tuning-enums.def
  3e678460d03287c5817595f99c59d4c5  gcc/config/aarch64/aarch64-tuning-flags.def
  0eec0dd3dbc5fa83349625d27ac091df  gcc/config/aarch64/aarch64-vxworks.h
! 1183a58970dd1cf93461bd15a4a99c95  gcc/config/aarch64/aarch64.cc
! 52439d78410f3d795a1dc90678f81cb4  gcc/config/aarch64/aarch64.h
  cb531746658627cf8c8fce448e021c62  gcc/config/aarch64/aarch64.md
  dabea943ce1adc1cd1db5e4de971fbeb  gcc/config/aarch64/aarch64.opt
  5bc2d62d910e1c00bd6eed6ffaa5a18d  gcc/config/aarch64/aarch64.opt.urls
*************** cf1987e5ab132733d06bfee8c03fcb96  gcc/co
*** 3626,3632 ****
  b80cf07c2c72294b3852130ec8c93494  gcc/config/aarch64/biarchilp32.h
  532332ff4f3d492231a7c392cda8d879  gcc/config/aarch64/biarchlp64.h
  eb03dfcd266d8fc8f127a62e436447db  gcc/config/aarch64/check-sve-md.awk
! 4a5b21c6d45c2fcbdb27f8cc37811d0b  gcc/config/aarch64/constraints.md
  36793d3c45f01e48f803e37494b108f0  gcc/config/aarch64/cortex-a57-fma-steering.cc
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  5413bb31fe46e9445fe27513d6a1427c  gcc/config/aarch64/driver-aarch64.cc
--- 3627,3633 ----
  b80cf07c2c72294b3852130ec8c93494  gcc/config/aarch64/biarchilp32.h
  532332ff4f3d492231a7c392cda8d879  gcc/config/aarch64/biarchlp64.h
  eb03dfcd266d8fc8f127a62e436447db  gcc/config/aarch64/check-sve-md.awk
! 034d263448c9861bf66126e64fbb5e5f  gcc/config/aarch64/constraints.md
  36793d3c45f01e48f803e37494b108f0  gcc/config/aarch64/cortex-a57-fma-steering.cc
  dc252994bb63e3b3bb9aa44e233b100d  gcc/config/aarch64/cygming.h
  5413bb31fe46e9445fe27513d6a1427c  gcc/config/aarch64/driver-aarch64.cc
*************** ecd00e36741ef4e76489950efc07e03f  gcc/co
*** 3635,3641 ****
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 4bd90f3cb426b5bf57d2a8346201c69b  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  6e151f0ce5aaa2f6e609379f30abf033  gcc/config/aarch64/predicates.md
--- 3636,3642 ----
  190b8ad2102cd90ce935883b736ff024  gcc/config/aarch64/geniterators.sh
  b8dedf1142526bb86368b620384f877a  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 5a0255660cf5cdb1daba9783c5b2d51b  gcc/config/aarch64/iterators.md
  811f43b19ba5f415244c59b4ab377445  gcc/config/aarch64/neoversev2.md
  b382a70dce13e2b3d554e31443c0dbf0  gcc/config/aarch64/olympus.md
  6e151f0ce5aaa2f6e609379f30abf033  gcc/config/aarch64/predicates.md
*************** a07ee362a4961e9d41cb0ab83553de74  gcc/co
*** 3691,3697 ****
  83cd5c97b8f09c9606ad9f2c50fb18a0  gcc/config/alpha/alpha-modes.def
  b4eac8c564e104cf3cc48269868be196  gcc/config/alpha/alpha-passes.def
  3fde351a6bc8386bb57921a1e5589ffa  gcc/config/alpha/alpha-protos.h
! d0becac50e09c5f7352ae0a1daf599c0  gcc/config/alpha/alpha.cc
  97ead278f191dc858083549f1b19f490  gcc/config/alpha/alpha.h
  8ab33b033535a21076bc6f09c2e4fd44  gcc/config/alpha/alpha.md
  9d7aba6e4e2821c0d801e5c6cba73763  gcc/config/alpha/alpha.opt
--- 3692,3698 ----
  83cd5c97b8f09c9606ad9f2c50fb18a0  gcc/config/alpha/alpha-modes.def
  b4eac8c564e104cf3cc48269868be196  gcc/config/alpha/alpha-passes.def
  3fde351a6bc8386bb57921a1e5589ffa  gcc/config/alpha/alpha-protos.h
! adbdde4d4bf5f4b8028f8e797b07a1a6  gcc/config/alpha/alpha.cc
  97ead278f191dc858083549f1b19f490  gcc/config/alpha/alpha.h
  8ab33b033535a21076bc6f09c2e4fd44  gcc/config/alpha/alpha.md
  9d7aba6e4e2821c0d801e5c6cba73763  gcc/config/alpha/alpha.opt
*************** e219596493ffcd798a48b24b22b5e077  gcc/co
*** 3895,3913 ****
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
  07a44b650a4bba2337aa9add7406b5e7  gcc/config/avr/avr-fixed.md
! dd94bc6b2b88cf9b874b0e6b50f17ac0  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  6c45ecfd28874e5791ad3e04448486e9  gcc/config/avr/avr-passes-fuse-move.h
! 3839f796284e0b611d0a3d91bd71ea5b  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  aed97a2b02b21f1df8924d81ddb284c9  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! 0bff5e9152afcd28ee07f478007fdd62  gcc/config/avr/avr.cc
  7e4633dda230d367d9859c29b7534ae4  gcc/config/avr/avr.h
  0a5b2e3ad1aa10dd9768f52a75ed09b7  gcc/config/avr/avr.md
! 2c8e496ccc33a4c3b5ea998449a69941  gcc/config/avr/avr.opt
! f6cef551d36f0002a5f31e6f394d87af  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
  f625cbe4b6bbd0986ca09f6d0465d3f6  gcc/config/avr/builtins.def
  dcd40301975d7f922b3fc51ba7ab1096  gcc/config/avr/constraints.md
--- 3896,3914 ----
  7e576974bac73c35660c3df419ddabf4  gcc/config/avr/avr-devices.cc
  6d6cb0cd00b1f0982b71a547d16c599b  gcc/config/avr/avr-dimode.md
  07a44b650a4bba2337aa9add7406b5e7  gcc/config/avr/avr-fixed.md
! 88661274ec608195643d00c77e415fe6  gcc/config/avr/avr-log.cc
  c29ebb93bbe48714c53c5d397dedbe7f  gcc/config/avr/avr-mcus.def
  b05978bd2969a943265d3549c23b8b59  gcc/config/avr/avr-modes.def
  6c45ecfd28874e5791ad3e04448486e9  gcc/config/avr/avr-passes-fuse-move.h
! 48585d0945f7d06daef2e406d11d2480  gcc/config/avr/avr-passes.cc
  7694efecfa1a86f5d70c1dcee34a8ffd  gcc/config/avr/avr-passes.def
  aed97a2b02b21f1df8924d81ddb284c9  gcc/config/avr/avr-protos.h
  4ee8705558d223eb1da7a1266af8c799  gcc/config/avr/avr-stdint.h
! a0f2c822d7a46dd51fb9753819ceb815  gcc/config/avr/avr.cc
  7e4633dda230d367d9859c29b7534ae4  gcc/config/avr/avr.h
  0a5b2e3ad1aa10dd9768f52a75ed09b7  gcc/config/avr/avr.md
! 514b7fcd718addcd441a0d2ef528b752  gcc/config/avr/avr.opt
! 377c88b0916a0c0c70eed6b40a1955f1  gcc/config/avr/avr.opt.urls
  a2e6c4bc09c4af90d1c01745985baff7  gcc/config/avr/avrlibc.h
  f625cbe4b6bbd0986ca09f6d0465d3f6  gcc/config/avr/builtins.def
  dcd40301975d7f922b3fc51ba7ab1096  gcc/config/avr/constraints.md
*************** e8ba563b7eff9a7c1a380d760e1a30a9  gcc/co
*** 4038,4045 ****
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
  8e7a3be360635581116c45ad4ce9f11a  gcc/config/darwin-rust.cc
  cf8b9e265eb733c7c120218863142390  gcc/config/darwin-sections.def
! 070389248c91cc2ccd43f3e36cdf0b2f  gcc/config/darwin.cc
! 594950dcd1b1ff70cbd9a14952b78170  gcc/config/darwin.h
  148592c1bf513e56d281629f94b70d9b  gcc/config/darwin.opt
  fa92b7f7b8bd38472af4bfd5a8254310  gcc/config/darwin.opt.urls
  4a5f649b74df564d653882eaeaa75adf  gcc/config/default-c.cc
--- 4039,4046 ----
  573bb1297b0b70aac60bf7462cd630fe  gcc/config/darwin-protos.h
  8e7a3be360635581116c45ad4ce9f11a  gcc/config/darwin-rust.cc
  cf8b9e265eb733c7c120218863142390  gcc/config/darwin-sections.def
! 9205ebfeee3279367d3f4aab3189995f  gcc/config/darwin.cc
! 37a218e7a976bddf2a01bc88ca61941d  gcc/config/darwin.h
  148592c1bf513e56d281629f94b70d9b  gcc/config/darwin.opt
  fa92b7f7b8bd38472af4bfd5a8254310  gcc/config/darwin.opt.urls
  4a5f649b74df564d653882eaeaa75adf  gcc/config/default-c.cc
*************** d636caa4ce720b0233cb902a2b0f6100  gcc/co
*** 4206,4212 ****
  0b2a61d73299543d614e724833bcd5b0  gcc/config/i386/avx10_2mediaintrin.h
  fb8d30bc80190fa2fc01b0e736364725  gcc/config/i386/avx10_2minmaxintrin.h
  2abfbb38a0d7eb58b1b9188a8f60d524  gcc/config/i386/avx10_2satcvtintrin.h
! 94331943fe52eb00d394852affa58057  gcc/config/i386/avx10v2auxintrin.h
  7d7113ae09c4908f619c34446366d489  gcc/config/i386/avx2intrin.h
  3217e698cafbfedf6eb33bde4549ab07  gcc/config/i386/avx5124fmapsintrin.h
  7cd684383288feca94abf23d6f39b34f  gcc/config/i386/avx5124vnniwintrin.h
--- 4207,4213 ----
  0b2a61d73299543d614e724833bcd5b0  gcc/config/i386/avx10_2mediaintrin.h
  fb8d30bc80190fa2fc01b0e736364725  gcc/config/i386/avx10_2minmaxintrin.h
  2abfbb38a0d7eb58b1b9188a8f60d524  gcc/config/i386/avx10_2satcvtintrin.h
! 01eaebb7ee5b82ed053b2db329490f65  gcc/config/i386/avx10v2auxintrin.h
  7d7113ae09c4908f619c34446366d489  gcc/config/i386/avx2intrin.h
  3217e698cafbfedf6eb33bde4549ab07  gcc/config/i386/avx5124fmapsintrin.h
  7cd684383288feca94abf23d6f39b34f  gcc/config/i386/avx5124vnniwintrin.h
*************** e9a606fe2c3135bde80e6d2c44264c26  gcc/co
*** 4312,4325 ****
  c097b985beb72ff18cb78cd9ccd8e231  gcc/config/i386/host-mingw32.cc
  688b8db2a9b26c0e106fce8ad35a77b7  gcc/config/i386/hresetintrin.h
  b18770c338209a9276ef5d52a49bde7b  gcc/config/i386/i386-builtin-types.awk
! d25fb6073e898f6bb400927dd1035054  gcc/config/i386/i386-builtin-types.def
! 5c1248911d82611cb6e72f3c716bbf03  gcc/config/i386/i386-builtin.def
  8dbd55fdf807ba9b636b99fdf4277e4d  gcc/config/i386/i386-builtins.cc
  be7f06e3ea032dfb39fcda012c812683  gcc/config/i386/i386-builtins.h
  3f0086f7be559b83e2e48c5d027f29b7  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 2c076645f358fd97514f85b94ceca6c2  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
  79ab78a97f2366664e1286573cdefd6f  gcc/config/i386/i386-features.cc
  52056c666db06e99d6978e69f82ed68d  gcc/config/i386/i386-features.h
--- 4313,4326 ----
  c097b985beb72ff18cb78cd9ccd8e231  gcc/config/i386/host-mingw32.cc
  688b8db2a9b26c0e106fce8ad35a77b7  gcc/config/i386/hresetintrin.h
  b18770c338209a9276ef5d52a49bde7b  gcc/config/i386/i386-builtin-types.awk
! a274bc00bb98c834afb5a1d266e9c853  gcc/config/i386/i386-builtin-types.def
! 8ac40f5af715fe1638843bef2b18950b  gcc/config/i386/i386-builtin.def
  8dbd55fdf807ba9b636b99fdf4277e4d  gcc/config/i386/i386-builtins.cc
  be7f06e3ea032dfb39fcda012c812683  gcc/config/i386/i386-builtins.h
  3f0086f7be559b83e2e48c5d027f29b7  gcc/config/i386/i386-c.cc
  a0261d6cc006fb86b99f338bdc94ae04  gcc/config/i386/i386-d.cc
  e9c7eebd4e344796f248c93990aa5166  gcc/config/i386/i386-d.h
! 10e5b6e8d9e767ca09b9a04583978404  gcc/config/i386/i386-expand.cc
  386e1be7f608621b79970d4d036694f8  gcc/config/i386/i386-expand.h
  79ab78a97f2366664e1286573cdefd6f  gcc/config/i386/i386-features.cc
  52056c666db06e99d6978e69f82ed68d  gcc/config/i386/i386-features.h
*************** effc5170dfebc3b292ed32af75644c49  gcc/co
*** 4335,4341 ****
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! eaaff1b7d9ae50941e1b09bd2cb3eeee  gcc/config/i386/i386.cc
  2049b3f01a97cbd56512c690d1badd37  gcc/config/i386/i386.h
  b39cbce4cc51b6c75f0a366f811a1d2a  gcc/config/i386/i386.md
  27faa1319822db264f91c0c1f13d3aba  gcc/config/i386/i386.opt
--- 4336,4342 ----
  5b778b3296ea91dab0ca82338ca6828d  gcc/config/i386/i386-rust-and-jit.inc
  91b8b50cba997aef17a61929b5b55a87  gcc/config/i386/i386-rust.cc
  25b3947a11eb9ca52892133ddb36f3f2  gcc/config/i386/i386-rust.h
! 901130d750d7b1853c5a5acaa2bd3d2d  gcc/config/i386/i386.cc
  2049b3f01a97cbd56512c690d1badd37  gcc/config/i386/i386.h
  b39cbce4cc51b6c75f0a366f811a1d2a  gcc/config/i386/i386.md
  27faa1319822db264f91c0c1f13d3aba  gcc/config/i386/i386.opt
*************** db114ac74c87743a142214fddaad2687  gcc/co
*** 4399,4405 ****
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  592f748733487ebc51326f6cbf8f1f54  gcc/config/i386/sol2.h
! 88b8cb3a2c8d56cbd493a0a2c87ab66c  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  1ad8fa318a811105e288b55b2d978572  gcc/config/i386/subst.md
--- 4400,4406 ----
  92210572b9f9f6481e4649a42d9ac3b0  gcc/config/i386/sm4intrin.h
  5298b8261e081859bbf068b710158e8f  gcc/config/i386/smmintrin.h
  592f748733487ebc51326f6cbf8f1f54  gcc/config/i386/sol2.h
! 2ecfa56d0ccfc24f1cb02f97739a953c  gcc/config/i386/sse.md
  52e0114cb9ab8d55aac3c17d06657d71  gcc/config/i386/ssemath.h
  8a6ab9e02097018bc9f1c2b347d29cfa  gcc/config/i386/stringop.def
  1ad8fa318a811105e288b55b2d978572  gcc/config/i386/subst.md
*************** d9ed529190073197d920aa6a15ff07f7  gcc/co
*** 5029,5035 ****
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
  a9079727a380234cbffb76361bda96da  gcc/config/riscv/autovec-opt.md
! 02e66875df94653a58bf7622c178476a  gcc/config/riscv/autovec.md
  8c6fab8cc48abd58cbae573be6c52639  gcc/config/riscv/bitmanip.md
  ef58889db2e623bb276663585662ae5d  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
--- 5030,5036 ----
  b7544a05ff53accc3d2defcb758626a9  gcc/config/riscv/arcv-rhx100.md
  4a634d8ec9f394f560c8538634cd937a  gcc/config/riscv/arcv-rmx100.md
  a9079727a380234cbffb76361bda96da  gcc/config/riscv/autovec-opt.md
! 083b9a79d8a2412c9c22fbf40ae90e48  gcc/config/riscv/autovec.md
  8c6fab8cc48abd58cbae573be6c52639  gcc/config/riscv/bitmanip.md
  ef58889db2e623bb276663585662ae5d  gcc/config/riscv/constraints.md
  cea5b702841429deff64e2e6fd0b626f  gcc/config/riscv/corev.def
*************** cfaaa2c0c4096cbce339014e85e7c3ea  gcc/co
*** 5075,5087 ****
  8463b74f5d66e1a7f0d58a7ae087d8ad  gcc/config/riscv/riscv-ext.opt.urls
  055aff307d7b174891aad40963ef1a9f  gcc/config/riscv/riscv-feature-bits.h
  70f0932c77decbbcedce26f2f38b3a3e  gcc/config/riscv/riscv-ftypes.def
! 355943d01aa9787b6466986489aeb933  gcc/config/riscv/riscv-fusion.cc
  f2652949a0fc8fb9841f89fd0b14b516  gcc/config/riscv/riscv-modes.def
  4c13452f353a7adc7da9f235a01b2e63  gcc/config/riscv/riscv-opt-popretz.cc
  aceeef65eb55d80bb5c9ff0633fd422d  gcc/config/riscv/riscv-opts.h
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
  e1ac1647825642c1e551b9a174630bd6  gcc/config/riscv/riscv-profiles.def
! 683550755bafe27e660ab31abfd79952  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
  01798b6988317cc1d7a76908a68f458a  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
--- 5076,5088 ----
  8463b74f5d66e1a7f0d58a7ae087d8ad  gcc/config/riscv/riscv-ext.opt.urls
  055aff307d7b174891aad40963ef1a9f  gcc/config/riscv/riscv-feature-bits.h
  70f0932c77decbbcedce26f2f38b3a3e  gcc/config/riscv/riscv-ftypes.def
! 21e8602c14bcdfefbe9cc70cd21c90b1  gcc/config/riscv/riscv-fusion.cc
  f2652949a0fc8fb9841f89fd0b14b516  gcc/config/riscv/riscv-modes.def
  4c13452f353a7adc7da9f235a01b2e63  gcc/config/riscv/riscv-opt-popretz.cc
  aceeef65eb55d80bb5c9ff0633fd422d  gcc/config/riscv/riscv-opts.h
  b8f6d36a9d7d3ef28a80c20bec990411  gcc/config/riscv/riscv-passes.def
  e1ac1647825642c1e551b9a174630bd6  gcc/config/riscv/riscv-profiles.def
! 12884aea7daff8a367756df549eb53af  gcc/config/riscv/riscv-protos.h
  2b6774d7dd7980d9eb3f4f24ed1b3e45  gcc/config/riscv/riscv-scalar-crypto.def
  01798b6988317cc1d7a76908a68f458a  gcc/config/riscv/riscv-selftests.cc
  41d585e61cee0deacc33bd07c93e79e2  gcc/config/riscv/riscv-shorten-memrefs.cc
*************** ee8122b7c30f11ad5dc682dad7cf7f55  gcc/co
*** 5107,5115 ****
  3205f1e7859c9ef2f9de42d862780b0a  gcc/config/riscv/riscv-vsetvl.cc
  142fb9988d1433586e8fa0e3b072f655  gcc/config/riscv/riscv-vsetvl.def
  d87a1f40dfc9d93ed1ee9eb9243e12e3  gcc/config/riscv/riscv-zicfilp.cc
! 9a41e6a4109a0ded92e325956e10e2f3  gcc/config/riscv/riscv.cc
  e03f5d27fdc607980d9b9e77410f003b  gcc/config/riscv/riscv.h
! b24f231c5545899b043a928d056823c5  gcc/config/riscv/riscv.md
  c5d85fc587ed7ba9d844efc0c8436373  gcc/config/riscv/riscv.opt
  07987470dd445a1552645f6c12c92c20  gcc/config/riscv/riscv.opt.urls
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
--- 5108,5116 ----
  3205f1e7859c9ef2f9de42d862780b0a  gcc/config/riscv/riscv-vsetvl.cc
  142fb9988d1433586e8fa0e3b072f655  gcc/config/riscv/riscv-vsetvl.def
  d87a1f40dfc9d93ed1ee9eb9243e12e3  gcc/config/riscv/riscv-zicfilp.cc
! 12fd229d75293466fcfdaa9c3f9a6487  gcc/config/riscv/riscv.cc
  e03f5d27fdc607980d9b9e77410f003b  gcc/config/riscv/riscv.h
! 1265d889c87c62d6e8009a72177a9ccc  gcc/config/riscv/riscv.md
  c5d85fc587ed7ba9d844efc0c8436373  gcc/config/riscv/riscv.opt
  07987470dd445a1552645f6c12c92c20  gcc/config/riscv/riscv.opt.urls
  68c8996d7ac73df46c6c1d49d8839ee0  gcc/config/riscv/riscv_bitmanip.h
*************** fe202105dd9e81b9ce8fdcc11d52c294  gcc/co
*** 5146,5152 ****
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
  30b27e6e363dfee77266722486f5a23d  gcc/config/riscv/vector-iterators.md
! 8bd640daa229d92a4cdaf40017db527b  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
--- 5147,5153 ----
  dcbac9d3c6831ff1cd18effca9c7bb28  gcc/config/riscv/vector-bfloat16.md
  d321bd9f102b0926d5d2c56c36ad6853  gcc/config/riscv/vector-crypto.md
  30b27e6e363dfee77266722486f5a23d  gcc/config/riscv/vector-iterators.md
! 76e190f6734c30217e942cc123636d7c  gcc/config/riscv/vector.md
  18d213c106fe52eebc74017d5ff892ce  gcc/config/riscv/xiangshan.md
  a398dfa970d2d1459a986ec657c751a3  gcc/config/riscv/xt-c908.md
  39ba96197510d4ac114a827d7ffbf806  gcc/config/riscv/zc.md
*************** c5ad0142a191862e3e81ecd3573754b3  gcc/co
*** 5655,5661 ****
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 00a386bd68ef9aa49ea5f68af97ec5d5  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
--- 5656,5662 ----
  a424415c72a544d25e6518e1cf699300  gcc/coroutine-passes.cc
  11fc0e33834de003c7fdd80427589041  gcc/coverage.cc
  d27317cee558d7c78afbdb6529e36649  gcc/coverage.h
! 6980b12b5ee7d58f34ea6e04b9fae33f  gcc/cp/ChangeLog
  70c059f2b75a2fc1bb95a526b21b8cd7  gcc/cp/ChangeLog-1993
  7cbd106e10a0ba7c052bee3fe20671c2  gcc/cp/ChangeLog-1994
  3b1e3ed23ad4363f75e6fd2fbb583dee  gcc/cp/ChangeLog-1995
*************** f39635970f98bbc4591f6363fe70504b  gcc/cp
*** 5692,5761 ****
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 49bc5c3a2607a464c9fa3fa210b870f5  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  71a53d5acceb572b1f04fac1bee641a9  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! be3e14d5c7e0c9a29a49c21fbe580206  gcc/cp/constexpr.cc
  8496faa175546e14a318d75acad50407  gcc/cp/constraint.cc
! 32072e5d5d3ee3b897990b37ecc28e03  gcc/cp/contracts.cc
! e77a681f560f3e9500f126febdc67ef6  gcc/cp/contracts.h
  37c0253792f8c7107a6beca6e8411c09  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
  25a525cf93bc60f2cd9e2aa23a6c4dc1  gcc/cp/cp-gimplify.cc
! 626b1042e2b3c833d388f2700483b3b3  gcc/cp/cp-lang.cc
  1a3e309babdfdd0ff5e03d09e6b5870d  gcc/cp/cp-name-hint.h
  d7d250b1eaee24019593f10bfebff1b3  gcc/cp/cp-objcp-common.cc
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  4725eb6367561f7e622a8578f48db129  gcc/cp/cp-tree.def
! 161faad59698363d19d11df32ae6f95f  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
  d49404e9805231f4f5732b27e7c35670  gcc/cp/cvt.cc
  6f71556aa8917a18188d98294711bc59  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 6a7538e483905556d5c9248225ba513d  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  c651022b1bd680c771d460c372f20a43  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  994bf06fb1968e5a191fe6fe8d37092b  gcc/cp/error.cc
! 192d12498ae34f54a464b0f3bf36cd75  gcc/cp/except.cc
  f4c33376dcbcbb2b49c9a11ec2911ad9  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
  312df0090f34c36193263da66b5ecbd7  gcc/cp/g++spec.cc
  a29b3e9192657e81a1574fb99466348d  gcc/cp/gen-cxxapi-file.py
! fcac46fa653b5161f99b9e17df91bbb5  gcc/cp/init.cc
  3cc97a4224ad8d5294fa1a55f8777b44  gcc/cp/lambda.cc
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  ae7c1d49c3ae546f4a980c3ebc22690d  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! 606cc4bcc8c387846a4a02c299dceca8  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  40847be23013a3a5aba415a0a2002926  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  c52f8d73b7042675572727b4bbb00bc2  gcc/cp/method.cc
! 5dd92924e4f4acd770223879bd2eed9f  gcc/cp/module.cc
  36a03818ce45c595866cc280493ac112  gcc/cp/name-lookup.cc
  475864b4d28a78a99daca900b93bb9a6  gcc/cp/name-lookup.h
  54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! 3a588a53865c63851a0e85a92dedbb66  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 48bba6dd741320b5f07494cc008ce4b6  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! 74db524f9673c75e286251b435ccf708  gcc/cp/reflect.cc
! 6b0fbfc0125649d898d07031625ff258  gcc/cp/rtti.cc
! e6a800b8f2f93cd8ed05ee026f824eca  gcc/cp/search.cc
  2497b82e7ddd8a5cd89b1e2917943b75  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! 52add0952becf354977160f4172e92f9  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! b2881685489de1ab883a03353fadf6e9  gcc/cp/typeck.cc
  5718b6670496061fe1a450b50b45eb73  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
--- 5693,5762 ----
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
  d9b8a76735523ab737e8778b90397d97  gcc/cp/Make-lang.in
! 424b3f3c06677591d931209932462a5f  gcc/cp/call.cc
  144dd1ae510a7436b569b007470b62da  gcc/cp/cfns.gperf
  39dd4c5a96c7ea132eb3c7ed039a065e  gcc/cp/cfns.h
  71a53d5acceb572b1f04fac1bee641a9  gcc/cp/class.cc
  e51f295e858583af5f9cf88b9530adf7  gcc/cp/config-lang.in
! 8d24c7994d82cea073f22d46c768b201  gcc/cp/constexpr.cc
  8496faa175546e14a318d75acad50407  gcc/cp/constraint.cc
! 82787881429d4e0164a81f57770f7b27  gcc/cp/contracts.cc
! 3df18dc2cb1493562bae14ea5bc85c10  gcc/cp/contracts.h
  37c0253792f8c7107a6beca6e8411c09  gcc/cp/coroutines.cc
  1817def94193f0cfabd4fa5b321af011  gcc/cp/coroutines.h
  25a525cf93bc60f2cd9e2aa23a6c4dc1  gcc/cp/cp-gimplify.cc
! 75ef432283cb4e3a64c0fd294e372504  gcc/cp/cp-lang.cc
  1a3e309babdfdd0ff5e03d09e6b5870d  gcc/cp/cp-name-hint.h
  d7d250b1eaee24019593f10bfebff1b3  gcc/cp/cp-objcp-common.cc
  a2555a7340b152d673783c07a3d102bb  gcc/cp/cp-objcp-common.h
  ffdd05782c93c0567486bb7ed7eee65a  gcc/cp/cp-trait.def
  4725eb6367561f7e622a8578f48db129  gcc/cp/cp-tree.def
! cca55dec3f87e185ae64311087510014  gcc/cp/cp-tree.h
  13d136a72a2aff80be380103d1c27ed5  gcc/cp/cp-ubsan.cc
  d49404e9805231f4f5732b27e7c35670  gcc/cp/cvt.cc
  6f71556aa8917a18188d98294711bc59  gcc/cp/cxx-pretty-print.cc
  1d04eec9859d91686ca501e9221f30ac  gcc/cp/cxx-pretty-print.h
  82a41d873e1c90067158c89e6c1bd4bb  gcc/cp/cxxapi-data.csv
! 98aedfd1dc2cf818aaabfc641136ebee  gcc/cp/decl.cc
  6b0c9433f7d3f129a44b59d54babb4eb  gcc/cp/decl.h
  c651022b1bd680c771d460c372f20a43  gcc/cp/decl2.cc
  12ccd5244973d74a0536adf58261b416  gcc/cp/dump.cc
  994bf06fb1968e5a191fe6fe8d37092b  gcc/cp/error.cc
! d1a726b1f6c59cf3888109c729850548  gcc/cp/except.cc
  f4c33376dcbcbb2b49c9a11ec2911ad9  gcc/cp/expr.cc
  447ddbe59eba62b9a389b9ba11701cfc  gcc/cp/friend.cc
  312df0090f34c36193263da66b5ecbd7  gcc/cp/g++spec.cc
  a29b3e9192657e81a1574fb99466348d  gcc/cp/gen-cxxapi-file.py
! 31e8c283cc12397760716a71ec0dd7d8  gcc/cp/init.cc
  3cc97a4224ad8d5294fa1a55f8777b44  gcc/cp/lambda.cc
  bc388fb8287f2de7cdf4d78eb8f5d998  gcc/cp/lang-specs.h
  ae7c1d49c3ae546f4a980c3ebc22690d  gcc/cp/lex.cc
  e4ccdd9cbe95dde4cce27394a7613dd9  gcc/cp/logic.cc
! 6a26bc898d3a507e194ac1f081b823cd  gcc/cp/mangle.cc
  3d68343c4a9d614bb00b91ad53e79a0b  gcc/cp/mapper-client.cc
  27465babcaf6195d4f438ed36bdd6aff  gcc/cp/mapper-client.h
  40847be23013a3a5aba415a0a2002926  gcc/cp/mapper-resolver.cc
  54609938d396496c7c5bf3f4cbfddaec  gcc/cp/metafns.gperf
  04fe5bec0bf79fcb3680aec9913ebc29  gcc/cp/metafns.h
  c52f8d73b7042675572727b4bbb00bc2  gcc/cp/method.cc
! 1036b0f480de83065cc19247a1cf998a  gcc/cp/module.cc
  36a03818ce45c595866cc280493ac112  gcc/cp/name-lookup.cc
  475864b4d28a78a99daca900b93bb9a6  gcc/cp/name-lookup.h
  54cd670407c3fc4f1778f1561e89ae99  gcc/cp/operators.def
  9efebf39da56d681d4405dfb9e55e3f5  gcc/cp/optimize.cc
! 569f5e3bee5435d218c125766b535625  gcc/cp/parser.cc
  fbc41b26ea2a336d3636c9d9c565d845  gcc/cp/parser.h
! 379d4d9ff76f22d44c11ad851cbab2ad  gcc/cp/pt.cc
  25322928eaff39cf167372554c639e02  gcc/cp/ptree.cc
! e54f0cd9d37a30330ea77c220f5b82e6  gcc/cp/reflect.cc
! 1faa8f5ba3e1bae7c1cf69f93affe1dd  gcc/cp/rtti.cc
! a396a89991e00e73de20000b3790b17b  gcc/cp/search.cc
  2497b82e7ddd8a5cd89b1e2917943b75  gcc/cp/semantics.cc
  64c36b2ea66c9f8f477b19d24e06a2cb  gcc/cp/std-name-hint.gperf
  15cc409f13a8952feb90e94d99ecefa2  gcc/cp/std-name-hint.h
! c860c418ad8851fb6cbe9832ad3c840d  gcc/cp/tree.cc
  01e9a381e6fcf3d016d0170ee0ad71d7  gcc/cp/type-utils.h
! 0f5c91b41dca9af2299e84e29ab1d7dd  gcc/cp/typeck.cc
  5718b6670496061fe1a450b50b45eb73  gcc/cp/typeck2.cc
  5b57f64aefce1359bfd8f016a43a8424  gcc/cp/vtable-class-hierarchy.cc
  556f791fb43a25890d32717884f67cd1  gcc/cppbuiltin.cc
*************** c1ba108db39c2659b939d1a8a6cba51d  gcc/di
*** 6124,6130 ****
  80cd25171e4056b26c59c89d93ca6249  gcc/diagnostics/url.h
  0956a36149562ea551a09ab40c4ebe4b  gcc/digraph.cc
  d6ecd8aebafe1dbfb0bbadb8dd0883f9  gcc/digraph.h
! ff1b13fe7876b897536c61ff67ad9b08  gcc/doc/analyzer.texi
  cc657ccd366b9f0e48a9558ccdd011f7  gcc/doc/avr-mmcu.texi
  2581a0356eecad7492c6033a42d08375  gcc/doc/bugreport.texi
  07178e2656fefca3307281845df4b4dd  gcc/doc/cfg.texi
--- 6125,6131 ----
  80cd25171e4056b26c59c89d93ca6249  gcc/diagnostics/url.h
  0956a36149562ea551a09ab40c4ebe4b  gcc/digraph.cc
  d6ecd8aebafe1dbfb0bbadb8dd0883f9  gcc/digraph.h
! 87bbf4813c0d205f9a105d5595bc0b7a  gcc/doc/analyzer.texi
  cc657ccd366b9f0e48a9558ccdd011f7  gcc/doc/avr-mmcu.texi
  2581a0356eecad7492c6033a42d08375  gcc/doc/bugreport.texi
  07178e2656fefca3307281845df4b4dd  gcc/doc/cfg.texi
*************** ee65c9e3e7c3fb1fd0128c23f4130e51  gcc/do
*** 6140,6146 ****
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! c719d70a9f54697e95803532d2a64d3a  gcc/doc/extend.texi
  d4f889c42d5400f1d26328f8b49db9ba  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  f0e190ef0119097dac4c73c2f9e34d9e  gcc/doc/gcc.texi
--- 6141,6147 ----
  301ed7e567732d1f0d5899a624068bdd  gcc/doc/cppinternals.texi
  421cc3b7d98386e0eb0abba4242dd54a  gcc/doc/cppopts.texi
  d8b2becdc7d9c570f256e19e1b1ac4f1  gcc/doc/cppwarnopts.texi
! 2ad3a77b8cab4890f911831d538ab179  gcc/doc/extend.texi
  d4f889c42d5400f1d26328f8b49db9ba  gcc/doc/fragments.texi
  7fb1e4199b2e70228fda69b8065d83c4  gcc/doc/frontends.texi
  f0e190ef0119097dac4c73c2f9e34d9e  gcc/doc/gcc.texi
*************** c84639641b29cd79e61a0fe226b0bca7  gcc/do
*** 6165,6171 ****
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  a79b3cf471168fa102d1da4e09c6a25a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 196cf327655cf7fa19d1050724b6ba1a  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
--- 6166,6172 ----
  e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
  a79b3cf471168fa102d1da4e09c6a25a  gcc/doc/install.texi
  30a2209eee0a2bed76e2d9ff3bd646f2  gcc/doc/install.texi2html
! 4556f33d8ea043197eac78aa3ba258a8  gcc/doc/invoke.texi
  dd9d4097ebfa9e936c41913343807268  gcc/doc/languages.texi
  46d2bbbd37002bb71569d0b1f27d7a5a  gcc/doc/libgcc.texi
  ef4f00c423089323edef1d3cff31a4a2  gcc/doc/libgdiagnostics/Makefile
*************** b12261ad56bcabd07b4a1b739f271527  gcc/do
*** 6220,6227 ****
  9ffca90352cb023c870de24efb2c2567  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! 921b2d264ab6d8ca790732e4bec7f807  gcc/doc/tm.texi
! 66b2d9c7b6b6961daa95e84be011fe20  gcc/doc/tm.texi.in
  b3858c24cbc7c7b77d15bcdd7c4b1fde  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
--- 6221,6228 ----
  9ffca90352cb023c870de24efb2c2567  gcc/doc/sourcebuild.texi
  9b58fbc10917d12008925e09d91cab55  gcc/doc/specs.texi
  d2b53a62ec4e23a8e4cbe16d2843c100  gcc/doc/standards.texi
! ce88643312d8f975e58f32c87177fe60  gcc/doc/tm.texi
! 12b132a1a7bd5eb02147ab7fbc77d30c  gcc/doc/tm.texi.in
  b3858c24cbc7c7b77d15bcdd7c4b1fde  gcc/doc/tree-ssa.texi
  2d263928ebdba30d4e096adf01758e79  gcc/doc/trouble.texi
  83ea8ece47a3447f8da5fddd982c9d29  gcc/doc/ux.texi
*************** d61f76c4b55102abe0d6908ab60489e7  gcc/ex
*** 6260,6267 ****
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  218b6e1049518cb5651dfbf9f18e27a8  gcc/explow.cc
  e0ebf672695dc08e5686ca42b54e3a46  gcc/explow.h
! 36e259717b003fb7949d16d6a450b874  gcc/expmed.cc
! 2431f17e1f416ef0b9c38b1b975942a4  gcc/expmed.h
  31aadb9ebae73c79e15e8db0c74fbde7  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
  1695cbbee07dd6afdb1af11e8fe6c80b  gcc/ext-dce.cc
--- 6261,6268 ----
  2af24b814afb179d911a33733d593eba  gcc/exec-tool.in
  218b6e1049518cb5651dfbf9f18e27a8  gcc/explow.cc
  e0ebf672695dc08e5686ca42b54e3a46  gcc/explow.h
! ef79bb9b3a89cdad2c27fe5d245027c0  gcc/expmed.cc
! dfe1e019d600e28ca6930d4d35dd73a5  gcc/expmed.h
  31aadb9ebae73c79e15e8db0c74fbde7  gcc/expr.cc
  ca4a759ee689223d3551cae34e997224  gcc/expr.h
  1695cbbee07dd6afdb1af11e8fe6c80b  gcc/ext-dce.cc
*************** e0210f6d49bd9ceab84ba5169fbcfc99  gcc/fi
*** 6271,6287 ****
  f80b38c70a85f9aeae9688b937b028ba  gcc/file-find.h
  9ca41121de6a799cd4d23363ea1c9b0c  gcc/file-prefix-map.cc
  5e60fafc10687b7792c492e27473ed4d  gcc/file-prefix-map.h
! b4a18c8d0dacb99b95b772e94f976754  gcc/final.cc
  3f5e6ac132421f17c9c8232626731e46  gcc/fixed-value.cc
  1caa253d024b0e3dcf3e6ba5ca8eeab1  gcc/fixed-value.h
! 843d7b61f7ebbdf9b9f6d9eeac9db399  gcc/flag-types.h
  edda8d107262aa360baaeafc0bd0d4a1  gcc/flags.h
! f8396c35f56710f2dd577b8f6644d380  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
  72c8a46a02696cd6a04b08ee7a11edfb  gcc/fold-const.cc
  98b49862cb21c530619c3ce208a89e80  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! 64aaa72969f516b39ba5e42cbfebf194  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
--- 6272,6288 ----
  f80b38c70a85f9aeae9688b937b028ba  gcc/file-find.h
  9ca41121de6a799cd4d23363ea1c9b0c  gcc/file-prefix-map.cc
  5e60fafc10687b7792c492e27473ed4d  gcc/file-prefix-map.h
! d9115b3f18771a2d2c8c56e81789487b  gcc/final.cc
  3f5e6ac132421f17c9c8232626731e46  gcc/fixed-value.cc
  1caa253d024b0e3dcf3e6ba5ca8eeab1  gcc/fixed-value.h
! 08524cf6a8b83425667c9520ab473128  gcc/flag-types.h
  edda8d107262aa360baaeafc0bd0d4a1  gcc/flags.h
! 93f8868de91f6c2b4a1c52b6045f2d89  gcc/fold-const-call.cc
  0b4405bca4b699887c6a47e1d25b216c  gcc/fold-const-call.h
  72c8a46a02696cd6a04b08ee7a11edfb  gcc/fold-const.cc
  98b49862cb21c530619c3ce208a89e80  gcc/fold-const.h
  87bf3dcaf0fa670e88b5693e7ece16d6  gcc/fold-mem-offsets.cc
! ec55fd43e99083063065c944aa0c5390  gcc/fortran/ChangeLog
  083c53fadafdcf3be46713838a51e36c  gcc/fortran/ChangeLog-2002
  2a4ca18d211fb2603139354fd16398ed  gcc/fortran/ChangeLog-2003
  e7462609ebd0dd7c874e0fc00e2833aa  gcc/fortran/ChangeLog-2004
*************** cee29e49f08ae700ae5d3779e12842e2  gcc/fo
*** 6328,6339 ****
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
  b2062936eceecf8fe444df59cebefc14  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! d96b976c88e6b7657f19c77d9c9f89c6  gcc/fortran/expr.cc
  2344b6f27230f9f03f11e8055deab7e6  gcc/fortran/f95-lang.cc
  9b2903c5a6c38514d32c671f83361227  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 9057b7de38b2b1466f61c70e3e325d8f  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
  e8a2dc18c2dad4c738135cdbce7490ff  gcc/fortran/interface.cc
--- 6329,6340 ----
  b66b99368e3cd17573ae64a38e36c1de  gcc/fortran/dependency.h
  b2062936eceecf8fe444df59cebefc14  gcc/fortran/dump-parse-tree.cc
  65aa25da09bdeee948cdad39cfc4d960  gcc/fortran/error.cc
! aba53fb7f74c3e537f46dba66f439e6c  gcc/fortran/expr.cc
  2344b6f27230f9f03f11e8055deab7e6  gcc/fortran/f95-lang.cc
  9b2903c5a6c38514d32c671f83361227  gcc/fortran/frontend-passes.cc
  c85c9309a4274609c6ff6466621c90f6  gcc/fortran/gfc-diagnostic.def
  afb07146daad7f36a59c52e053f6772f  gcc/fortran/gfc-internals.texi
! 8ecc02b9418ac0d3012158a3553b22fd  gcc/fortran/gfortran.h
  13d7dc211e7c02525ba3c435e6ea201b  gcc/fortran/gfortran.texi
  11194f3565a8c394b76bd5117830b0ae  gcc/fortran/gfortranspec.cc
  e8a2dc18c2dad4c738135cdbce7490ff  gcc/fortran/interface.cc
*************** bf54232c4c950ed772f4964c4f79629e  gcc/fo
*** 6358,6399 ****
  50cd60435948a59aa9a0dd841b3531be  gcc/fortran/module.cc
  18534fa9b78f6ffa097b975acc103daa  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! 32bde7efc083f4c2cd9dfc44024d6d74  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! fdfcccfdf0eebd61903ffa28b04c7b6a  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  d2c91e2744faf25a9b344ff91de78405  gcc/fortran/st.cc
! cba600b9b11e28452befdf4ae8c2a72c  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 045000004a2e6b4581c1f0b6478bb5f6  gcc/fortran/trans-array.cc
  579b2b79e8e64c99cf7a8101c42ba519  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  0051b874f3dfe1b38ec77d5f181b3425  gcc/fortran/trans-const.cc
  f98aef4a99a3ee3d3100e827120be5ca  gcc/fortran/trans-const.h
! 6ba02b89aa46b2fe3ac4d4f44b15a9b1  gcc/fortran/trans-decl.cc
  278d0bfd7a22db97d4d490f51ae5189e  gcc/fortran/trans-descriptor.cc
  3b12be7bdd3315f8ea7b068be3c5efcb  gcc/fortran/trans-descriptor.h
! dbcbe06c7b885fda80c701a61743bb9e  gcc/fortran/trans-expr.cc
! 950d3eee6f1663dfc9967f5860806c4b  gcc/fortran/trans-intrinsic.cc
  98da4f32a07d6a9049d5ebdb3a59119a  gcc/fortran/trans-io.cc
  8ab80418ccd29228a9a453d9eb3ab11e  gcc/fortran/trans-openmp.cc
  d4074142bb1ae96a013559a4155423be  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  2080e7fe1dede580efeb6d90a49f88ce  gcc/fortran/trans-types.cc
  d2e2d3b54c5e07c2ef96e16dfafb0a5d  gcc/fortran/trans-types.h
! c03c9285d2d7368aa8cb68e011a02a69  gcc/fortran/trans.cc
! 2d3f54b9ed7f3bbec54c23afc6cab082  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  db9a8244f9f5260e1f67ae046b4dd905  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
  ffcd589d92263dca99a67b1a9fb561b8  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
  45679bb0d98b3e87046958f7576b3770  gcc/function-tests.cc
! fac5129cb8c291cebcc1e4d9b031560e  gcc/function.cc
  797473d7b92327caaa0bc2b71c14bc0d  gcc/function.h
  96e0cc03035051e1904d130ab24fdfb4  gcc/fwprop.cc
  32954fca43f23e905ac77e9879653355  gcc/gcc-ar.cc
--- 6359,6400 ----
  50cd60435948a59aa9a0dd841b3531be  gcc/fortran/module.cc
  18534fa9b78f6ffa097b975acc103daa  gcc/fortran/openmp.cc
  7baca4fc0a6fcd712dcbccab22987c74  gcc/fortran/options.cc
! dcf85ccadaa9f9fc953324d70320f59d  gcc/fortran/parse.cc
  c97a1f016de974126c688bb9c805f323  gcc/fortran/parse.h
  652dece8c45124ac6ad49d39f2b67df1  gcc/fortran/primary.cc
! 9d50def4889b3e383a68585d777aa5ca  gcc/fortran/resolve.cc
  e23f6eefa51bb3b4caa3d75c0409cfcd  gcc/fortran/scanner.cc
  18963b3f6aacca960fd6aa72b429a9d2  gcc/fortran/scanner.h
  664f19f5a29de9abc4642568f758c47c  gcc/fortran/simplify.cc
  d2c91e2744faf25a9b344ff91de78405  gcc/fortran/st.cc
! 760f4dee9cef719e49f21860505e1687  gcc/fortran/symbol.cc
  4fa06f769be3f1b439a574ee842c82ca  gcc/fortran/target-memory.cc
  ea8837444e2a08a95a3ea747c94b8106  gcc/fortran/target-memory.h
! 44a26b9887c5b82a64a0016810ee62e7  gcc/fortran/trans-array.cc
  579b2b79e8e64c99cf7a8101c42ba519  gcc/fortran/trans-array.h
  5c567026f9fbc4fea9b59c22743687c4  gcc/fortran/trans-common.cc
  0051b874f3dfe1b38ec77d5f181b3425  gcc/fortran/trans-const.cc
  f98aef4a99a3ee3d3100e827120be5ca  gcc/fortran/trans-const.h
! 8126f57e12d4b9ba7cc04d0b13500955  gcc/fortran/trans-decl.cc
  278d0bfd7a22db97d4d490f51ae5189e  gcc/fortran/trans-descriptor.cc
  3b12be7bdd3315f8ea7b068be3c5efcb  gcc/fortran/trans-descriptor.h
! 81ca0845909664f1fad7b29485b3f136  gcc/fortran/trans-expr.cc
! 246bddc0de965f984fd5a3a5cafd5002  gcc/fortran/trans-intrinsic.cc
  98da4f32a07d6a9049d5ebdb3a59119a  gcc/fortran/trans-io.cc
  8ab80418ccd29228a9a453d9eb3ab11e  gcc/fortran/trans-openmp.cc
  d4074142bb1ae96a013559a4155423be  gcc/fortran/trans-stmt.cc
  6fbc90714f9730e84515bbaadff313f9  gcc/fortran/trans-stmt.h
  2080e7fe1dede580efeb6d90a49f88ce  gcc/fortran/trans-types.cc
  d2e2d3b54c5e07c2ef96e16dfafb0a5d  gcc/fortran/trans-types.h
! 3f9d439378f1f9d9f4c05eb2da11ba90  gcc/fortran/trans.cc
! 549613013fb9087bd3f1dfb4726b135b  gcc/fortran/trans.h
  95f35aeb3293f3036414b45c9c749d61  gcc/fortran/trigd_fe.inc
  db9a8244f9f5260e1f67ae046b4dd905  gcc/fortran/types.def
  2512380133ab0852be268312deda8663  gcc/fp-test.cc
  ffcd589d92263dca99a67b1a9fb561b8  gcc/function-abi.cc
  fe144e1c2a0da30ffc9946e5adab7e6f  gcc/function-abi.h
  45679bb0d98b3e87046958f7576b3770  gcc/function-tests.cc
! 4e6a6d22e8436b174d5bb17bdc0ae2cb  gcc/function.cc
  797473d7b92327caaa0bc2b71c14bc0d  gcc/function.h
  96e0cc03035051e1904d130ab24fdfb4  gcc/fwprop.cc
  32954fca43f23e905ac77e9879653355  gcc/gcc-ar.cc
*************** e8ef831ecab58724c781ef6c239eb959  gcc/gi
*** 6476,6482 ****
  8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
  a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! 5b96093f7782d7150089ad9120be7f26  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
  77b7894bb225ebcb156bb0cf28b9325a  gcc/gimple-harden-control-flow.cc
--- 6477,6483 ----
  8b1599b40f5a2702947d5d0d54b2abbc  gcc/gimple-crc-optimization.cc
  a15c39c8992a881e7ddd36b0e81d341c  gcc/gimple-expr.cc
  61721564f913cdbebe438f7c378b316e  gcc/gimple-expr.h
! 7e2f9ef99c28a0bdb61bb4832971985f  gcc/gimple-fold.cc
  ae37e021ec4849550d7598ecdd2faeb4  gcc/gimple-fold.h
  109e0f96a9d27a8a25bb73d61b701bbc  gcc/gimple-harden-conditionals.cc
  77b7894bb225ebcb156bb0cf28b9325a  gcc/gimple-harden-control-flow.cc
*************** a7d47404d5fd61c66fd504e78960fac2  gcc/gi
*** 6488,6496 ****
  189fd651a07168119508569dc83d182d  gcc/gimple-loop-interchange.cc
  09f155e5d0296ba93f88821453972587  gcc/gimple-loop-jam.cc
  79e1be92f049137ccb4bbb870690e093  gcc/gimple-loop-versioning.cc
! a3c0ce653bff24576326a2c5f8a39b01  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! 2d87af0b0e2a65d600f1926549836ed3  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
  283afbcda37f06544c84656fdb8c1a68  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
--- 6489,6497 ----
  189fd651a07168119508569dc83d182d  gcc/gimple-loop-interchange.cc
  09f155e5d0296ba93f88821453972587  gcc/gimple-loop-jam.cc
  79e1be92f049137ccb4bbb870690e093  gcc/gimple-loop-versioning.cc
! 093818dc380dd56a15aad9f8a9a231ed  gcc/gimple-low.cc
  a6a5de8424eee65e836bba5b21f32a6b  gcc/gimple-low.h
! bf2042fb726b2bcd9d4a529eaabef0a7  gcc/gimple-lower-bitint.cc
  0ad30ecd31f0473de43171e203bbed3e  gcc/gimple-lower-bitint.h
  283afbcda37f06544c84656fdb8c1a68  gcc/gimple-match-exports.cc
  95ab37dd8c1b67f025a463e428c5f21b  gcc/gimple-match-head.cc
*************** dd67ca2e05cdfe59a549e49eb485455e  gcc/gi
*** 6500,6526 ****
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
  535a1259754cf5f42775686f2de83982  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
! e44c6c1bb931bcda77504793dd5379c1  gcc/gimple-range-cache.cc
! fed39c5b7ccbe9fef78cb20fe5a094d8  gcc/gimple-range-cache.h
  60371b5cc90673b0456b5d939ff03406  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
  3810cc6ca4683efe3ad2d40515680a13  gcc/gimple-range-fold.cc
  fad790d11444089193185456cf2a344e  gcc/gimple-range-fold.h
! 260438bc537ce08a2bd4716b8a2af9be  gcc/gimple-range-gori.cc
! 3f397ecbcf642d6d782fe5e774680054  gcc/gimple-range-gori.h
! 7a9e110dc47e2a1b527e7467cb98c558  gcc/gimple-range-infer.cc
! 9c447cd0910663103790881bc1ab0fc8  gcc/gimple-range-infer.h
! 798feceed09e2dc10d4baec5b5c97c64  gcc/gimple-range-op.cc
  2b35447fc9805b1aa9b1c06450e44a9e  gcc/gimple-range-op.h
! 3c1761a6f346ad5c48f4b6c17c110c41  gcc/gimple-range-path.cc
  fd93abee2584b401c93735ddd00e75d1  gcc/gimple-range-path.h
  a901b5fb3b36536c4a4133be813140fc  gcc/gimple-range-phi.cc
  cb618963a83cd7f24a75236850e20a99  gcc/gimple-range-phi.h
  a4932ff9aca9b1faf77d94e18d1a98dd  gcc/gimple-range-tests.cc
  6aea6dbdcfdbb9cc7eaba0885ef8339c  gcc/gimple-range-trace.cc
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
! 515ea2c7af7c5649195752667817c280  gcc/gimple-range.cc
! 98db3cdd3969635051b42f3414a99713  gcc/gimple-range.h
  d1e29051831e84cf3322e13073e6e37c  gcc/gimple-ssa-backprop.cc
  3e8e4d48b1347b6dea055a7d496d1a73  gcc/gimple-ssa-isolate-paths.cc
  4d04037353b46effbdcf1f597008b77f  gcc/gimple-ssa-nonnull-compare.cc
--- 6501,6527 ----
  47be556d1ffdffe8df16fdea25e9fe0e  gcc/gimple-predict.h
  535a1259754cf5f42775686f2de83982  gcc/gimple-pretty-print.cc
  188a3366d8d8b4ba413f704fa241a1e2  gcc/gimple-pretty-print.h
! 34a74e517e590c6edbe780f9d438e505  gcc/gimple-range-cache.cc
! 26548aaada0ade886bdcba88bea31185  gcc/gimple-range-cache.h
  60371b5cc90673b0456b5d939ff03406  gcc/gimple-range-edge.cc
  1001ed4a3c498c8d659f609b65b1b127  gcc/gimple-range-edge.h
  3810cc6ca4683efe3ad2d40515680a13  gcc/gimple-range-fold.cc
  fad790d11444089193185456cf2a344e  gcc/gimple-range-fold.h
! e004c7285e8f17a42a8ef6730842e935  gcc/gimple-range-gori.cc
! d3281d0fef662ef60ad0bc983f08e436  gcc/gimple-range-gori.h
! 572dc8958109d912190096364752a45a  gcc/gimple-range-infer.cc
! 2d9eaffb183e7db68a396b309a97e2cc  gcc/gimple-range-infer.h
! 269c7f94145cdb7a8f6345055e177813  gcc/gimple-range-op.cc
  2b35447fc9805b1aa9b1c06450e44a9e  gcc/gimple-range-op.h
! d09001e5018f413cdc71a098de3b6209  gcc/gimple-range-path.cc
  fd93abee2584b401c93735ddd00e75d1  gcc/gimple-range-path.h
  a901b5fb3b36536c4a4133be813140fc  gcc/gimple-range-phi.cc
  cb618963a83cd7f24a75236850e20a99  gcc/gimple-range-phi.h
  a4932ff9aca9b1faf77d94e18d1a98dd  gcc/gimple-range-tests.cc
  6aea6dbdcfdbb9cc7eaba0885ef8339c  gcc/gimple-range-trace.cc
  e45cb6aa50c3ff1d1592d7f2758cb778  gcc/gimple-range-trace.h
! b1df5a1f4f3b070a18c12fadf0318c64  gcc/gimple-range.cc
! 124afbf1c2645e3da5448a3368c45812  gcc/gimple-range.h
  d1e29051831e84cf3322e13073e6e37c  gcc/gimple-ssa-backprop.cc
  3e8e4d48b1347b6dea055a7d496d1a73  gcc/gimple-ssa-isolate-paths.cc
  4d04037353b46effbdcf1f597008b77f  gcc/gimple-ssa-nonnull-compare.cc
*************** f5de8589d497c4d607cadff1ce88dd5c  gcc/hw
*** 6673,6679 ****
  665c1d736f4909ccb17f662f7f060fd7  gcc/hw-doloop.h
  e04292fe62b06b616cf5ddc64b0c39ba  gcc/hwint.cc
  874ca5e6230f3f3aefd7af70869ff81e  gcc/hwint.h
! f3d2d87090b74c4b408298602dde37b1  gcc/ifcvt.cc
  e2229f9ecac43014084b083ddf2d4637  gcc/ifcvt.h
  370b4a8b9decbb822392c32f5fb92a72  gcc/inchash.cc
  bad6404ce4e7f42ff46ce6ae70c77e99  gcc/inchash.h
--- 6674,6680 ----
  665c1d736f4909ccb17f662f7f060fd7  gcc/hw-doloop.h
  e04292fe62b06b616cf5ddc64b0c39ba  gcc/hwint.cc
  874ca5e6230f3f3aefd7af70869ff81e  gcc/hwint.h
! 21abae133cee99bf266c09ae69ef1fcd  gcc/ifcvt.cc
  e2229f9ecac43014084b083ddf2d4637  gcc/ifcvt.h
  370b4a8b9decbb822392c32f5fb92a72  gcc/inchash.cc
  bad6404ce4e7f42ff46ce6ae70c77e99  gcc/inchash.h
*************** a4332875948bce6b2c7fe2ddc85c9319  gcc/ip
*** 6717,6723 ****
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
  28e33a4a0b99d281a0437774beede1af  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
! 62d76447a51c38e7426bb9a0f5e1d731  gcc/ipa-prop.cc
  9b0c97913300d98c3ec78027b0857fae  gcc/ipa-prop.h
  14aace4627625a58b2f0a8aec7cd94f5  gcc/ipa-pure-const.cc
  f2d87c9921ca158119d238ee8d50abb6  gcc/ipa-ref.cc
--- 6718,6724 ----
  80b4cc7719c703dfe60955dfb86002ae  gcc/ipa-predicate.cc
  28e33a4a0b99d281a0437774beede1af  gcc/ipa-predicate.h
  7e00759eeb8f2ddaa2f77da1db8adf24  gcc/ipa-profile.cc
! 9853b89714e0bbf813e7257f8d4f8b82  gcc/ipa-prop.cc
  9b0c97913300d98c3ec78027b0857fae  gcc/ipa-prop.h
  14aace4627625a58b2f0a8aec7cd94f5  gcc/ipa-pure-const.cc
  f2d87c9921ca158119d238ee8d50abb6  gcc/ipa-ref.cc
*************** e0d99466f393722c3e10caf535614ff7  gcc/lt
*** 6921,6927 ****
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! ad0ed5cb53129cf8e4390813d7be1bef  gcc/m2/ChangeLog
  cb2181d2ed48606b2c4a0407d3d608fb  gcc/m2/Make-lang.in
  ed6143d60ab8fbfb423b65ba791d1faf  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
--- 6922,6928 ----
  351e06833ea0ad58238533d76ea0c2cf  gcc/m2/COPYING.RUNTIME
  8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! 2585f20844693505f67c0297817c5ebe  gcc/m2/ChangeLog
  cb2181d2ed48606b2c4a0407d3d608fb  gcc/m2/Make-lang.in
  ed6143d60ab8fbfb423b65ba791d1faf  gcc/m2/Make-maintainer.in
  6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
*************** e1256bb923788ec6ffa7046a259ca791  gcc/m2
*** 7891,7904 ****
  3774abf3c7c8b1c700d18feb83b6f90b  gcc/m2/tools-src/def2doc.py
  38a73d9a2e863618e4c70c54711a5c7d  gcc/m2/tools-src/makeSystem
  2808d4f5aad609072cac7cc154b80655  gcc/m2/tools-src/mklink.c
! f0763cb5dddcd435dd3d029ab81341f1  gcc/m2/tools-src/mktargetsrc.py
  5291f32526adc61f22c26f6aeadba4a2  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
  a19f34a937ad29bda64c2e81d6433940  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  11dfd6679ddc945a2c284204df360007  gcc/match-sat-alu.pd
! 703a57da6991f9803c62f72d46405966  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  de2929affe75fa1e953d7a30762480bb  gcc/mem-stats.h
--- 7892,7905 ----
  3774abf3c7c8b1c700d18feb83b6f90b  gcc/m2/tools-src/def2doc.py
  38a73d9a2e863618e4c70c54711a5c7d  gcc/m2/tools-src/makeSystem
  2808d4f5aad609072cac7cc154b80655  gcc/m2/tools-src/mklink.c
! ff8d15292b7582f0bfacd28b93ceaee2  gcc/m2/tools-src/mktargetsrc.py
  5291f32526adc61f22c26f6aeadba4a2  gcc/m2/tools-src/tidydates.py
  f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
  2a18164ee5f162ac117e6fedb58158a2  gcc/machmode.def
  a19f34a937ad29bda64c2e81d6433940  gcc/machmode.h
  197298337dae14fdd7ab928a1f03bec6  gcc/main.cc
  11dfd6679ddc945a2c284204df360007  gcc/match-sat-alu.pd
! 8b5a29b9723f0f4239aa5bb5b1136ef2  gcc/match.pd
  b106a08a1793a5495dd87c412456484b  gcc/mcf.cc
  897c541ca992e145ad451c98941c7647  gcc/mem-stats-traits.h
  de2929affe75fa1e953d7a30762480bb  gcc/mem-stats.h
*************** e3efef0a89306a90708239222db79f43  gcc/ob
*** 7940,7946 ****
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
  5130748b048636611a7b68a9a4403b78  gcc/omp-builtins.def
! c6eafa8297195f59dfe2b86ebb46541a  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  188173a8efb4e631ba04f95371cb8804  gcc/omp-general.cc
  adfc442def98eba84925b435cfc8716a  gcc/omp-general.h
--- 7941,7947 ----
  ac6f2a373c263368c4451f24860f50d6  gcc/obstack-utils.h
  b53e19ed2e5aad878bc3422b5ed77de8  gcc/omp-api.h
  5130748b048636611a7b68a9a4403b78  gcc/omp-builtins.def
! 28bc7190ae57313be8d360789af26a6c  gcc/omp-expand.cc
  2f6456a4cc816c9b75844b1625b26349  gcc/omp-expand.h
  188173a8efb4e631ba04f95371cb8804  gcc/omp-general.cc
  adfc442def98eba84925b435cfc8716a  gcc/omp-general.h
*************** eba7a25f3a38ce52b4cf970cc93f66ea  gcc/op
*** 7965,7971 ****
  22f466f2c62ac3f6d1a71c7d7911d694  gcc/optabs-libfuncs.h
  b88b1f2b695de39a2325d3f5407d2c67  gcc/optabs-query.cc
  6e866f616ec7fb7f4c791b5ad349a2cd  gcc/optabs-query.h
! f483638243a7be6729a40a14671bb41f  gcc/optabs-tree.cc
  9abb7ae782bbc6b1c20fac3e87d5c2f5  gcc/optabs-tree.h
  57c8869c0b98a066cf4cfb1820088baf  gcc/optabs.cc
  75702d72b3dc7ebdef68f6bee49fb134  gcc/optabs.def
--- 7966,7972 ----
  22f466f2c62ac3f6d1a71c7d7911d694  gcc/optabs-libfuncs.h
  b88b1f2b695de39a2325d3f5407d2c67  gcc/optabs-query.cc
  6e866f616ec7fb7f4c791b5ad349a2cd  gcc/optabs-query.h
! 8f76a579fad3e8201db5ae8f28729a2d  gcc/optabs-tree.cc
  9abb7ae782bbc6b1c20fac3e87d5c2f5  gcc/optabs-tree.h
  57c8869c0b98a066cf4cfb1820088baf  gcc/optabs.cc
  75702d72b3dc7ebdef68f6bee49fb134  gcc/optabs.def
*************** c9b2e818258f43e0a779e4c3caa8801d  gcc/op
*** 7983,7989 ****
  59b44247c12669685779dfba9d301863  gcc/opts-diagnostic.h
  dc202dff2d7d4cb632307dc4915602b0  gcc/opts-global.cc
  f55f0f0a86a11d13824924aac8c98a68  gcc/opts-jobserver.h
! 10aedf0b3e499ada8be40669fa9b586c  gcc/opts.cc
  e2419fa789f8684ce04c4df7343b759d  gcc/opts.h
  413859dddc66f1f7d8ea8078e096c288  gcc/ordered-hash-map-tests.cc
  fef443de1557117f8c2847206a2ea8f5  gcc/ordered-hash-map.h
--- 7984,7990 ----
  59b44247c12669685779dfba9d301863  gcc/opts-diagnostic.h
  dc202dff2d7d4cb632307dc4915602b0  gcc/opts-global.cc
  f55f0f0a86a11d13824924aac8c98a68  gcc/opts-jobserver.h
! a98d825168b245b4a43820cdb750362b  gcc/opts.cc
  e2419fa789f8684ce04c4df7343b759d  gcc/opts.h
  413859dddc66f1f7d8ea8078e096c288  gcc/ordered-hash-map-tests.cc
  fef443de1557117f8c2847206a2ea8f5  gcc/ordered-hash-map.h
*************** b1408122718335443829fcfe2d5dbcf3  gcc/pr
*** 8050,8057 ****
  2cd52b1a67b570ee31c684eb846def0f  gcc/print-rtl.h
  f26f8ff623fefa8bdfe18ead347e914f  gcc/print-tree.cc
  db24d9f938cefb2027e91a5068f5f1d0  gcc/print-tree.h
! 7e39922ba013c9a602f60c45e332ff09  gcc/profile-count.cc
! 2a91ef0e38b6cf81c1c353b9ac7d82ff  gcc/profile-count.h
  240422d01c580d218c0e87049d186513  gcc/profile.cc
  ac89cec30bba4c32a5b8c9bf0f2e37a1  gcc/profile.h
  3ed55ba6efd01e68096062e3c1ba0816  gcc/pta-andersen.cc
--- 8051,8058 ----
  2cd52b1a67b570ee31c684eb846def0f  gcc/print-rtl.h
  f26f8ff623fefa8bdfe18ead347e914f  gcc/print-tree.cc
  db24d9f938cefb2027e91a5068f5f1d0  gcc/print-tree.h
! 00098a460d01d27b1fe722f65c9ae2b8  gcc/profile-count.cc
! 76ce8b3d0b6aa0e095c9f96fae3eca41  gcc/profile-count.h
  240422d01c580d218c0e87049d186513  gcc/profile.cc
  ac89cec30bba4c32a5b8c9bf0f2e37a1  gcc/profile.h
  3ed55ba6efd01e68096062e3c1ba0816  gcc/pta-andersen.cc
*************** bea702966301b6b7e6294ef33ec8b443  gcc/pt
*** 8059,8067 ****
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
  b13ec01389f52189f974e148eec9ae08  gcc/range-op-float.cc
! ec6248ff9582260bb420197fc3bd33ab  gcc/range-op-mixed.h
  63b4a88f7fe37133ba456c19d2d85e72  gcc/range-op-ptr.cc
! 053e42808cbf3de035e45431bf853b04  gcc/range-op.cc
  52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
--- 8060,8068 ----
  706c6f6185e00db6f945b89759097531  gcc/pub-sub.cc
  f72a1e84c9facd65dc1c42ee67f21583  gcc/pub-sub.h
  b13ec01389f52189f974e148eec9ae08  gcc/range-op-float.cc
! 4c327cee286aae07c335e8d4a2eea1a1  gcc/range-op-mixed.h
  63b4a88f7fe37133ba456c19d2d85e72  gcc/range-op-ptr.cc
! 5817de3ada2c203cf1fd721db7f314e4  gcc/range-op.cc
  52c9ff8b4fcf2afdee9b9f331411b42e  gcc/range-op.h
  5224210104d440bc7bae81953ca2e7f1  gcc/range.cc
  19ba1dec644467b75ebc4246acf8ff8f  gcc/range.h
*************** c8e14bcadd8fd37034a186ff2eed497c  gcc/se
*** 8690,8700 ****
  27bb8dee2b95b3a7efa33a896dd831e4  gcc/selftest-json.h
  4c61458b7e1d9b809f9468ffe539da78  gcc/selftest-rtl.cc
  3f2e71aeb7cd3d6e8b7a92917cf5330c  gcc/selftest-rtl.h
! 0e4315bfcd380808313e7875dc34bab0  gcc/selftest-run-tests.cc
  872212bd817771adf8598f629fe27051  gcc/selftest-tree.h
  fdb979dbe9a110ffa6e78f1d2a5bc11e  gcc/selftest-xml.h
  1461067dc9aa772e491ec40e7b0b5d48  gcc/selftest.cc
! e85a3bf4042489963b242ea7e5c074e4  gcc/selftest.h
  1c334344ba785f0a69ca21056f1f847a  gcc/sese.cc
  f7a30cc2e8344fa489739267da2d868b  gcc/sese.h
  664a1170caa1b13ee6d513a44d8de3c8  gcc/shortest-paths.h
--- 8691,8701 ----
  27bb8dee2b95b3a7efa33a896dd831e4  gcc/selftest-json.h
  4c61458b7e1d9b809f9468ffe539da78  gcc/selftest-rtl.cc
  3f2e71aeb7cd3d6e8b7a92917cf5330c  gcc/selftest-rtl.h
! 5a1cd774db9be3b731c859f836e45d97  gcc/selftest-run-tests.cc
  872212bd817771adf8598f629fe27051  gcc/selftest-tree.h
  fdb979dbe9a110ffa6e78f1d2a5bc11e  gcc/selftest-xml.h
  1461067dc9aa772e491ec40e7b0b5d48  gcc/selftest.cc
! adc16dfe1080cb2fa5f3d3a5e4947b16  gcc/selftest.h
  1c334344ba785f0a69ca21056f1f847a  gcc/sese.cc
  f7a30cc2e8344fa489739267da2d868b  gcc/sese.h
  664a1170caa1b13ee6d513a44d8de3c8  gcc/shortest-paths.h
*************** d294651bcc46af1abb89e48cd851fd40  gcc/ta
*** 8752,8763 ****
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
  5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! 14bed6437e65edbd80cd5f75b149b723  gcc/target.def
  4685fe9ae3053826ebb0e8a51092bb53  gcc/target.h
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 48294e16aa02ed28f7ea080c9f235633  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
--- 8753,8764 ----
  fe7cc01d7dd25103bc61ab1a33dd54dc  gcc/target-globals.h
  5f6f168a092c141ef64501f44439df42  gcc/target-hooks-macros.h
  f24751f278bee1ac8dc861467d9f96a3  gcc/target-insns.def
! e4624141ea31da60f0820a531da77a13  gcc/target.def
  4685fe9ae3053826ebb0e8a51092bb53  gcc/target.h
  8dfc7c2c4f5fcc8bae4e56f4908de008  gcc/targhooks.cc
  dcedef5930550e30cc9ea611bbffde5b  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 37d4c4cddd9ee4978e4ecd4ae5f72d8d  gcc/testsuite/ChangeLog
  47e8e29b649ead73b8a1e4797da470ed  gcc/testsuite/ChangeLog-1993-2007
  35198a9e4fd31b935de8789faabf3351  gcc/testsuite/ChangeLog-2008
  0f19934540750356d1b91595cebfd9a8  gcc/testsuite/ChangeLog-2009
*************** ba82fa9c5e7219b39c3fc58a5fc3570c  gcc/te
*** 18888,18896 ****
  eabe626c80fa72ec560b0cad980412ae  gcc/testsuite/c-c++-common/attr-retain-1.c
  3f3ae7a2c1567fd316e56176dd657433  gcc/testsuite/c-c++-common/attr-retain-10.c
  834a89315d24f883c485e414742564f2  gcc/testsuite/c-c++-common/attr-retain-11.c
! f5305f0e4e75443d01d99877d8b7f8ea  gcc/testsuite/c-c++-common/attr-retain-2.c
! 02ecfc9cd0914b5f5234dba5d448c3fd  gcc/testsuite/c-c++-common/attr-retain-3.c
! b248ebd472e2db3f97e361801176a90c  gcc/testsuite/c-c++-common/attr-retain-4.c
  4521b11b8c1e869a945259430de16ed6  gcc/testsuite/c-c++-common/attr-retain-5.c
  5e1373577062eb4f3a151de68cb8eb9a  gcc/testsuite/c-c++-common/attr-retain-6.c
  d2770c4127f3e5dfac1827a3c36c285c  gcc/testsuite/c-c++-common/attr-retain-7.c
--- 18889,18897 ----
  eabe626c80fa72ec560b0cad980412ae  gcc/testsuite/c-c++-common/attr-retain-1.c
  3f3ae7a2c1567fd316e56176dd657433  gcc/testsuite/c-c++-common/attr-retain-10.c
  834a89315d24f883c485e414742564f2  gcc/testsuite/c-c++-common/attr-retain-11.c
! 1a798704c7ac9be9fd849872d052c9a7  gcc/testsuite/c-c++-common/attr-retain-2.c
! f394cec948566d0f591772cea5418adc  gcc/testsuite/c-c++-common/attr-retain-3.c
! e30a1c4e18e7b324ae5b87f1d94e7936  gcc/testsuite/c-c++-common/attr-retain-4.c
  4521b11b8c1e869a945259430de16ed6  gcc/testsuite/c-c++-common/attr-retain-5.c
  5e1373577062eb4f3a151de68cb8eb9a  gcc/testsuite/c-c++-common/attr-retain-6.c
  d2770c4127f3e5dfac1827a3c36c285c  gcc/testsuite/c-c++-common/attr-retain-7.c
*************** ad68611dd933bed25a8c937612a58830  gcc/te
*** 19829,19835 ****
  b9f70a44108d3410396c88c5623b3919  gcc/testsuite/c-c++-common/gomp/for-7.c
  bf86d08ac1f862841d6ee39b4493443c  gcc/testsuite/c-c++-common/gomp/for-static-1.c
  d0a4060dbc0ed126c6e86ea5d4bcf6ff  gcc/testsuite/c-c++-common/gomp/for-static-2.c
! e5fdc34bd67510bce43238289a8a2572  gcc/testsuite/c-c++-common/gomp/for-static-3.c
  775485bf3a472f203814fe0952fc690f  gcc/testsuite/c-c++-common/gomp/for-static.h
  65d6afb7dedb6ef49728ff7a0f9fe0b5  gcc/testsuite/c-c++-common/gomp/groupprivate-1.c
  1216c6524ff3a9bfcf178bb37b9b3961  gcc/testsuite/c-c++-common/gomp/has-include-1.c
--- 19830,19837 ----
  b9f70a44108d3410396c88c5623b3919  gcc/testsuite/c-c++-common/gomp/for-7.c
  bf86d08ac1f862841d6ee39b4493443c  gcc/testsuite/c-c++-common/gomp/for-static-1.c
  d0a4060dbc0ed126c6e86ea5d4bcf6ff  gcc/testsuite/c-c++-common/gomp/for-static-2.c
! 7f602f656d776cece09df191f14c23f1  gcc/testsuite/c-c++-common/gomp/for-static-3.c
! 0fc803dc294350a9d11a96a58d695dfb  gcc/testsuite/c-c++-common/gomp/for-static-4.c
  775485bf3a472f203814fe0952fc690f  gcc/testsuite/c-c++-common/gomp/for-static.h
  65d6afb7dedb6ef49728ff7a0f9fe0b5  gcc/testsuite/c-c++-common/gomp/groupprivate-1.c
  1216c6524ff3a9bfcf178bb37b9b3961  gcc/testsuite/c-c++-common/gomp/has-include-1.c
*************** a8cae7afccfdaf5c55701d1fd623cbae  gcc/te
*** 19927,19934 ****
  835e56c803ebf6e088e108546f2f4ccf  gcc/testsuite/c-c++-common/gomp/omp_get_num_devices_initial_device.c
  6edff4d259a25d0cbbd6bd788efd47b2  gcc/testsuite/c-c++-common/gomp/ompx-1.c
  a53bfb3d3f3e9c540d6b019fcc527fa4  gcc/testsuite/c-c++-common/gomp/ompx-2.c
! f6c6b11558601b1982886ec59c949a8a  gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c
! 70414c0284deff03ad4abf54074f19c2  gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c
  a5b411651a6f93c5cf3ce9b7c306c2e4  gcc/testsuite/c-c++-common/gomp/order-1.c
  dde98055342a9a3a28134ae4aa3487f1  gcc/testsuite/c-c++-common/gomp/order-2.c
  db900e16f622568df37b1e202fd25b9f  gcc/testsuite/c-c++-common/gomp/order-3.c
--- 19929,19938 ----
  835e56c803ebf6e088e108546f2f4ccf  gcc/testsuite/c-c++-common/gomp/omp_get_num_devices_initial_device.c
  6edff4d259a25d0cbbd6bd788efd47b2  gcc/testsuite/c-c++-common/gomp/ompx-1.c
  a53bfb3d3f3e9c540d6b019fcc527fa4  gcc/testsuite/c-c++-common/gomp/ompx-2.c
! ea1a457ab6588cb93babcdd1f792cb28  gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c
! 686e3d2a63a8a9add52131bc55803ec1  gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c
! 489134063122f43465a2f04d2dd43101  gcc/testsuite/c-c++-common/gomp/openmp-ompt-3.c
! 9b5c84cebe5ba32585e6b7fb1ea7507b  gcc/testsuite/c-c++-common/gomp/openmp-ompt-4.c
  a5b411651a6f93c5cf3ce9b7c306c2e4  gcc/testsuite/c-c++-common/gomp/order-1.c
  dde98055342a9a3a28134ae4aa3487f1  gcc/testsuite/c-c++-common/gomp/order-2.c
  db900e16f622568df37b1e202fd25b9f  gcc/testsuite/c-c++-common/gomp/order-3.c
*************** d2b914e7da7d449d03bc2fd5a17d4ac9  gcc/te
*** 20085,20091 ****
  e413f648ce33386781b2b3e3e93cb96b  gcc/testsuite/c-c++-common/gomp/scan-5.c
  4715bbfc6161c4d45a18bbfad6b8d4db  gcc/testsuite/c-c++-common/gomp/scan-6.c
  3a5155fae66616b98d3623c835195084  gcc/testsuite/c-c++-common/gomp/scan-7.c
! 92fcf40af1644e0dde3d92d1f01c77e0  gcc/testsuite/c-c++-common/gomp/scan-8.c
  3d7523f39dbf3da04bbb0b7753d8ec5c  gcc/testsuite/c-c++-common/gomp/scan-9.c
  8af1ef16f27f56d5d687ed958b671d57  gcc/testsuite/c-c++-common/gomp/schedule-1.c
  67f96e7a06232d9ddf2c2926d87eb850  gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c
--- 20089,20095 ----
  e413f648ce33386781b2b3e3e93cb96b  gcc/testsuite/c-c++-common/gomp/scan-5.c
  4715bbfc6161c4d45a18bbfad6b8d4db  gcc/testsuite/c-c++-common/gomp/scan-6.c
  3a5155fae66616b98d3623c835195084  gcc/testsuite/c-c++-common/gomp/scan-7.c
! 094911f6b40da48ba5c2b44f00817785  gcc/testsuite/c-c++-common/gomp/scan-8.c
  3d7523f39dbf3da04bbb0b7753d8ec5c  gcc/testsuite/c-c++-common/gomp/scan-9.c
  8af1ef16f27f56d5d687ed958b671d57  gcc/testsuite/c-c++-common/gomp/schedule-1.c
  67f96e7a06232d9ddf2c2926d87eb850  gcc/testsuite/c-c++-common/gomp/schedule-modifiers-1.c
*************** e413f648ce33386781b2b3e3e93cb96b  gcc/te
*** 20097,20103 ****
  e04f56a00b201b68dca47f2c9ef16e14  gcc/testsuite/c-c++-common/gomp/scope-4.c
  1dddd9515f72ddb10d1546f58ac06ef6  gcc/testsuite/c-c++-common/gomp/scope-5.c
  e3f7cf167693a8ad18d98c582934545d  gcc/testsuite/c-c++-common/gomp/scope-6.c
! 83ca1349741f8854425323fb5baf4987  gcc/testsuite/c-c++-common/gomp/scope-7.c
  efbed5b05719ed432c3a67037d609465  gcc/testsuite/c-c++-common/gomp/scope-8.c
  c038583116ace59c25138e987e477f21  gcc/testsuite/c-c++-common/gomp/sections1.c
  a51768554ba67aa659d21bbab17ca919  gcc/testsuite/c-c++-common/gomp/simd-setjmp-1.c
--- 20101,20107 ----
  e04f56a00b201b68dca47f2c9ef16e14  gcc/testsuite/c-c++-common/gomp/scope-4.c
  1dddd9515f72ddb10d1546f58ac06ef6  gcc/testsuite/c-c++-common/gomp/scope-5.c
  e3f7cf167693a8ad18d98c582934545d  gcc/testsuite/c-c++-common/gomp/scope-6.c
! 3494e2852cf2f1d9b6e1f422dbe0574b  gcc/testsuite/c-c++-common/gomp/scope-7.c
  efbed5b05719ed432c3a67037d609465  gcc/testsuite/c-c++-common/gomp/scope-8.c
  c038583116ace59c25138e987e477f21  gcc/testsuite/c-c++-common/gomp/sections1.c
  a51768554ba67aa659d21bbab17ca919  gcc/testsuite/c-c++-common/gomp/simd-setjmp-1.c
*************** dee5af747bd0ddc9371dcb5f4acebedc  gcc/te
*** 20110,20116 ****
  46e92b35d2398a842688290ab9b4d326  gcc/testsuite/c-c++-common/gomp/simd7.c
  cbcc4bef361026a7cc530337842d4576  gcc/testsuite/c-c++-common/gomp/simd8.c
  4763c84e6c50d72fa161297e3be84c0c  gcc/testsuite/c-c++-common/gomp/single1.c
! eb8749ae34c7b073185cb9fdc4e9943f  gcc/testsuite/c-c++-common/gomp/single2.c
  522837eb6e38eb50d487b2abe0b24c55  gcc/testsuite/c-c++-common/gomp/sink-1.c
  e38699fc95591670923b1df8841251b7  gcc/testsuite/c-c++-common/gomp/sink-2.c
  7aac68734460bf454d498a860bb03ca9  gcc/testsuite/c-c++-common/gomp/sink-3.c
--- 20114,20120 ----
  46e92b35d2398a842688290ab9b4d326  gcc/testsuite/c-c++-common/gomp/simd7.c
  cbcc4bef361026a7cc530337842d4576  gcc/testsuite/c-c++-common/gomp/simd8.c
  4763c84e6c50d72fa161297e3be84c0c  gcc/testsuite/c-c++-common/gomp/single1.c
! 4a931ba75416945ff562526d0f05a1a5  gcc/testsuite/c-c++-common/gomp/single2.c
  522837eb6e38eb50d487b2abe0b24c55  gcc/testsuite/c-c++-common/gomp/sink-1.c
  e38699fc95591670923b1df8841251b7  gcc/testsuite/c-c++-common/gomp/sink-2.c
  7aac68734460bf454d498a860bb03ca9  gcc/testsuite/c-c++-common/gomp/sink-3.c
*************** e38a861012a1449b45bab897d23db346  gcc/te
*** 21125,21130 ****
--- 21129,21135 ----
  f5c3f8c802beee48f514efd82c71f586  gcc/testsuite/c-c++-common/ubsan/overflow-sub-4.c
  a419ef4838cde6817792405820466636  gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
  2ca43a119b7a576e216390fb43e1dd13  gcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c
+ 7f8298374531835811915a4effa77042  gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c
  b4a30ebdc9604df4e34396d8e46b7889  gcc/testsuite/c-c++-common/ubsan/pr106990.c
  6356a42d2aca6eb5bd33f8baf0ab7190  gcc/testsuite/c-c++-common/ubsan/pr108256.c
  4283d2f43a803be7759bd958b4845122  gcc/testsuite/c-c++-common/ubsan/pr108880.c
*************** e7df9a3155c5c6021ee481fcc76afa2a  gcc/te
*** 22573,22579 ****
  e2355543a6960ac9e0e6c93fea9416ad  gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C
  bdcbd54afae98a7e47de8b30d238a280  gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C
  ca19b24e4ca61370ea7f7cfe8f438371  gcc/testsuite/g++.dg/analyzer/divide-by-zero-7.C
! d1eaf073a251f60143e80284bc5a504c  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
  8705636d8f03a04f16322230221596d5  gcc/testsuite/g++.dg/analyzer/exception-could-throw-1.C
  e975b4050956fb04b44b1cf687bc1223  gcc/testsuite/g++.dg/analyzer/exception-could-throw-2.C
  9ed2192e9fce6f116708829e93e5ff9d  gcc/testsuite/g++.dg/analyzer/exception-dynamic-spec.C
--- 22578,22588 ----
  e2355543a6960ac9e0e6c93fea9416ad  gcc/testsuite/g++.dg/analyzer/devirt-noexcept-1.C
  bdcbd54afae98a7e47de8b30d238a280  gcc/testsuite/g++.dg/analyzer/devirt-unknown-1.C
  ca19b24e4ca61370ea7f7cfe8f438371  gcc/testsuite/g++.dg/analyzer/divide-by-zero-7.C
! 4a5fc880a5aac0ff722887d3ac6e58a2  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
! c73dd185fab9059483306507abb8ea44  gcc/testsuite/g++.dg/analyzer/dyncast-2.C
! dfe4daef2310e02ff91a93b7832509c8  gcc/testsuite/g++.dg/analyzer/dyncast-3.C
! 9b2e681db5466ab2f868e11b7b1dedd3  gcc/testsuite/g++.dg/analyzer/dyncast-4.C
! f652cbdc2061b7fa2b810e1b25776b7f  gcc/testsuite/g++.dg/analyzer/dyncast-5.C
  8705636d8f03a04f16322230221596d5  gcc/testsuite/g++.dg/analyzer/exception-could-throw-1.C
  e975b4050956fb04b44b1cf687bc1223  gcc/testsuite/g++.dg/analyzer/exception-could-throw-2.C
  9ed2192e9fce6f116708829e93e5ff9d  gcc/testsuite/g++.dg/analyzer/exception-dynamic-spec.C
*************** d3992440eed37bacf3c1b2c2075afeca  gcc/te
*** 25042,25047 ****
--- 25051,25057 ----
  25f21baa02838e20e7b1cb692e279e2f  gcc/testsuite/g++.dg/cpp0x/initlist-array22.C
  b8d0d7227f1835ae94108da2b2b1d06d  gcc/testsuite/g++.dg/cpp0x/initlist-array23.C
  4812e08c472dcdea2ca5a5c09dd6d4fc  gcc/testsuite/g++.dg/cpp0x/initlist-array24.C
+ f1c869265be7444c4a6c2cfcb9d16874  gcc/testsuite/g++.dg/cpp0x/initlist-array25.C
  8c888f7ab5cc44480801a14718225380  gcc/testsuite/g++.dg/cpp0x/initlist-array3.C
  6c1907913d332611dd16d03002d759f9  gcc/testsuite/g++.dg/cpp0x/initlist-array4.C
  8758d8464674d29f4276f8d3ebc899c3  gcc/testsuite/g++.dg/cpp0x/initlist-array5.C
*************** c6b59c677bcd1cbdf89e61c5ca831e50  gcc/te
*** 25152,25157 ****
--- 25162,25168 ----
  f9c9bfbb17863359c1717c757bee25f5  gcc/testsuite/g++.dg/cpp0x/initlist132.C
  6e1221359009ba7551396f68f40ffd89  gcc/testsuite/g++.dg/cpp0x/initlist133.C
  4903e1d321cbf8e0e0052f03f44901fb  gcc/testsuite/g++.dg/cpp0x/initlist134.C
+ 400006a3ba6b93a887024aae8d0db351  gcc/testsuite/g++.dg/cpp0x/initlist135.C
  3071307e831ae441c218cbab9dbc1d8f  gcc/testsuite/g++.dg/cpp0x/initlist14.C
  7ba041ddd330ff5d7acc95724e263141  gcc/testsuite/g++.dg/cpp0x/initlist15.C
  0cbd5b9635cd71f3d6738db34fe5f5b4  gcc/testsuite/g++.dg/cpp0x/initlist16.C
*************** b29a1864b99db07583a850e2242025b0  gcc/te
*** 26175,26180 ****
--- 26186,26192 ----
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
  294b05915aa12fca6da4072d94c8ed55  gcc/testsuite/g++.dg/cpp0x/ref-qual20.C
  b5e0bd0074ec33c2369ad0e104f63179  gcc/testsuite/g++.dg/cpp0x/ref-qual21.C
+ 334a983e5e5ccb43816ae6eb84073fe0  gcc/testsuite/g++.dg/cpp0x/ref-qual22.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
  04e286455cb2774b8859179a063d46bb  gcc/testsuite/g++.dg/cpp0x/ref-qual5.C
*************** ac9f13854ea3e455a1371aaa819ee22a  gcc/te
*** 27918,27923 ****
--- 27930,27936 ----
  9f9fa73c4ae67e4de5904663c140998d  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations3.C
  5c459c469bb0c88af36817ae049e53f3  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations4.C
  6859dea5dbfe2133d0fd69cfd29b9164  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations5.C
+ 2cdac7b49796c47ed37cf44db24b507e  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations6.C
  712e0c3f886fdb90e5e03d39bd877f92  gcc/testsuite/g++.dg/cpp1z/inh-ctor1.C
  a5a039fe3394138160509efa1a2212c5  gcc/testsuite/g++.dg/cpp1z/inh-ctor22.C
  08e66730eb666f41f2d9476748d3745f  gcc/testsuite/g++.dg/cpp1z/inh-ctor23.C
*************** c72d14ea97191dbb2084a00c896b7069  gcc/te
*** 28315,28321 ****
  34ab61b0739accec69a4e37816f69c50  gcc/testsuite/g++.dg/cpp23/ext-floating11.C
  74bb8313529bd124a7cb6839aa5738f8  gcc/testsuite/g++.dg/cpp23/ext-floating12.C
  8cc9d0aee102e32cb9fdbbb7f94b195e  gcc/testsuite/g++.dg/cpp23/ext-floating13.C
! 77c1e1529829f7eb3643512344995ae5  gcc/testsuite/g++.dg/cpp23/ext-floating14.C
  2a9ad0ec05ab4b695b06b215a048e7f8  gcc/testsuite/g++.dg/cpp23/ext-floating15.C
  5f6d6376e0db5f076c02a48ff7041f93  gcc/testsuite/g++.dg/cpp23/ext-floating16.C
  5f9467211080e1f72a5a08b73e7a18b2  gcc/testsuite/g++.dg/cpp23/ext-floating17.C
--- 28328,28334 ----
  34ab61b0739accec69a4e37816f69c50  gcc/testsuite/g++.dg/cpp23/ext-floating11.C
  74bb8313529bd124a7cb6839aa5738f8  gcc/testsuite/g++.dg/cpp23/ext-floating12.C
  8cc9d0aee102e32cb9fdbbb7f94b195e  gcc/testsuite/g++.dg/cpp23/ext-floating13.C
! 88be81a0a3f7d5ce1b746536052fc207  gcc/testsuite/g++.dg/cpp23/ext-floating14.C
  2a9ad0ec05ab4b695b06b215a048e7f8  gcc/testsuite/g++.dg/cpp23/ext-floating15.C
  5f6d6376e0db5f076c02a48ff7041f93  gcc/testsuite/g++.dg/cpp23/ext-floating16.C
  5f9467211080e1f72a5a08b73e7a18b2  gcc/testsuite/g++.dg/cpp23/ext-floating17.C
*************** a6073e074c44b5f830037756b9110934  gcc/te
*** 28437,28442 ****
--- 28450,28457 ----
  43355f1cc013294de9951388e4f152fa  gcc/testsuite/g++.dg/cpp26/constexpr-eh21.C
  db870387b6079e42b01add3955155ce3  gcc/testsuite/g++.dg/cpp26/constexpr-eh22.C
  33742bb3c4bdff65ad4424d6965b75d6  gcc/testsuite/g++.dg/cpp26/constexpr-eh23.C
+ e6437545427b43a672d790f6788654b8  gcc/testsuite/g++.dg/cpp26/constexpr-eh24.C
+ f6ba830f5d4ced2653d01179e84d8502  gcc/testsuite/g++.dg/cpp26/constexpr-eh25.C
  26c369ca53153ae946088791d0790fa5  gcc/testsuite/g++.dg/cpp26/constexpr-eh3.C
  6ef0a812fa0528be79afea3ada17a5eb  gcc/testsuite/g++.dg/cpp26/constexpr-eh4.C
  1c0a703bddf109fe81f458c23001dcc2  gcc/testsuite/g++.dg/cpp26/constexpr-eh5.C
*************** c0b015cd02e07242444c2700f64e070a  gcc/te
*** 29371,29376 ****
--- 29386,29392 ----
  e94cea4fa4255420603d88768e70b36c  gcc/testsuite/g++.dg/cpp2a/constexpr-union8.C
  b00a4635a4c11366be17b4b6a45910f7  gcc/testsuite/g++.dg/cpp2a/constexpr-union9.C
  53f229837a5922ba8f93f5b121190ca5  gcc/testsuite/g++.dg/cpp2a/constexpr-vector1.C
+ 20c2b57d35bde6c16e096a5c6a8f8c71  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual-pr126324.C
  6d84a7bd78f9867ce0a07e6b0d26241b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual1.C
  974c3f89c0f3ffa8993db35751b7f993  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual10.C
  90499949f9ce8adc6318bfabadf24305  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual11.C
*************** dbedf20ea0a6712255d338a4ee121758  gcc/te
*** 30590,30596 ****
  dfa0fe611ce9682e5de477f908c0b5c0  gcc/testsuite/g++.dg/eh/omit-frame-pointer2.C
  b0149e5a2fbd5ae0fa0d1eb763a1f18e  gcc/testsuite/g++.dg/eh/partial1.C
  46bfc24a2e5089d869d2a1fe9868e445  gcc/testsuite/g++.dg/eh/pr112619.C
! 75f907ca623fa64f2cc3cc85bd818586  gcc/testsuite/g++.dg/eh/pr119507.C
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
  fa076f7aee99ba9138c0541bc50c2e01  gcc/testsuite/g++.dg/eh/pr38662.C
  3c71b722751263d1baefa007004a90bb  gcc/testsuite/g++.dg/eh/pr41819.C
--- 30606,30612 ----
  dfa0fe611ce9682e5de477f908c0b5c0  gcc/testsuite/g++.dg/eh/omit-frame-pointer2.C
  b0149e5a2fbd5ae0fa0d1eb763a1f18e  gcc/testsuite/g++.dg/eh/partial1.C
  46bfc24a2e5089d869d2a1fe9868e445  gcc/testsuite/g++.dg/eh/pr112619.C
! 9fd59eee0b96051febc6afa63d1d59b4  gcc/testsuite/g++.dg/eh/pr119507.C
  339f1ef3219aace218fecaa5c9b19c83  gcc/testsuite/g++.dg/eh/pr29166.C
  fa076f7aee99ba9138c0541bc50c2e01  gcc/testsuite/g++.dg/eh/pr38662.C
  3c71b722751263d1baefa007004a90bb  gcc/testsuite/g++.dg/eh/pr41819.C
*************** e044d983bce8db606bbd21120cc6a77d  gcc/te
*** 31632,31638 ****
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
! 8c1a53cd9e4e1b9fb0704282cb179e2b  gcc/testsuite/g++.dg/ext/sync-4.C
  fe2b610653d8cfc25626ade10b9f3f7e  gcc/testsuite/g++.dg/ext/temp-extend1.C
  2675e23e86fbe9a78af350a8266a3fc5  gcc/testsuite/g++.dg/ext/timevar1.C
  57829a88d996cfd97d30cc0272b34c02  gcc/testsuite/g++.dg/ext/timevar2.C
--- 31648,31654 ----
  e4a78d4631d98dda8d34b1baf828c158  gcc/testsuite/g++.dg/ext/sync-1.C
  7d2ab13d9258d8fc570367eacc626bf6  gcc/testsuite/g++.dg/ext/sync-2.C
  96d325d0b1cb729ac3fd1b3d32a6b67b  gcc/testsuite/g++.dg/ext/sync-3.C
! 6286c6521fde6f59c2645f386d2b2300  gcc/testsuite/g++.dg/ext/sync-4.C
  fe2b610653d8cfc25626ade10b9f3f7e  gcc/testsuite/g++.dg/ext/temp-extend1.C
  2675e23e86fbe9a78af350a8266a3fc5  gcc/testsuite/g++.dg/ext/timevar1.C
  57829a88d996cfd97d30cc0272b34c02  gcc/testsuite/g++.dg/ext/timevar2.C
*************** f009ccdcd68a9165d7d85f0d1a54ceb1  gcc/te
*** 33730,33746 ****
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
  cb526e2be6cc4214625ecb19179215f0  gcc/testsuite/g++.dg/lto/pr106409_0.C
  6e7e7fc204b3df6d8de9823aac948376  gcc/testsuite/g++.dg/lto/pr107467_0.C
! 0a39d2e9c16962015b5adf8bff3214c8  gcc/testsuite/g++.dg/lto/pr108772_0.C
  f1d9eed0025353353019a54838c87ed9  gcc/testsuite/g++.dg/lto/pr113208.h
  22230575f68a36106d16454407701753  gcc/testsuite/g++.dg/lto/pr113208_0.C
  36a6b4f47dbbdcca4469926f1398a598  gcc/testsuite/g++.dg/lto/pr113208_1.C
! 56055cfb3b55c9e36f0d7e5af4adee7f  gcc/testsuite/g++.dg/lto/pr114790_0.C
  944a89dbdddf4ca4f396efb802bbd896  gcc/testsuite/g++.dg/lto/pr114790_1.C
  09299bd83d910caa117e38cf3391ebd9  gcc/testsuite/g++.dg/lto/pr118785_0.C
  0bf8e2e773617db748eeab48c9570419  gcc/testsuite/g++.dg/lto/pr118817_0.C
  170fab8219ca5d2db78f5026f9bf82c8  gcc/testsuite/g++.dg/lto/pr119067_0.C
  c2fbc4281a4940f3ba50c956b391e55a  gcc/testsuite/g++.dg/lto/pr119067_1.C
! f8d194a431c9313cc0e794b5fcc15ac6  gcc/testsuite/g++.dg/lto/pr119614_0.C
  fca1ecf794ece1959ac2707634e0c851  gcc/testsuite/g++.dg/lto/pr121831_0.C
  1e3973e8017bb39e0770b6c9334d9d09  gcc/testsuite/g++.dg/lto/pr121831_1.C
  d15d49ffd84e37cdcbb1e23564c8c44e  gcc/testsuite/g++.dg/lto/pr121935_0.C
--- 33746,33762 ----
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
  cb526e2be6cc4214625ecb19179215f0  gcc/testsuite/g++.dg/lto/pr106409_0.C
  6e7e7fc204b3df6d8de9823aac948376  gcc/testsuite/g++.dg/lto/pr107467_0.C
! 65f9930e6447355ba5bd59e201920575  gcc/testsuite/g++.dg/lto/pr108772_0.C
  f1d9eed0025353353019a54838c87ed9  gcc/testsuite/g++.dg/lto/pr113208.h
  22230575f68a36106d16454407701753  gcc/testsuite/g++.dg/lto/pr113208_0.C
  36a6b4f47dbbdcca4469926f1398a598  gcc/testsuite/g++.dg/lto/pr113208_1.C
! caca7cc0a2cfa25bafb12a9d8847ba8e  gcc/testsuite/g++.dg/lto/pr114790_0.C
  944a89dbdddf4ca4f396efb802bbd896  gcc/testsuite/g++.dg/lto/pr114790_1.C
  09299bd83d910caa117e38cf3391ebd9  gcc/testsuite/g++.dg/lto/pr118785_0.C
  0bf8e2e773617db748eeab48c9570419  gcc/testsuite/g++.dg/lto/pr118817_0.C
  170fab8219ca5d2db78f5026f9bf82c8  gcc/testsuite/g++.dg/lto/pr119067_0.C
  c2fbc4281a4940f3ba50c956b391e55a  gcc/testsuite/g++.dg/lto/pr119067_1.C
! 126114cb670e5f0255217054e5fb1958  gcc/testsuite/g++.dg/lto/pr119614_0.C
  fca1ecf794ece1959ac2707634e0c851  gcc/testsuite/g++.dg/lto/pr121831_0.C
  1e3973e8017bb39e0770b6c9334d9d09  gcc/testsuite/g++.dg/lto/pr121831_1.C
  d15d49ffd84e37cdcbb1e23564c8c44e  gcc/testsuite/g++.dg/lto/pr121935_0.C
*************** e16ec991c91a1fecd1f045a13d50a6ab  gcc/te
*** 33854,33880 ****
  774e7ed2d836a73febe2f3b698184aa5  gcc/testsuite/g++.dg/lto/pr84805_1.C
  9e331b6a573e4b616f77b2582f99b74e  gcc/testsuite/g++.dg/lto/pr84805_2.C
  129aa46ac2a0e760a1f1095a3e7ccf6d  gcc/testsuite/g++.dg/lto/pr85176_0.C
! ca6a641a26a15c5c5731912d2d874c3b  gcc/testsuite/g++.dg/lto/pr85405_0.C
  6b08241fbab2563ac1bc2b6838307d72  gcc/testsuite/g++.dg/lto/pr85405_1.C
! 6a8b463789d0814e6c2a89108dbf113b  gcc/testsuite/g++.dg/lto/pr85405b_0.C
  64f65e433cdb387172dc218002619b04  gcc/testsuite/g++.dg/lto/pr85405b_1.C
! 02b248b8120fb299627dfd3d464c48d4  gcc/testsuite/g++.dg/lto/pr85655_0.C
  a2a55affe419021c9b6376fc45532a2e  gcc/testsuite/g++.dg/lto/pr86523-1_0.C
  caacc3167453e389ddbae2afe8b2783e  gcc/testsuite/g++.dg/lto/pr86523-2_0.C
! a8314436a41f1dc4907f2a4c022e4a6b  gcc/testsuite/g++.dg/lto/pr86523-3_0.C
! deea3f2d6e52f04ce3d419c1159d8b09  gcc/testsuite/g++.dg/lto/pr86585_0.C
  673d3ab73bd03ab13fa3d5710fb88309  gcc/testsuite/g++.dg/lto/pr86585_1.C
  f4601f8837f8226059c6d27ca124f445  gcc/testsuite/g++.dg/lto/pr87089_0.C
  b4a3c19d86c98fc593b0fa6cb8ee9161  gcc/testsuite/g++.dg/lto/pr87089_1.C
  f5b29bcb3455e7a41d5f4ada6a417007  gcc/testsuite/g++.dg/lto/pr87229_0.C
! 81b88749e859ad4a32ba5f3981adf134  gcc/testsuite/g++.dg/lto/pr87295_0.C
! 7a088116e2278fd2b2eefa451502a61f  gcc/testsuite/g++.dg/lto/pr87906_0.C
  3765785f4ebbc06f25c3f591fe650add  gcc/testsuite/g++.dg/lto/pr87906_1.C
! 287836e0e60eea7d7302c7986951e54a  gcc/testsuite/g++.dg/lto/pr88046_0.C
  a154c230ca678644ced231367fd697d3  gcc/testsuite/g++.dg/lto/pr88049_0.C
! 038f53a7a582a8128838e27592e7b611  gcc/testsuite/g++.dg/lto/pr88758_0.C
  5ddd8396b535cb08306863df28f22bf7  gcc/testsuite/g++.dg/lto/pr88758_1.C
! ea4edae735415c73e2a3055e504105dc  gcc/testsuite/g++.dg/lto/pr89330_0.C
  68d5a7d425f219b1683f4ca9cf340fbb  gcc/testsuite/g++.dg/lto/pr89330_1.C
  21c634d1187733a8392b17ae99b4cd06  gcc/testsuite/g++.dg/lto/pr89335_0.C
  f087207369821d14736504a2bf0da31d  gcc/testsuite/g++.dg/lto/pr89358_0.C
--- 33870,33896 ----
  774e7ed2d836a73febe2f3b698184aa5  gcc/testsuite/g++.dg/lto/pr84805_1.C
  9e331b6a573e4b616f77b2582f99b74e  gcc/testsuite/g++.dg/lto/pr84805_2.C
  129aa46ac2a0e760a1f1095a3e7ccf6d  gcc/testsuite/g++.dg/lto/pr85176_0.C
! c7cf2e7d6725dff10062875bdaef552c  gcc/testsuite/g++.dg/lto/pr85405_0.C
  6b08241fbab2563ac1bc2b6838307d72  gcc/testsuite/g++.dg/lto/pr85405_1.C
! cebdf42223eff528f28885d4c2a18392  gcc/testsuite/g++.dg/lto/pr85405b_0.C
  64f65e433cdb387172dc218002619b04  gcc/testsuite/g++.dg/lto/pr85405b_1.C
! 106ff4be167d0b698beefe3647295350  gcc/testsuite/g++.dg/lto/pr85655_0.C
  a2a55affe419021c9b6376fc45532a2e  gcc/testsuite/g++.dg/lto/pr86523-1_0.C
  caacc3167453e389ddbae2afe8b2783e  gcc/testsuite/g++.dg/lto/pr86523-2_0.C
! 94ce7d7b8b2906285220729fe7627de6  gcc/testsuite/g++.dg/lto/pr86523-3_0.C
! 3e351ad3b2ce0b45f75d63bd8d277196  gcc/testsuite/g++.dg/lto/pr86585_0.C
  673d3ab73bd03ab13fa3d5710fb88309  gcc/testsuite/g++.dg/lto/pr86585_1.C
  f4601f8837f8226059c6d27ca124f445  gcc/testsuite/g++.dg/lto/pr87089_0.C
  b4a3c19d86c98fc593b0fa6cb8ee9161  gcc/testsuite/g++.dg/lto/pr87089_1.C
  f5b29bcb3455e7a41d5f4ada6a417007  gcc/testsuite/g++.dg/lto/pr87229_0.C
! 80a430fb5f1cec7a0ac107be3aef413d  gcc/testsuite/g++.dg/lto/pr87295_0.C
! 7bd9c40524ad1a45e0020f22d6ea9785  gcc/testsuite/g++.dg/lto/pr87906_0.C
  3765785f4ebbc06f25c3f591fe650add  gcc/testsuite/g++.dg/lto/pr87906_1.C
! 13a50c96b7e880669873b8878f1fada7  gcc/testsuite/g++.dg/lto/pr88046_0.C
  a154c230ca678644ced231367fd697d3  gcc/testsuite/g++.dg/lto/pr88049_0.C
! 9c886613ff9d5b59b76ac1afa69a781b  gcc/testsuite/g++.dg/lto/pr88758_0.C
  5ddd8396b535cb08306863df28f22bf7  gcc/testsuite/g++.dg/lto/pr88758_1.C
! 3e5a0a771efb62c62961bcd26549a31f  gcc/testsuite/g++.dg/lto/pr89330_0.C
  68d5a7d425f219b1683f4ca9cf340fbb  gcc/testsuite/g++.dg/lto/pr89330_1.C
  21c634d1187733a8392b17ae99b4cd06  gcc/testsuite/g++.dg/lto/pr89335_0.C
  f087207369821d14736504a2bf0da31d  gcc/testsuite/g++.dg/lto/pr89358_0.C
*************** f087207369821d14736504a2bf0da31d  gcc/te
*** 33883,33894 ****
  52ac5c759138b17ea3fb0b5c2ad3e41c  gcc/testsuite/g++.dg/lto/pr90939_1.C
  445d2551442bc685a2e12fdc8173874f  gcc/testsuite/g++.dg/lto/pr90990_0.C
  f4fd4f3ad07ffe64bf370d8927987578  gcc/testsuite/g++.dg/lto/pr91572_0.C
! 895e652a3aee72b7eb633d05728f8192  gcc/testsuite/g++.dg/lto/pr91574_0.C
  ce8be172edac90152397f5825f64ab68  gcc/testsuite/g++.dg/lto/pr92476_0.C
  2279fea32375d396315b230d93c36811  gcc/testsuite/g++.dg/lto/pr92476_1.C
! f3edef1ce387276626f5233209353c56  gcc/testsuite/g++.dg/lto/pr92609_0.C
  42d332f131b2a45f8c5d542d547db308  gcc/testsuite/g++.dg/lto/pr92609_1.C
! 2d449b278a535f9f851a800e453b07a6  gcc/testsuite/g++.dg/lto/pr93166_0.C
  d92f918a28c68fc934d26fc7ceb822b5  gcc/testsuite/g++.dg/lto/pr96591_0.C
  b8735311421a9557b475c780e1712295  gcc/testsuite/g++.dg/lto/pr96690_0.C
  1fa0bf497eddaf27bc8b579ea2b690fc  gcc/testsuite/g++.dg/lto/pr97565_0.C
--- 33899,33910 ----
  52ac5c759138b17ea3fb0b5c2ad3e41c  gcc/testsuite/g++.dg/lto/pr90939_1.C
  445d2551442bc685a2e12fdc8173874f  gcc/testsuite/g++.dg/lto/pr90990_0.C
  f4fd4f3ad07ffe64bf370d8927987578  gcc/testsuite/g++.dg/lto/pr91572_0.C
! 05dd090a41647a9c4180e3e2d529e62c  gcc/testsuite/g++.dg/lto/pr91574_0.C
  ce8be172edac90152397f5825f64ab68  gcc/testsuite/g++.dg/lto/pr92476_0.C
  2279fea32375d396315b230d93c36811  gcc/testsuite/g++.dg/lto/pr92476_1.C
! f7675fc97cc85add859ef51216f0702c  gcc/testsuite/g++.dg/lto/pr92609_0.C
  42d332f131b2a45f8c5d542d547db308  gcc/testsuite/g++.dg/lto/pr92609_1.C
! 53bb03dd85ed4e99698075691f1df13b  gcc/testsuite/g++.dg/lto/pr93166_0.C
  d92f918a28c68fc934d26fc7ceb822b5  gcc/testsuite/g++.dg/lto/pr96591_0.C
  b8735311421a9557b475c780e1712295  gcc/testsuite/g++.dg/lto/pr96690_0.C
  1fa0bf497eddaf27bc8b579ea2b690fc  gcc/testsuite/g++.dg/lto/pr97565_0.C
*************** b040bc0531aab955a851fcd673e14e10  gcc/te
*** 35620,35625 ****
--- 35636,35643 ----
  abb264131cf69ea3d4038a76ed813597  gcc/testsuite/g++.dg/modules/ttp-2_b.C
  0e8353b097aca11633f48af143017b46  gcc/testsuite/g++.dg/modules/ttp-3_a.C
  45d12a3e78d3382cd9c35a1159dc0f12  gcc/testsuite/g++.dg/modules/ttp-3_b.C
+ 00832bb94c3fcf7cbbe07a71c11eaa6f  gcc/testsuite/g++.dg/modules/typeid-2_a.C
+ 9bdc6e7aae68cedfbcfee18ba993210f  gcc/testsuite/g++.dg/modules/typeid-2_b.C
  0caa5672645b8b70e134f077e695f1f4  gcc/testsuite/g++.dg/modules/typename-1_a.C
  d92fe811980f743f6ceae665d0e6d815  gcc/testsuite/g++.dg/modules/typename-1_b.C
  f0018549a1dd967c9debb3cdb1131d36  gcc/testsuite/g++.dg/modules/typename-friend_a.C
*************** fb6950cbb076d7da55a56c590cbfc523  gcc/te
*** 35799,35805 ****
  a8160be5c427e989337a9e60ca1149bc  gcc/testsuite/g++.dg/musttail9.C
  328d5426468f09a9a108df6191684b78  gcc/testsuite/g++.dg/no-stack-protector-attr-2.C
  d2e46c2469499fd1b1cb32a384d6bc81  gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
! 020cc92178f45d27f797218781bfe02c  gcc/testsuite/g++.dg/no-stack-protector-attr.C
  8782d87c3ab6e3b20b317d9f1492e146  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
  169bea5dd58c1746026b7e4924bbd199  gcc/testsuite/g++.dg/opt/20260703-1.C
--- 35817,35823 ----
  a8160be5c427e989337a9e60ca1149bc  gcc/testsuite/g++.dg/musttail9.C
  328d5426468f09a9a108df6191684b78  gcc/testsuite/g++.dg/no-stack-protector-attr-2.C
  d2e46c2469499fd1b1cb32a384d6bc81  gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
! 3a105d46d8c08c2fc12e6caea4020480  gcc/testsuite/g++.dg/no-stack-protector-attr.C
  8782d87c3ab6e3b20b317d9f1492e146  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
  169bea5dd58c1746026b7e4924bbd199  gcc/testsuite/g++.dg/opt/20260703-1.C
*************** fbf31592874c852b0610411198cae900  gcc/te
*** 36250,36256 ****
  c8d100425b84f9c19e66b664f68a043b  gcc/testsuite/g++.dg/opt/pr94589-4.C
  773505f38171e49de90c7709bc3fe5a4  gcc/testsuite/g++.dg/opt/pr94589-5.C
  a487e6d74fd928756dcb4bab9f939e11  gcc/testsuite/g++.dg/opt/pr94589-5a.C
! ac325b8a5465a9069dcb40f706f71e15  gcc/testsuite/g++.dg/opt/pr94589-6.C
  dacd41d6dbf618fb881768d6a068d7f1  gcc/testsuite/g++.dg/opt/pr94618.C
  68efdf843522ab51908aa0aba5c03000  gcc/testsuite/g++.dg/opt/pr95080.C
  676550989cb8fb3f894f5522d6476c32  gcc/testsuite/g++.dg/opt/pr95528.C
--- 36268,36274 ----
  c8d100425b84f9c19e66b664f68a043b  gcc/testsuite/g++.dg/opt/pr94589-4.C
  773505f38171e49de90c7709bc3fe5a4  gcc/testsuite/g++.dg/opt/pr94589-5.C
  a487e6d74fd928756dcb4bab9f939e11  gcc/testsuite/g++.dg/opt/pr94589-5a.C
! 28531bb3121c4f5b40f2bf03200d6674  gcc/testsuite/g++.dg/opt/pr94589-6.C
  dacd41d6dbf618fb881768d6a068d7f1  gcc/testsuite/g++.dg/opt/pr94618.C
  68efdf843522ab51908aa0aba5c03000  gcc/testsuite/g++.dg/opt/pr95080.C
  676550989cb8fb3f894f5522d6476c32  gcc/testsuite/g++.dg/opt/pr95528.C
*************** eda67a8394a25b381e47971e78264eba  gcc/te
*** 36527,36534 ****
  1dbd130359f81ed3f6a910388f6256c8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  3dd6e4901e3efacc8cfe5e0a42c2f8ea  gcc/testsuite/g++.dg/other/i386-11.C
! ef416bb75133f8e75c739b9ed1d2d9d2  gcc/testsuite/g++.dg/other/i386-2.C
! 31b802fabdfb1a2de4af52ea142c776a  gcc/testsuite/g++.dg/other/i386-3.C
  790380b4fd2857df28a8cc91aee8e723  gcc/testsuite/g++.dg/other/i386-4.C
  a47898b2c05fe055ea86fee50e074f30  gcc/testsuite/g++.dg/other/i386-7.C
  d92b54f21af3cda5d260ebf4a5d1b347  gcc/testsuite/g++.dg/other/i386-8.C
--- 36545,36552 ----
  1dbd130359f81ed3f6a910388f6256c8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  3dd6e4901e3efacc8cfe5e0a42c2f8ea  gcc/testsuite/g++.dg/other/i386-11.C
! 51221c86effec147c51aef94192ad8a5  gcc/testsuite/g++.dg/other/i386-2.C
! 1b514f45be2fe59c7de903a1af534286  gcc/testsuite/g++.dg/other/i386-3.C
  790380b4fd2857df28a8cc91aee8e723  gcc/testsuite/g++.dg/other/i386-4.C
  a47898b2c05fe055ea86fee50e074f30  gcc/testsuite/g++.dg/other/i386-7.C
  d92b54f21af3cda5d260ebf4a5d1b347  gcc/testsuite/g++.dg/other/i386-8.C
*************** bcbfe7a6746a7cf5019e4beb91dfc6e1  gcc/te
*** 38204,38212 ****
  75564b7e49fd2ca4aec72df58d4ce257  gcc/testsuite/g++.dg/reflect/lex1.C
  5047184a71ebc4613c16d57f58d02456  gcc/testsuite/g++.dg/reflect/lex2.C
  f6803b822ccb79238b24868d977699f4  gcc/testsuite/g++.dg/reflect/lwg4556.C
! 2c01ee658b468464c7b062651e5ac9cc  gcc/testsuite/g++.dg/reflect/mangle1.C
  8adb63c51e98fb1692e89416e0887655  gcc/testsuite/g++.dg/reflect/mangle2.C
! ea720c7f072506efc4d68f19c28f450d  gcc/testsuite/g++.dg/reflect/mangle3.C
  96900c06aa6df121875dd7f2ecc5b7a3  gcc/testsuite/g++.dg/reflect/mangle4.C
  13986cd705d67b3899c41c5cf5ce22c2  gcc/testsuite/g++.dg/reflect/mangle5.C
  2f2f67f28be6797089b2072e815b969d  gcc/testsuite/g++.dg/reflect/mangle6.C
--- 38222,38230 ----
  75564b7e49fd2ca4aec72df58d4ce257  gcc/testsuite/g++.dg/reflect/lex1.C
  5047184a71ebc4613c16d57f58d02456  gcc/testsuite/g++.dg/reflect/lex2.C
  f6803b822ccb79238b24868d977699f4  gcc/testsuite/g++.dg/reflect/lwg4556.C
! 25f71cde3b88f13b0129cc46ec7ac317  gcc/testsuite/g++.dg/reflect/mangle1.C
  8adb63c51e98fb1692e89416e0887655  gcc/testsuite/g++.dg/reflect/mangle2.C
! 23b425539b582c0e0f819f087d78fbfc  gcc/testsuite/g++.dg/reflect/mangle3.C
  96900c06aa6df121875dd7f2ecc5b7a3  gcc/testsuite/g++.dg/reflect/mangle4.C
  13986cd705d67b3899c41c5cf5ce22c2  gcc/testsuite/g++.dg/reflect/mangle5.C
  2f2f67f28be6797089b2072e815b969d  gcc/testsuite/g++.dg/reflect/mangle6.C
*************** acdd73b149c3c54aa0d80b81c86a5a4c  gcc/te
*** 38382,38388 ****
  b639489bfb9c0b44bfbd5d2633ecb9f9  gcc/testsuite/g++.dg/reflect/size_of2.C
  b54591a1a4cb544aba9831eba6b8174b  gcc/testsuite/g++.dg/reflect/source_location_of1.C
  82420344ec3910dc9c675d2a50b6dd1a  gcc/testsuite/g++.dg/reflect/source_location_of2.C
! ae74f7e0fcb5cd481ffc4f5cdabaaea7  gcc/testsuite/g++.dg/reflect/splice1.C
  97e5f556b97d037ef366e43588c23406  gcc/testsuite/g++.dg/reflect/splice10.C
  af18aac150e2da16b8511edc29458f59  gcc/testsuite/g++.dg/reflect/splice11.C
  d20c15bde9b075e8a72181fbeddab319  gcc/testsuite/g++.dg/reflect/splice12.C
--- 38400,38406 ----
  b639489bfb9c0b44bfbd5d2633ecb9f9  gcc/testsuite/g++.dg/reflect/size_of2.C
  b54591a1a4cb544aba9831eba6b8174b  gcc/testsuite/g++.dg/reflect/source_location_of1.C
  82420344ec3910dc9c675d2a50b6dd1a  gcc/testsuite/g++.dg/reflect/source_location_of2.C
! e0640946e1538be39a72106fd7878629  gcc/testsuite/g++.dg/reflect/splice1.C
  97e5f556b97d037ef366e43588c23406  gcc/testsuite/g++.dg/reflect/splice10.C
  af18aac150e2da16b8511edc29458f59  gcc/testsuite/g++.dg/reflect/splice11.C
  d20c15bde9b075e8a72181fbeddab319  gcc/testsuite/g++.dg/reflect/splice12.C
*************** e4d0b292389630976cca25f6a5808a1e  gcc/te
*** 39645,39650 ****
--- 39663,39669 ----
  14967698fd85bf0506454b2df17f8d2a  gcc/testsuite/g++.dg/template/pr108206.C
  47c32753e30b4754695e8eabfcc1e9f5  gcc/testsuite/g++.dg/template/pr119138.C
  7ccb75d299fb426ac22efe4f1aa75da1  gcc/testsuite/g++.dg/template/pr123354.C
+ ed7fd26753f029d62d257a19a3c7dc37  gcc/testsuite/g++.dg/template/pr124983.C
  1cb28c70209f6da9c6fd5dc25fde1e1a  gcc/testsuite/g++.dg/template/pr16564.C
  ada1f30ea7c959c2a12b240ba308c1bf  gcc/testsuite/g++.dg/template/pr17410.C
  d87951fd4d4a384028f64a2c9e34ee94  gcc/testsuite/g++.dg/template/pr18969-2.C
*************** ef236de4cb2953e4ae9611ca82a811cd  gcc/te
*** 40454,40460 ****
  696b18cb2751957122c0655625ba8e7a  gcc/testsuite/g++.dg/torture/pr115961-run-1.C
  37159e5713686265e83cfd5cfb251a57  gcc/testsuite/g++.dg/torture/pr116098-1.C
  8a5551a839a0c7832584191b3f99dc68  gcc/testsuite/g++.dg/torture/pr116120-1.C
! fa3eb49d141be82f24a5e8e56a15924e  gcc/testsuite/g++.dg/torture/pr116120-2.C
  27830acd09936c62cc82cadee63f07f4  gcc/testsuite/g++.dg/torture/pr116179-1.C
  fd07ffe5c1e039cfac5f0e7fcc3190eb  gcc/testsuite/g++.dg/torture/pr116460.C
  9e718d66b3d12dbf53df81ed7a04ddbb  gcc/testsuite/g++.dg/torture/pr116783.C
--- 40473,40479 ----
  696b18cb2751957122c0655625ba8e7a  gcc/testsuite/g++.dg/torture/pr115961-run-1.C
  37159e5713686265e83cfd5cfb251a57  gcc/testsuite/g++.dg/torture/pr116098-1.C
  8a5551a839a0c7832584191b3f99dc68  gcc/testsuite/g++.dg/torture/pr116120-1.C
! 3ee8dcae3ad19308747ecb3f0f36f3bf  gcc/testsuite/g++.dg/torture/pr116120-2.C
  27830acd09936c62cc82cadee63f07f4  gcc/testsuite/g++.dg/torture/pr116179-1.C
  fd07ffe5c1e039cfac5f0e7fcc3190eb  gcc/testsuite/g++.dg/torture/pr116460.C
  9e718d66b3d12dbf53df81ed7a04ddbb  gcc/testsuite/g++.dg/torture/pr116783.C
*************** cba0d4ad4eb20d07d7b8faa8a679415f  gcc/te
*** 41316,41323 ****
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
  d0016ead88409af28f506089528155ae  gcc/testsuite/g++.dg/tree-ssa/value-expr1.C
  ee5f35c1e0d0183f37f4bef5ff673e11  gcc/testsuite/g++.dg/tree-ssa/value-expr2.C
! e0d76c37b1e32609ed3484a6321680df  gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C
! b1ae97ec62ebf50a4776a03d9b2478a8  gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C
  3305506c315412907d9095dfb88e572b  gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C
  67826d6c8638dba46a4b37835998f34a  gcc/testsuite/g++.dg/tree-ssa/volatile1.C
  927ac273b42ce90eecf5fb0ad135f1c0  gcc/testsuite/g++.dg/tree-ssa/volatile2.C
--- 41335,41342 ----
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
  d0016ead88409af28f506089528155ae  gcc/testsuite/g++.dg/tree-ssa/value-expr1.C
  ee5f35c1e0d0183f37f4bef5ff673e11  gcc/testsuite/g++.dg/tree-ssa/value-expr2.C
! c6b9f3e7b5704648438f5e1532537ca3  gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C
! d232fad76ee14d9d89cf1dd2f6454692  gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C
  3305506c315412907d9095dfb88e572b  gcc/testsuite/g++.dg/tree-ssa/vector-compare-1.C
  67826d6c8638dba46a4b37835998f34a  gcc/testsuite/g++.dg/tree-ssa/volatile1.C
  927ac273b42ce90eecf5fb0ad135f1c0  gcc/testsuite/g++.dg/tree-ssa/volatile2.C
*************** bc255ba4628b94d5377f0ba915ad26da  gcc/te
*** 46259,46265 ****
  3d9d0eab236b8df9ede7facb39d0db68  gcc/testsuite/g++.target/i386/mv25.C
  c3abd0fb44ca490064aaa6988814d40c  gcc/testsuite/g++.target/i386/mv26.C
  203c2fb05767e713a362682a2dcedfc7  gcc/testsuite/g++.target/i386/mv27.C
! 40932b515fb9f24850535ab3021f3da7  gcc/testsuite/g++.target/i386/mv28.C
  564e257b536db045b9bce6baaf544c40  gcc/testsuite/g++.target/i386/mv29.C
  bad9a677892adffe2c45653797aad55c  gcc/testsuite/g++.target/i386/mv3.C
  8e16cb4ef8b3ee3b728e21112c7331d1  gcc/testsuite/g++.target/i386/mv30.C
--- 46278,46284 ----
  3d9d0eab236b8df9ede7facb39d0db68  gcc/testsuite/g++.target/i386/mv25.C
  c3abd0fb44ca490064aaa6988814d40c  gcc/testsuite/g++.target/i386/mv26.C
  203c2fb05767e713a362682a2dcedfc7  gcc/testsuite/g++.target/i386/mv27.C
! 620347645f81f273070cb694ae43cab8  gcc/testsuite/g++.target/i386/mv28.C
  564e257b536db045b9bce6baaf544c40  gcc/testsuite/g++.target/i386/mv29.C
  bad9a677892adffe2c45653797aad55c  gcc/testsuite/g++.target/i386/mv3.C
  8e16cb4ef8b3ee3b728e21112c7331d1  gcc/testsuite/g++.target/i386/mv30.C
*************** fe98d8bd643079ebf7d12496d3189d03  gcc/te
*** 46384,46389 ****
--- 46403,46410 ----
  8f297166e83d789d19e7836ae95ce7f3  gcc/testsuite/g++.target/i386/pr124136.C
  5e8bf5da132fba3705e11a2cd873dcf7  gcc/testsuite/g++.target/i386/pr125009.C
  5e352aabf7f3698e1bb6dff0ccccca8a  gcc/testsuite/g++.target/i386/pr126202-1.C
+ 48f8f8e46c59d68141ec8b3ce38d5a43  gcc/testsuite/g++.target/i386/pr126784-1.C
+ 9a7b04d2da2790a8643d326433403a8e  gcc/testsuite/g++.target/i386/pr126784-2.C
  55fb67abf6517f92b1a0240d2c06b5c5  gcc/testsuite/g++.target/i386/pr35513-1.C
  14dde546e4eefec7aa6d1ac41261cb16  gcc/testsuite/g++.target/i386/pr35513-2.C
  1c706f97b6d93c0124dc4a203c98f6d2  gcc/testsuite/g++.target/i386/pr57362.C
*************** bb74b6c9495308ab73ce64ff3cfd9543  gcc/te
*** 46684,46689 ****
--- 46705,46711 ----
  874d1adf030c6930443f00e75573b0e8  gcc/testsuite/g++.target/riscv/rvv/rvv.exp
  0f6d3519b642a314a2ed539fd0c405c3  gcc/testsuite/g++.target/riscv/rvv/xtheadvector/pr116593.C
  29c59eab59171770b63bcff70c7566ab  gcc/testsuite/g++.target/riscv/stack-tie-unwind.C
+ fe65b7f6528283b75bedb45cc5cb9480  gcc/testsuite/g++.target/riscv/vls-cc-empty-aggregate.C
  7706065bc90a41a722cf08ed55f9f4ce  gcc/testsuite/g++.target/riscv/zicfilp-thunk.C
  737eebb4901981753937ddcc65184708  gcc/testsuite/g++.target/s390/atomic-align-1.C
  a4ea51c05f73fa50108f4536f172c84a  gcc/testsuite/g++.target/s390/builtin-array-arg-1.C
*************** c110a0e097184d9410d001051c6a502c  gcc/te
*** 47507,47514 ****
  152fb49f88b02373c2259108a6512933  gcc/testsuite/gcc.c-torture/compile/asmgoto-6.c
  6e9cb7f7a352ebadff4fcfa5eac8ef03  gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c
  f25a713313e0a0629373dc1bb59fb576  gcc/testsuite/gcc.c-torture/compile/attr-complex-method.c
! fe0b642a1ee950fcb0e5fda7ebeb6b2b  gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
! 9b12b444fbfca7b8ac01030bb72862a9  gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
  8a9b7bf614f9d20255788ba0d3540906  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-1.c
  cf29661adfd8c35d98087c4f05c34bf6  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-2.c
  d462cff4af0c93c004690f8137d173f1  gcc/testsuite/gcc.c-torture/compile/b.c
--- 47529,47536 ----
  152fb49f88b02373c2259108a6512933  gcc/testsuite/gcc.c-torture/compile/asmgoto-6.c
  6e9cb7f7a352ebadff4fcfa5eac8ef03  gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c
  f25a713313e0a0629373dc1bb59fb576  gcc/testsuite/gcc.c-torture/compile/attr-complex-method.c
! eea73ec0a7191058269a75859b1fbe3c  gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
! 0edaa077a44234b7ffa2f1056a0305b0  gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
  8a9b7bf614f9d20255788ba0d3540906  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-1.c
  cf29661adfd8c35d98087c4f05c34bf6  gcc/testsuite/gcc.c-torture/compile/attr-used-retain-2.c
  d462cff4af0c93c004690f8137d173f1  gcc/testsuite/gcc.c-torture/compile/b.c
*************** a024382373a506e7761148108043c429  gcc/te
*** 49204,49210 ****
  03e6abf4c7580822fb8fcbb32c3bb34a  gcc/testsuite/gcc.c-torture/execute/20181120-1.c
  ecbbfd4b186a0dd8448d96f39a543fb4  gcc/testsuite/gcc.c-torture/execute/20190228-1.c
  3bf74092e8da609b8688da0cf7384a7d  gcc/testsuite/gcc.c-torture/execute/20190820-1.c
! 8476af17c3a5d7a639fdbdcad1641482  gcc/testsuite/gcc.c-torture/execute/20190901-1.c
  2e368329bfad3d99e406eade7d55032d  gcc/testsuite/gcc.c-torture/execute/20191023-1.c
  b4ae081235a5dc1e90b1adea7befe6cf  gcc/testsuite/gcc.c-torture/execute/20210505-1.c
  318f0b7324815bae3c8b8b75f6381ddb  gcc/testsuite/gcc.c-torture/execute/20221006-1.c
--- 49226,49232 ----
  03e6abf4c7580822fb8fcbb32c3bb34a  gcc/testsuite/gcc.c-torture/execute/20181120-1.c
  ecbbfd4b186a0dd8448d96f39a543fb4  gcc/testsuite/gcc.c-torture/execute/20190228-1.c
  3bf74092e8da609b8688da0cf7384a7d  gcc/testsuite/gcc.c-torture/execute/20190820-1.c
! a11b286a80401485a9ad757e118ddf04  gcc/testsuite/gcc.c-torture/execute/20190901-1.c
  2e368329bfad3d99e406eade7d55032d  gcc/testsuite/gcc.c-torture/execute/20191023-1.c
  b4ae081235a5dc1e90b1adea7befe6cf  gcc/testsuite/gcc.c-torture/execute/20210505-1.c
  318f0b7324815bae3c8b8b75f6381ddb  gcc/testsuite/gcc.c-torture/execute/20221006-1.c
*************** cb4c82184137c0933c1bae60a7df15bc  gcc/te
*** 50022,50027 ****
--- 50044,50051 ----
  608550ce880607fac32d304e57877431  gcc/testsuite/gcc.c-torture/execute/pr126405-2.c
  2f6303a3292ca140f3a45d8991ce2671  gcc/testsuite/gcc.c-torture/execute/pr126405-3.c
  398c91d12795072b1c8b4324f6e28d2e  gcc/testsuite/gcc.c-torture/execute/pr126405.c
+ 17f91607cb0480332b9db9db90f2efec  gcc/testsuite/gcc.c-torture/execute/pr126501.c
+ 7b1953017dad7374f7c638ba02cfe870  gcc/testsuite/gcc.c-torture/execute/pr126747.c
  80c02c70a0b6b91b06942e395c34960f  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  987c511633ad57d9f08d352eb9512819  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  f7f514cfbd791b0c828e0710493b0910  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** d9e45b781a97ee5ac71b788011eae52c  gcc/te
*** 53746,53755 ****
  2b48928f2bd195ac844588f7ca503b99  gcc/testsuite/gcc.dg/cleanup-9.c
  511209a2170cfb8d8b536d67b3012d4b  gcc/testsuite/gcc.dg/cmp-mem-const-1.c
  ff9b76460e8f733216b81ea35e9a0e97  gcc/testsuite/gcc.dg/cmp-mem-const-2.c
! 0e0404e574882e746f083b4e342b199e  gcc/testsuite/gcc.dg/cmp-mem-const-3.c
! 1e7f131c6c9aac4217b1aa657fe6deac  gcc/testsuite/gcc.dg/cmp-mem-const-4.c
! fbf489c058782ade1afff9b3e1a414f1  gcc/testsuite/gcc.dg/cmp-mem-const-5.c
! 347df99eff501e0be14f1176761cf6de  gcc/testsuite/gcc.dg/cmp-mem-const-6.c
  5ea0b2e2762698a1e297f260e66cba1c  gcc/testsuite/gcc.dg/cold-1.c
  49d4c3b6c4537cb277dd677c007e06a7  gcc/testsuite/gcc.dg/combine-clobber.c
  692ff616829ae420250cb45b76479307  gcc/testsuite/gcc.dg/combine-subregs.c
--- 53770,53779 ----
  2b48928f2bd195ac844588f7ca503b99  gcc/testsuite/gcc.dg/cleanup-9.c
  511209a2170cfb8d8b536d67b3012d4b  gcc/testsuite/gcc.dg/cmp-mem-const-1.c
  ff9b76460e8f733216b81ea35e9a0e97  gcc/testsuite/gcc.dg/cmp-mem-const-2.c
! a4abeb27af8ccf5456a7fea1ae378298  gcc/testsuite/gcc.dg/cmp-mem-const-3.c
! 70c0c7e47b3fd812694def0e09a1a272  gcc/testsuite/gcc.dg/cmp-mem-const-4.c
! 4d089b9bbdf09b340fc6a114333ceba1  gcc/testsuite/gcc.dg/cmp-mem-const-5.c
! d5e9a35ca93f86af42855f33360b62f0  gcc/testsuite/gcc.dg/cmp-mem-const-6.c
  5ea0b2e2762698a1e297f260e66cba1c  gcc/testsuite/gcc.dg/cold-1.c
  49d4c3b6c4537cb277dd677c007e06a7  gcc/testsuite/gcc.dg/combine-clobber.c
  692ff616829ae420250cb45b76479307  gcc/testsuite/gcc.dg/combine-subregs.c
*************** aa784fbfc6bf05182c5d2918b3f6a5fb  gcc/te
*** 55641,55646 ****
--- 55665,55671 ----
  541807dee27cf9a7faddef7819cd8184  gcc/testsuite/gcc.dg/fold-and-rshift-2.c
  f37fadcde67294fac1b37ae7f174f5f6  gcc/testsuite/gcc.dg/fold-andxor-1.c
  fcb1ce541d503e22e4e73216c91e6b29  gcc/testsuite/gcc.dg/fold-bcopy.c
+ a5d8a8dceac7f52ce4325233517c61a5  gcc/testsuite/gcc.dg/fold-bit-test-combine-1.c
  31b8159ac3be55870efe4b8cf71361b0  gcc/testsuite/gcc.dg/fold-bitand-1.c
  647a959b2f50ead9c5374764cf1cec23  gcc/testsuite/gcc.dg/fold-bitand-2.c
  981cd3ceab0ce4e3e6e60f1b430d0ffa  gcc/testsuite/gcc.dg/fold-bitand-3.c
*************** f3b0cfa8a6b33e8a81636f65dfcac5e8  gcc/te
*** 55713,55718 ****
--- 55738,55744 ----
  a5e2dbd5c41bfadcee229c5e5cfecb88  gcc/testsuite/gcc.dg/fold-minus-6.c
  6410fc5db420a362c42405a76e0ba45b  gcc/testsuite/gcc.dg/fold-minus-7.c
  7d68803d70c17f17a90c352000bcd79d  gcc/testsuite/gcc.dg/fold-mod-1.c
+ d9ea8ec2e846bb90fd60ec9387b56f0c  gcc/testsuite/gcc.dg/fold-mod-mult-1.c
  9f3eab917884f349357c8e26303caf57  gcc/testsuite/gcc.dg/fold-modpow2-2.c
  756a61ce538f9f3b4770dd97dbc536d1  gcc/testsuite/gcc.dg/fold-modpow2.c
  b32d3c8cad17a41778635c17c5b255b3  gcc/testsuite/gcc.dg/fold-mul-and-lshift-1.c
*************** e73a81b78ce09634b29ea8c39f657b96  gcc/te
*** 55999,56004 ****
--- 56025,56033 ----
  60038904600387aa6298e05a5d46e74f  gcc/testsuite/gcc.dg/fuse-caller-save.c
  8a53a31cb6a7ccbc98d66b16851d8053  gcc/testsuite/gcc.dg/fwrapv-1.c
  f9529b0f4fa81996122f55df493f75c2  gcc/testsuite/gcc.dg/fwrapv-2.c
+ 126b37e683460ce5442b3f0eea910bd2  gcc/testsuite/gcc.dg/fwrite-1.c
+ 61dbed9f922c1e48b82dc9aeba84caa0  gcc/testsuite/gcc.dg/fwrite-2.c
+ 980fd7b8cd7b9bdc0ecdabcfd78bb9fb  gcc/testsuite/gcc.dg/fwrite-3.c
  4c9e8d7d2b6fc94e654e298890d9a70c  gcc/testsuite/gcc.dg/gcc-have-sync-compare-and-swap.c
  b3111be6a84280c0981b5d81e969e9e9  gcc/testsuite/gcc.dg/gcov-atomic-or-zero.c
  7da46cabcabc5b6f2ea21e5951ce83b7  gcc/testsuite/gcc.dg/gcov-info-to-gcda.c
*************** ee0c3ba150290bda1153f3076c3303b4  gcc/te
*** 57493,57498 ****
--- 57522,57528 ----
  0719df2af362b74f64d07659e78dbc9d  gcc/testsuite/gcc.dg/long-long-compare-1.c
  ffe4d747ae708d9b7c4aa0999dc0837a  gcc/testsuite/gcc.dg/long-long-cst1.c
  2fc326204806db0bd76fbba4686929cd  gcc/testsuite/gcc.dg/long-long-typespec-1.c
+ 3f7421477db6e6aa702630e7c0ffba15  gcc/testsuite/gcc.dg/long-mul-128-Og.c
  ef82a96160fbdc16c3ae89b852af04d5  gcc/testsuite/gcc.dg/long_branch.c
  bf870f767c6be672a0cfc990dd97f936  gcc/testsuite/gcc.dg/loop-1.c
  6b5237c8148a38f20728981213824d52  gcc/testsuite/gcc.dg/loop-2.c
*************** c712274fdef323c534029cdcf691aa73  gcc/te
*** 57849,57855 ****
  3ce380dc49e4f5afb926994881824b04  gcc/testsuite/gcc.dg/lto/pr60911_0.c
  4065fe6d7242de3a94a81bc99cad737e  gcc/testsuite/gcc.dg/lto/pr61278_0.c
  08ab34a17841745d13bb0bd1d8c7b643  gcc/testsuite/gcc.dg/lto/pr61278_1.c
! 748a0f3c870e6380e288e23f4837066c  gcc/testsuite/gcc.dg/lto/pr61526_0.c
  962b3087915e41e8111b94acdd55b56e  gcc/testsuite/gcc.dg/lto/pr61526_1.c
  85cd93bef18b0b5793741381b6750b14  gcc/testsuite/gcc.dg/lto/pr61786_0.c
  1e2e8c147aee3d7cb7c322fd3c4a12d8  gcc/testsuite/gcc.dg/lto/pr61786_1.c
--- 57879,57885 ----
  3ce380dc49e4f5afb926994881824b04  gcc/testsuite/gcc.dg/lto/pr60911_0.c
  4065fe6d7242de3a94a81bc99cad737e  gcc/testsuite/gcc.dg/lto/pr61278_0.c
  08ab34a17841745d13bb0bd1d8c7b643  gcc/testsuite/gcc.dg/lto/pr61278_1.c
! fb4ada7306396c3a782dd6bc6e0263b4  gcc/testsuite/gcc.dg/lto/pr61526_0.c
  962b3087915e41e8111b94acdd55b56e  gcc/testsuite/gcc.dg/lto/pr61526_1.c
  85cd93bef18b0b5793741381b6750b14  gcc/testsuite/gcc.dg/lto/pr61786_0.c
  1e2e8c147aee3d7cb7c322fd3c4a12d8  gcc/testsuite/gcc.dg/lto/pr61786_1.c
*************** f3ddaafbd41e029de837b4ac21bd6a3c  gcc/te
*** 58925,58931 ****
  b9bb28365f65c1f3f49aa06b5bc33ed3  gcc/testsuite/gcc.dg/pr108423-4.c
  8d80a86de08e17c289f4276f7db3a8b1  gcc/testsuite/gcc.dg/pr108423-5.c
  24c818f5749c897661bb2d4a7e163545  gcc/testsuite/gcc.dg/pr108423-6.c
! 60ea2c19441da71df58ec088daf3d829  gcc/testsuite/gcc.dg/pr108447.c
  de94641db5f202a1a636dbdf4e798129  gcc/testsuite/gcc.dg/pr108449.c
  138236578f41448aaca50b7c8d6a4881  gcc/testsuite/gcc.dg/pr108463.c
  e0baf0198b26b94a0e92182918c52449  gcc/testsuite/gcc.dg/pr108573.c
--- 58955,58961 ----
  b9bb28365f65c1f3f49aa06b5bc33ed3  gcc/testsuite/gcc.dg/pr108423-4.c
  8d80a86de08e17c289f4276f7db3a8b1  gcc/testsuite/gcc.dg/pr108423-5.c
  24c818f5749c897661bb2d4a7e163545  gcc/testsuite/gcc.dg/pr108423-6.c
! 3c28083e2ce1404ed6e792fc8f5ff349  gcc/testsuite/gcc.dg/pr108447.c
  de94641db5f202a1a636dbdf4e798129  gcc/testsuite/gcc.dg/pr108449.c
  138236578f41448aaca50b7c8d6a4881  gcc/testsuite/gcc.dg/pr108463.c
  e0baf0198b26b94a0e92182918c52449  gcc/testsuite/gcc.dg/pr108573.c
*************** cb2e908e56265acf56829462158a2436  gcc/te
*** 59401,59408 ****
--- 59431,59440 ----
  b0d8cd5bef1be5bafd5cc8e986aed427  gcc/testsuite/gcc.dg/pr126648.c
  4cac82a4bb8865a31e0564aeae4b029c  gcc/testsuite/gcc.dg/pr126667.c
  392355f408b3601d2aed335f95ed3c73  gcc/testsuite/gcc.dg/pr126701.c
+ fd03802730b45d8460f0ca64801be083  gcc/testsuite/gcc.dg/pr126775.c
  1fe80872415fa4195e6d5e8a7b0d4fae  gcc/testsuite/gcc.dg/pr126814.c
  a8fb6749607a2300d934e61cd66cf96c  gcc/testsuite/gcc.dg/pr126845.c
+ 0df304e16cbf1e0f7e3dac24e1a10869  gcc/testsuite/gcc.dg/pr126856.c
  6f0ef61e5a12db5f11da839b2988c5e1  gcc/testsuite/gcc.dg/pr13519-1.c
  86dc5cfaafafc79e11d0559d71baea6b  gcc/testsuite/gcc.dg/pr13804-1.c
  2a52cc05fb1415e0eafbc468a7ccc138  gcc/testsuite/gcc.dg/pr14092-1.c
*************** ea3f6e969ab9dbd27c6e364f6cd1e41c  gcc/te
*** 61269,61275 ****
  ff1ea6723ba5f97b174e3719ef7092da  gcc/testsuite/gcc.dg/pr94589-4.c
  fa5cf07cf365e21805e497d9a47749bf  gcc/testsuite/gcc.dg/pr94589-5.c
  fceddc68e3f17ef4047b6e5964d03903  gcc/testsuite/gcc.dg/pr94589-5a.c
! 3f415487cf7489c02d6cb504e8979a05  gcc/testsuite/gcc.dg/pr94589-6.c
  9d934bfa6d016390e51f5246cf15a083  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
  eaf63adfe02395ba887103318bf0daac  gcc/testsuite/gcc.dg/pr94600-3.c
--- 61301,61307 ----
  ff1ea6723ba5f97b174e3719ef7092da  gcc/testsuite/gcc.dg/pr94589-4.c
  fa5cf07cf365e21805e497d9a47749bf  gcc/testsuite/gcc.dg/pr94589-5.c
  fceddc68e3f17ef4047b6e5964d03903  gcc/testsuite/gcc.dg/pr94589-5a.c
! 46bc4db47c7e50800da6c55a91e580dc  gcc/testsuite/gcc.dg/pr94589-6.c
  9d934bfa6d016390e51f5246cf15a083  gcc/testsuite/gcc.dg/pr94600-1.c
  515ded7ae44445fdd45ad77c875a9139  gcc/testsuite/gcc.dg/pr94600-2.c
  eaf63adfe02395ba887103318bf0daac  gcc/testsuite/gcc.dg/pr94600-3.c
*************** f0a1bd5cc270e13becf981eb233f7700  gcc/te
*** 61743,61749 ****
  c2f10738d2847185fff9231ef3d7e7a9  gcc/testsuite/gcc.dg/single-precision-constant.c
  6bb18e1a3b4b2d29b4411831abebcd72  gcc/testsuite/gcc.dg/sinhatanh-1.c
  773e7831f773bced75045d1439f7a789  gcc/testsuite/gcc.dg/sinhatanh-2.c
! e4817f4cbbc234632617f0235660831b  gcc/testsuite/gcc.dg/sinhatanh-3.c
  46be905f621bb02c7f68a68091c40997  gcc/testsuite/gcc.dg/sinhovercosh-1.c
  1d3e0706d79c3f973becdc3a20a01620  gcc/testsuite/gcc.dg/sizeof-1.c
  96e5162a82a8e47535c489ac7b4b566a  gcc/testsuite/gcc.dg/sizeof-2.c
--- 61775,61781 ----
  c2f10738d2847185fff9231ef3d7e7a9  gcc/testsuite/gcc.dg/single-precision-constant.c
  6bb18e1a3b4b2d29b4411831abebcd72  gcc/testsuite/gcc.dg/sinhatanh-1.c
  773e7831f773bced75045d1439f7a789  gcc/testsuite/gcc.dg/sinhatanh-2.c
! cd92208bdc48eda525eafbef80ff84d4  gcc/testsuite/gcc.dg/sinhatanh-3.c
  46be905f621bb02c7f68a68091c40997  gcc/testsuite/gcc.dg/sinhovercosh-1.c
  1d3e0706d79c3f973becdc3a20a01620  gcc/testsuite/gcc.dg/sizeof-1.c
  96e5162a82a8e47535c489ac7b4b566a  gcc/testsuite/gcc.dg/sizeof-2.c
*************** d8de96ae2b044149f75e65807303c0d8  gcc/te
*** 62813,62818 ****
--- 62845,62852 ----
  215abff408789603b6bcd0b72b9dbb37  gcc/testsuite/gcc.dg/torture/ipa-pta-2.c
  67e032a26a6dcb61fd477f98f6504336  gcc/testsuite/gcc.dg/torture/ipa-pta-3.c
  613d2e7400ad0760d1e2dc6e98d7a11e  gcc/testsuite/gcc.dg/torture/ldist-1.c
+ 22a1d7ec180e6094a34c5d0165a29920  gcc/testsuite/gcc.dg/torture/long-mul-128.c
+ b7c2bdbf7b8895efef43cf58a6b50a6f  gcc/testsuite/gcc.dg/torture/long-mul-64-run.c
  31a2d36c8013be7fca9a3b92e9633b69  gcc/testsuite/gcc.dg/torture/malloc-1.c
  1899a9f33a340005fa15b98700675903  gcc/testsuite/gcc.dg/torture/malloc-2.c
  f32edc3251f74574163ecae11d39ecba  gcc/testsuite/gcc.dg/torture/matrix-1.c
*************** d769bd22a00fe25d5f4489238592c27f  gcc/te
*** 63305,63311 ****
  6a16ceebaece6036d0f60fda105af99e  gcc/testsuite/gcc.dg/torture/pr125453-1.c
  e2a142dab1f38e7f7a8ffcdce454ce29  gcc/testsuite/gcc.dg/torture/pr125477.c
  87d7522fd6c7bc6f65afde68f9384069  gcc/testsuite/gcc.dg/torture/pr125502.c
! 828006abdbcb5a0b6e3bc5451790d857  gcc/testsuite/gcc.dg/torture/pr125545.c
  865ae037be55d942ca9a21c2d93b6994  gcc/testsuite/gcc.dg/torture/pr125553.c
  5fd68126d95198e18114a17a92bae1c7  gcc/testsuite/gcc.dg/torture/pr125602.c
  e1cd2f943b1276d7edf0ad19d7f2af26  gcc/testsuite/gcc.dg/torture/pr125652.c
--- 63339,63345 ----
  6a16ceebaece6036d0f60fda105af99e  gcc/testsuite/gcc.dg/torture/pr125453-1.c
  e2a142dab1f38e7f7a8ffcdce454ce29  gcc/testsuite/gcc.dg/torture/pr125477.c
  87d7522fd6c7bc6f65afde68f9384069  gcc/testsuite/gcc.dg/torture/pr125502.c
! 4defbe5732b766988b2134b20eed12f8  gcc/testsuite/gcc.dg/torture/pr125545.c
  865ae037be55d942ca9a21c2d93b6994  gcc/testsuite/gcc.dg/torture/pr125553.c
  5fd68126d95198e18114a17a92bae1c7  gcc/testsuite/gcc.dg/torture/pr125602.c
  e1cd2f943b1276d7edf0ad19d7f2af26  gcc/testsuite/gcc.dg/torture/pr125652.c
*************** d37f980a2ba8a3f7fef2d2c9a4f2a81d  gcc/te
*** 63327,63341 ****
  672d0c44de1f67e02b896d92945db96c  gcc/testsuite/gcc.dg/torture/pr126313.c
  01cb9d719e57df3f224da0cfe0cd6ec1  gcc/testsuite/gcc.dg/torture/pr126415.c
  33931213701c8ff6e961657ea59c35a1  gcc/testsuite/gcc.dg/torture/pr126458-1.c
! 41ed1d0a724d4e7e08239b14b14a1043  gcc/testsuite/gcc.dg/torture/pr126464.c
  e3b97fe82bf44e7ca3ada5b69e89137b  gcc/testsuite/gcc.dg/torture/pr126470-1.c
  e6132b99fe49e5ef626b8a5c49e9670a  gcc/testsuite/gcc.dg/torture/pr126547.c
  930e9da2ce427d9141e0e47bf069cbd2  gcc/testsuite/gcc.dg/torture/pr126549.c
  736e87c77f1f1665b5c1e6d96c002b57  gcc/testsuite/gcc.dg/torture/pr126564.c
  aa10a1eb9919015a063f6b2c6b1c583c  gcc/testsuite/gcc.dg/torture/pr126571-1.c
! f80e9f48f86c757f3f37f34e4c8e4f8c  gcc/testsuite/gcc.dg/torture/pr126576.c
  3be74d126fd8d19b7c23404e503083de  gcc/testsuite/gcc.dg/torture/pr126650.c
  f5791b72734df0eaf9c54a4daeec8b27  gcc/testsuite/gcc.dg/torture/pr126658.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
--- 63361,63378 ----
  672d0c44de1f67e02b896d92945db96c  gcc/testsuite/gcc.dg/torture/pr126313.c
  01cb9d719e57df3f224da0cfe0cd6ec1  gcc/testsuite/gcc.dg/torture/pr126415.c
  33931213701c8ff6e961657ea59c35a1  gcc/testsuite/gcc.dg/torture/pr126458-1.c
! 2380d03d281a4788bdba26fddddc27d4  gcc/testsuite/gcc.dg/torture/pr126464.c
  e3b97fe82bf44e7ca3ada5b69e89137b  gcc/testsuite/gcc.dg/torture/pr126470-1.c
  e6132b99fe49e5ef626b8a5c49e9670a  gcc/testsuite/gcc.dg/torture/pr126547.c
  930e9da2ce427d9141e0e47bf069cbd2  gcc/testsuite/gcc.dg/torture/pr126549.c
  736e87c77f1f1665b5c1e6d96c002b57  gcc/testsuite/gcc.dg/torture/pr126564.c
  aa10a1eb9919015a063f6b2c6b1c583c  gcc/testsuite/gcc.dg/torture/pr126571-1.c
! d7e0a09a63a5caae0049b007353d53f4  gcc/testsuite/gcc.dg/torture/pr126576.c
  3be74d126fd8d19b7c23404e503083de  gcc/testsuite/gcc.dg/torture/pr126650.c
  f5791b72734df0eaf9c54a4daeec8b27  gcc/testsuite/gcc.dg/torture/pr126658.c
+ 7c0d0b95ee5c87f0516cab7d10fbf1dc  gcc/testsuite/gcc.dg/torture/pr126686.c
+ 4be4065d432251aa12d90e44344176ee  gcc/testsuite/gcc.dg/torture/pr126925.c
+ 067b51a8632214c843cf0280f718d783  gcc/testsuite/gcc.dg/torture/pr126934-1.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** e1bd4409eccc80afa812078aba4007f5  gcc/te
*** 64840,64847 ****
--- 64877,64888 ----
  67f7f27945fd8a6f00b5d020c854dbb7  gcc/testsuite/gcc.dg/tree-ssa/bool-8.c
  9eefb67e552cd1d47b1ded79984c99ab  gcc/testsuite/gcc.dg/tree-ssa/bool-9.c
  a39ed2de2f8b46920023c9dde2b74c21  gcc/testsuite/gcc.dg/tree-ssa/bool-checks-1.c
+ 3c8b2927a342cdbe8753ca67c6007dc2  gcc/testsuite/gcc.dg/tree-ssa/bool-eq-bitxor.c
+ 47158d2286208ba7b65401ba1324bc47  gcc/testsuite/gcc.dg/tree-ssa/bool-eq-evenness.c
+ 710ebf806fbcd5b6f87423159b140f21  gcc/testsuite/gcc.dg/tree-ssa/bool-eq-pow2.c
  977c3821d057bc7435e1e736f1a29f48  gcc/testsuite/gcc.dg/tree-ssa/bool-minus-1.c
  fdb67da438c8a0f6f02fb5406cd9bded  gcc/testsuite/gcc.dg/tree-ssa/bool-minus-2.c
+ 9371dd349fcf48cebf7d06e845217422  gcc/testsuite/gcc.dg/tree-ssa/bool-xor-zero-one-valued.c
  d005eb06f0fcec94113d67a294737641  gcc/testsuite/gcc.dg/tree-ssa/branchless-cond-add-2.c
  4b9cece323ba759dc63372fe790e04f3  gcc/testsuite/gcc.dg/tree-ssa/branchless-cond-add.c
  4fbe65a8af02c2f92426cd2f315c4c07  gcc/testsuite/gcc.dg/tree-ssa/branchless-cond.c
*************** df99a25b5f7628216c93de5ee8ddb6cb  gcc/te
*** 64952,64957 ****
--- 64993,64999 ----
  bde2787a0a4de64c489ecf0193a51626  gcc/testsuite/gcc.dg/tree-ssa/cast-1.c
  32f4f6cf84e77191a9714a0865c8cf34  gcc/testsuite/gcc.dg/tree-ssa/cast-2.c
  54bcb44066a151328dc47685e4c00040  gcc/testsuite/gcc.dg/tree-ssa/cast-3.c
+ e777883a2fc7d2535292463a7a501e01  gcc/testsuite/gcc.dg/tree-ssa/ceil-1.c
  6fcdc3ce00d06104607909b512da9a61  gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
  f6a70e33add5647e63690464de0faee8  gcc/testsuite/gcc.dg/tree-ssa/cltz-complement-max.c
  9176bae4f1b18779e3c42d9b3fd14c45  gcc/testsuite/gcc.dg/tree-ssa/cltz-max.c
*************** a2e7a9267052ac4ae19d933a4fe39c12  gcc/te
*** 65075,65081 ****
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
  77e49fec8819a28745200ccf32657ae6  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  d1e7893bac97fbc28f3fa03eb0accdbd  gcc/testsuite/gcc.dg/tree-ssa/divide-8.c
! 9939f6901e0bfd90e88fb46b6b373115  gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c
  f32433617ee0c1e536728b3c1e9be519  gcc/testsuite/gcc.dg/tree-ssa/dom-jump-threading-1.c
  c1412ea31f56a4d7ba034e9257870de2  gcc/testsuite/gcc.dg/tree-ssa/dom-jump-threading-2.c
  0fe5e254134df06af63b1d15d6f35470  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
--- 65117,65123 ----
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
  77e49fec8819a28745200ccf32657ae6  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  d1e7893bac97fbc28f3fa03eb0accdbd  gcc/testsuite/gcc.dg/tree-ssa/divide-8.c
! 9dc48dbf30720e35f9134fdc5240fc51  gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c
  f32433617ee0c1e536728b3c1e9be519  gcc/testsuite/gcc.dg/tree-ssa/dom-jump-threading-1.c
  c1412ea31f56a4d7ba034e9257870de2  gcc/testsuite/gcc.dg/tree-ssa/dom-jump-threading-2.c
  0fe5e254134df06af63b1d15d6f35470  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
*************** bfddd90a833039e0cdb4656f4c8f81a1  gcc/te
*** 65371,65376 ****
--- 65413,65428 ----
  e202cf21911171e72b195a3e8e0283ca  gcc/testsuite/gcc.dg/tree-ssa/local-pure-const.c
  340c2058146022e09de1bde5ca123c2b  gcc/testsuite/gcc.dg/tree-ssa/log_exp.c
  6252934461c491785724c885b20e8430  gcc/testsuite/gcc.dg/tree-ssa/log_ident.c
+ a137d705fc963767811d6056de479ffa  gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary-64.c
+ 15b15785654ce96ff1414fefcc9fc946  gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary.c
+ 36e6f4e729c5241299067778cf452634  gcc/testsuite/gcc.dg/tree-ssa/long-mul-carry.c
+ 94d18845cf21a29c53791ca8d01a35ac  gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-cse-128.c
+ 66c0172a69f77de0689dbf1f4a212d47  gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-trunc-128.c
+ 32447a90f54f11ac3a5debbfcf6ee285  gcc/testsuite/gcc.dg/tree-ssa/long-mul-extra-addend.c
+ 4ee1df2058038bb03f2512350c1f2349  gcc/testsuite/gcc.dg/tree-ssa/long-mul-ladder.c
+ 6238f10e8c7ef402e08df84a56b1c6b5  gcc/testsuite/gcc.dg/tree-ssa/long-mul-low-plus.c
+ f1ef106ea6879c608bc63edfe23f91de  gcc/testsuite/gcc.dg/tree-ssa/long-mul-partial.c
+ db37adbac7ff2972b968c6cf9fef7d7b  gcc/testsuite/gcc.dg/tree-ssa/long-mul-two-carry.c
  9589d28892bb4a038f3506f09d2a906e  gcc/testsuite/gcc.dg/tree-ssa/loop-1.c
  d5c0a0cafa8f17e9848f07635e0627a4  gcc/testsuite/gcc.dg/tree-ssa/loop-10.c
  7b136dc13a3af93299281a6cc8908cb9  gcc/testsuite/gcc.dg/tree-ssa/loop-11.c
*************** b2bb949902267099b05f9ca24a83866c  gcc/te
*** 65419,65424 ****
--- 65471,65477 ----
  a26d97652f4894f734d4cba3c788c9ac  gcc/testsuite/gcc.dg/tree-ssa/loop-ch-profile-1.c
  a1bd7e076cb21f864ed0c87ce674899a  gcc/testsuite/gcc.dg/tree-ssa/loop-ch-profile-2.c
  830db83fad8d4c8f17ce6c8a575ef8e7  gcc/testsuite/gcc.dg/tree-ssa/loop-cond-split-1.c
+ 68b68f10aaf8cf97a9619995c5c8cf93  gcc/testsuite/gcc.dg/tree-ssa/loop-im-shift-1.c
  0a18fa76c624c7aae2e2ac50d8b68517  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-1.c
  1efb8637b51c1eb590eddbd9d05f2b31  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-10.c
  a3070095b7db4fd6f5d39d243f2ea3d2  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-11.c
*************** eed236f4c0a3dab3cadb4c5cbce403da  gcc/te
*** 65781,65786 ****
--- 65834,65841 ----
  30191e7f04d08f0b42092e36965a3c63  gcc/testsuite/gcc.dg/tree-ssa/pr111967.c
  f5a620ca99a1fc9e267beab2ad387ade  gcc/testsuite/gcc.dg/tree-ssa/pr111972-1.c
  c146f88113f10fde3201b81b2eeb30fb  gcc/testsuite/gcc.dg/tree-ssa/pr112095.c
+ c2ebdae32435fb3bedb9a03feb0fbf7b  gcc/testsuite/gcc.dg/tree-ssa/pr112104-1.c
+ 0d2ea65d710489c44e6fc3a4dfcdabc5  gcc/testsuite/gcc.dg/tree-ssa/pr112104-2.c
  59cce6285e6c6d5aeda8bf41a51fa20a  gcc/testsuite/gcc.dg/tree-ssa/pr112472.c
  beccfabbbe0e25820c8a0bf1789cad24  gcc/testsuite/gcc.dg/tree-ssa/pr112706.c
  19ee66e2ab8d0fdea9f3e335e4a8fa86  gcc/testsuite/gcc.dg/tree-ssa/pr112721.c
*************** ea753954e3d748d0fc657f06d315bb5d  gcc/te
*** 65858,65863 ****
--- 65913,65920 ----
  d87a1ad6187c06f07e6ee3b7c6352e9e  gcc/testsuite/gcc.dg/tree-ssa/pr124151.c
  4f4c234f6b26b80a5db5588dada6c8b6  gcc/testsuite/gcc.dg/tree-ssa/pr124405.c
  5283f91d0eefda6d127eab3dcbb26458  gcc/testsuite/gcc.dg/tree-ssa/pr124560.c
+ 7125f2d4cc5a031ccf54c24deaa5ec39  gcc/testsuite/gcc.dg/tree-ssa/pr124667-2.c
+ 98cce607af976f1083b7889a7c555348  gcc/testsuite/gcc.dg/tree-ssa/pr124667.c
  0054e44a9d7f98f16363e68bc8142e0f  gcc/testsuite/gcc.dg/tree-ssa/pr124746-1.c
  1afde515a61b4beaaf5bcb9824f3ba80  gcc/testsuite/gcc.dg/tree-ssa/pr124808-2.c
  b40c4e796a04809272d5f575f612ec0c  gcc/testsuite/gcc.dg/tree-ssa/pr124808.c
*************** ffffb4ba63f58edf32fd89260f95a6e8  gcc/te
*** 65876,65881 ****
--- 65933,65941 ----
  0ab23db348de67f9fbecbcddc8632478  gcc/testsuite/gcc.dg/tree-ssa/pr126637.c
  1efe5f1476d0567fc4877886d49ab9ae  gcc/testsuite/gcc.dg/tree-ssa/pr126646-1.c
  4b8458493d24288d315aa2d9cdb02af2  gcc/testsuite/gcc.dg/tree-ssa/pr126646-2.c
+ 66af4310bfb2fda212fd648ee60555c8  gcc/testsuite/gcc.dg/tree-ssa/pr126743.c
+ a48a39d4dd0807e567de26f9e647e549  gcc/testsuite/gcc.dg/tree-ssa/pr126748.c
+ c8848772d9f95336cf6a009cbfdeca57  gcc/testsuite/gcc.dg/tree-ssa/pr126876.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** adf19a5c209e87c5c010abc148d4ac13  gcc/te
*** 66291,66296 ****
--- 66351,66357 ----
  0ecc71308b9eb8bad3bba22c3b06d19c  gcc/testsuite/gcc.dg/tree-ssa/pr86263.c
  60134390b619bf49bbcdaa3adab56c46  gcc/testsuite/gcc.dg/tree-ssa/pr86401-1.c
  fc57b89b2d66024318937b89c2d3b902  gcc/testsuite/gcc.dg/tree-ssa/pr86401-2.c
+ 837e790b06415e8a0225d8fd874d8f0f  gcc/testsuite/gcc.dg/tree-ssa/pr86937.c
  a4316b6eac65dac735695e27081a1367  gcc/testsuite/gcc.dg/tree-ssa/pr87022.c
  e97023b498e6085f65a71c7882dfb395  gcc/testsuite/gcc.dg/tree-ssa/pr87126.c
  4e99e51a351d22f78a22911c66f74fab  gcc/testsuite/gcc.dg/tree-ssa/pr87205-2.c
*************** d66408c518c8dabc34c03159ce0ee317  gcc/te
*** 66581,66587 ****
  9439ae3a1e07c16e1c5b152f81a0de70  gcc/testsuite/gcc.dg/tree-ssa/restrict-8.c
  0d2c77f887c7650308ee4834b850c7f9  gcc/testsuite/gcc.dg/tree-ssa/restrict-9.c
  a16e6045a67747df1bbf4e0359c3ee89  gcc/testsuite/gcc.dg/tree-ssa/return-value-range-1.c
! b1daee55813c6319d8b2f36aca22ef4e  gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c
  9a51956d7c41b002be8c4fcfb63cdcb4  gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-2.c
  688b8f762ac2c72c005673fa2d9c335c  gcc/testsuite/gcc.dg/tree-ssa/satd-hadamard.c
  310ffe1652a091173f8b7a52babddfb0  gcc/testsuite/gcc.dg/tree-ssa/scc-diamond-1.c
--- 66642,66648 ----
  9439ae3a1e07c16e1c5b152f81a0de70  gcc/testsuite/gcc.dg/tree-ssa/restrict-8.c
  0d2c77f887c7650308ee4834b850c7f9  gcc/testsuite/gcc.dg/tree-ssa/restrict-9.c
  a16e6045a67747df1bbf4e0359c3ee89  gcc/testsuite/gcc.dg/tree-ssa/return-value-range-1.c
! 4092eae65c8a5748f69475460f9b0738  gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c
  9a51956d7c41b002be8c4fcfb63cdcb4  gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-2.c
  688b8f762ac2c72c005673fa2d9c335c  gcc/testsuite/gcc.dg/tree-ssa/satd-hadamard.c
  310ffe1652a091173f8b7a52babddfb0  gcc/testsuite/gcc.dg/tree-ssa/scc-diamond-1.c
*************** d7800e6a28e5b70e0293c932b14894f8  gcc/te
*** 67005,67010 ****
--- 67066,67072 ----
  887ebbb6fc9fa28141e943ea74380c78  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-34.c
  687638685378b722aa22c4ce7ad8dc2e  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-35.c
  c66b7cafbeff222b06fe998e7922efb9  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-36.c
+ 6db72a12566ba1aed1cca075e2607ed1  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-37.c
  39d8ac143c15d11301c705a380a6769b  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-4.c
  bd3ae093f96e1ef4c6e63e83f1c59945  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-5.c
  38403894c988bb66d103ea06dcfd401d  gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-6.c
*************** eba056f8fdfc01dd50d19a42ad34bd50  gcc/te
*** 67052,67057 ****
--- 67114,67121 ----
  8754296b236f3b2f6abfa14ca2a80025  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-20.c
  5ccdb84afe4b17b83db35bd3a776f132  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-21.c
  be15956f5f5a8f21ac672a6ca9016095  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-22.c
+ c1911460e23c34d7c56a32d55c51e01d  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c
+ b685ec0fb4c71facb638dba089363913  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-24.c
  adf56325e475d6a3dcaec65d20c9a31b  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-abnormal-phi-1.c
  ac670afcb457aea6c720d01542fb325a  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-abnormal-phi-2.c
  f9ec9861cfad29ae5e65f5801dec8b35  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-backedge.c
*************** e09d2755ec8b8dca170666824978501f  gcc/te
*** 67120,67126 ****
  a07b328f828c5a6dc6814d58e08a5752  gcc/testsuite/gcc.dg/tree-ssa/useless-1.c
  64f1cae87e015159454aabd1d7bcb893  gcc/testsuite/gcc.dg/tree-ssa/user-printf-warn-1.c
  76db98755bcf2873abe9e88c68154bf5  gcc/testsuite/gcc.dg/tree-ssa/vce-1.c
! b500af433abacd9e508dafd8a37622c0  gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c
  abc1a24899f20c2d8bd973e72dfeec39  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-1.c
  94ce03a1be13410057ae4f53c20aeb84  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-2.c
  b1ec50a07825f55ffb0792772ed0fb01  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-3.c
--- 67184,67190 ----
  a07b328f828c5a6dc6814d58e08a5752  gcc/testsuite/gcc.dg/tree-ssa/useless-1.c
  64f1cae87e015159454aabd1d7bcb893  gcc/testsuite/gcc.dg/tree-ssa/user-printf-warn-1.c
  76db98755bcf2873abe9e88c68154bf5  gcc/testsuite/gcc.dg/tree-ssa/vce-1.c
! ff25745de488d38a5e63ceb6c3b729a3  gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c
  abc1a24899f20c2d8bd973e72dfeec39  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-1.c
  94ce03a1be13410057ae4f53c20aeb84  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-2.c
  b1ec50a07825f55ffb0792772ed0fb01  gcc/testsuite/gcc.dg/tree-ssa/vec-reduc-pair-3.c
*************** a12895e160ece0f553a23b23be8acc70  gcc/te
*** 67138,67144 ****
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
  082236399ce2aff8104bb8db55972f09  gcc/testsuite/gcc.dg/tree-ssa/vector-8.c
  4bf17b25f855a2c808672a6d3ed9bb4d  gcc/testsuite/gcc.dg/tree-ssa/vector-9.c
! 080912ae87b18440b2aaab07bf85061a  gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c
  eea142fd036a9cca50ef0e3ca244244e  gcc/testsuite/gcc.dg/tree-ssa/vla-1.c
  efe6f8695ae5fbf7f82d66e0c9ec26b1  gcc/testsuite/gcc.dg/tree-ssa/vrp-compare-1.c
  d2716d7b0ff8fed54064ac391092556a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-1.c
--- 67202,67208 ----
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
  082236399ce2aff8104bb8db55972f09  gcc/testsuite/gcc.dg/tree-ssa/vector-8.c
  4bf17b25f855a2c808672a6d3ed9bb4d  gcc/testsuite/gcc.dg/tree-ssa/vector-9.c
! 8d30c006d1532836fb6deb5978778633  gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c
  eea142fd036a9cca50ef0e3ca244244e  gcc/testsuite/gcc.dg/tree-ssa/vla-1.c
  efe6f8695ae5fbf7f82d66e0c9ec26b1  gcc/testsuite/gcc.dg/tree-ssa/vrp-compare-1.c
  d2716d7b0ff8fed54064ac391092556a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-1.c
*************** a7669a1c1dc571390b300ec443900da4  gcc/te
*** 67874,67879 ****
--- 67938,67945 ----
  4d9ac4bb394b18102abf926a6e6c87af  gcc/testsuite/gcc.dg/vect/bb-slp-pr126852.c
  1ff303a7ada22b36ad0599b6c5ac7d2f  gcc/testsuite/gcc.dg/vect/bb-slp-pr126862.c
  1ed6f63e2f5bbdb173079915e30c60d8  gcc/testsuite/gcc.dg/vect/bb-slp-pr126865.c
+ 775fac435121742a0754aa19ac63de40  gcc/testsuite/gcc.dg/vect/bb-slp-pr126926.c
+ 335ccd99a4cce8b80fd513c6fa6bcc86  gcc/testsuite/gcc.dg/vect/bb-slp-pr126936.c
  c7ebf5ca82162d225346ddd17f7cd2e2  gcc/testsuite/gcc.dg/vect/bb-slp-pr50730.c
  d46400927215059ca9b31c5b97f6e386  gcc/testsuite/gcc.dg/vect/bb-slp-pr54400.c
  5472e7bf338627077f4e6ce8cce9944e  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
*************** c4c05e988d611839b778bc5b1e7f94a2  gcc/te
*** 70384,70390 ****
  b2257f5f913dd4b4b9eb7a2ea834a710  gcc/testsuite/gcc.dg/warn-strcpy-no-nul.c
  337cc4c80ee4dae26f1a907d04b933ea  gcc/testsuite/gcc.dg/warn-strlen-no-nul.c
  035c4f9516300f1af2c15ee669e80903  gcc/testsuite/gcc.dg/warn-strnlen-no-nul-2.c
! 0f10f64a4f49e4cbdf929d1f7cb54fef  gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
  06467199d10c768530ff05eb6bc16fb8  gcc/testsuite/gcc.dg/wcaselabel-1.c
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
--- 70450,70456 ----
  b2257f5f913dd4b4b9eb7a2ea834a710  gcc/testsuite/gcc.dg/warn-strcpy-no-nul.c
  337cc4c80ee4dae26f1a907d04b933ea  gcc/testsuite/gcc.dg/warn-strlen-no-nul.c
  035c4f9516300f1af2c15ee669e80903  gcc/testsuite/gcc.dg/warn-strnlen-no-nul-2.c
! 747e9a2d97cf9299ce3111e37e52fc10  gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
  06467199d10c768530ff05eb6bc16fb8  gcc/testsuite/gcc.dg/wcaselabel-1.c
  8c4274546261eadb1410524bcdc26c4d  gcc/testsuite/gcc.dg/wchar_t-1.c
  f2cc2a4270e9964959b2a5f3df5cdaae  gcc/testsuite/gcc.dg/wchar_t-2.c
*************** dcbe68009cf519fec972930376254917  gcc/te
*** 71624,71629 ****
--- 71690,71696 ----
  9ad011820658da0adf00e992677c5a87  gcc/testsuite/gcc.target/aarch64/cmpbr-4.c
  284a9e1dc225fd1f94fa5595de5a9fb3  gcc/testsuite/gcc.target/aarch64/cmpbr-5.c
  0b9030bd513678084724d18550f2b50d  gcc/testsuite/gcc.target/aarch64/cmpbr.c
+ 0a796106d84bcf97b9d6feed9fa1cae7  gcc/testsuite/gcc.target/aarch64/cmpdi-neg-1.c
  ee389eae370cb027260e737bcb692a7d  gcc/testsuite/gcc.target/aarch64/cmpelim_mult_uses_1.c
  7b5054f497a38f6f6603006f2d632a05  gcc/testsuite/gcc.target/aarch64/cmpimm_branch_1.c
  2750359abb653ac649405e9099ca1643  gcc/testsuite/gcc.target/aarch64/cmpimm_cset_1.c
*************** cc9a9ea2da09d4b15bb44f3466819c58  gcc/te
*** 72041,72046 ****
--- 72108,72114 ----
  aacf72675fc499d7008f0afd92fba8a8  gcc/testsuite/gcc.target/aarch64/legitimize_stack_var_before_reload_1.c
  75b9e47e034140e3e91bf7ed48db1aad  gcc/testsuite/gcc.target/aarch64/load_v2vec_lanes_1.c
  912d6ef4726a671f926367bd36b7a20b  gcc/testsuite/gcc.target/aarch64/long_branch_1.c
+ a283d17c08b869c865fd5bb699befd05  gcc/testsuite/gcc.target/aarch64/long_mul.c
  88bfd0f75750bcbae51d894aa0f4baea  gcc/testsuite/gcc.target/aarch64/lr_free_1.c
  a5cfe0849b43ef498cda6a872be26cb6  gcc/testsuite/gcc.target/aarch64/lr_free_2.c
  9ca4f25b97ec89a6e60a1484f11dc946  gcc/testsuite/gcc.target/aarch64/lrint-matherr.h
*************** c1b669eba35fd9ddf0fc4ad45466f77e  gcc/te
*** 72575,72580 ****
--- 72643,72649 ----
  855697402fe8148c791e181c37806cc5  gcc/testsuite/gcc.target/aarch64/pr126589.c
  e34fa368dd9500596d5b5ac83a80e7a9  gcc/testsuite/gcc.target/aarch64/pr126592.c
  09207d3233f7f2b1a419f53f7616481f  gcc/testsuite/gcc.target/aarch64/pr126593.c
+ 5a3f97eae040588308e8e2288c9392bf  gcc/testsuite/gcc.target/aarch64/pr126597.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** ae5cf71ae02c3cde7a67cfb54ec03bbe  gcc/te
*** 72679,72689 ****
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  da5418029729670ed3741a09c6ac6d5d  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  cf24cdff529adfd1c49b54f67eadad90  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! 0ab56436b4e0f5bb6c00ffa517c18ab6  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
  4ea96f51a9ad2c7a76b14594d2eee956  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
  da19e78ba6b795bf6d056fba82d425f7  gcc/testsuite/gcc.target/aarch64/preserve_none_1.c
  e8cef49c693fcaea364b5c6a5f1b0ba5  gcc/testsuite/gcc.target/aarch64/preserve_none_2.c
  6666e04f1fc6734c26f86b5bcfb57eaa  gcc/testsuite/gcc.target/aarch64/preserve_none_3.c
--- 72748,72759 ----
  cc4f69997a3864b3299f1b4809507883  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1b.c
  da5418029729670ed3741a09c6ac6d5d  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  cf24cdff529adfd1c49b54f67eadad90  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
! f15185e7c519f08245a42117de89e9fd  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
  4ea96f51a9ad2c7a76b14594d2eee956  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_5.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
+ 3beff31fa06e61d86d4dd21245bd713d  gcc/testsuite/gcc.target/aarch64/prefetch-extend-1.c
  da19e78ba6b795bf6d056fba82d425f7  gcc/testsuite/gcc.target/aarch64/preserve_none_1.c
  e8cef49c693fcaea364b5c6a5f1b0ba5  gcc/testsuite/gcc.target/aarch64/preserve_none_2.c
  6666e04f1fc6734c26f86b5bcfb57eaa  gcc/testsuite/gcc.target/aarch64/preserve_none_3.c
*************** d4738e439979d5bfb2d5ba22153afc41  gcc/te
*** 73371,73377 ****
  3e205476351a45bf8306b7e60c397b11  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumopa_za64.c
  fa1cc0af91efbfbe4114931cd0014196  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumops_za32.c
  950f4c612e85d459a5680f63cea26930  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumops_za64.c
! 59c5606f5bea6e7ae5e3300d832d0717  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h
  751ac5c0bca8fa2442b9cc92355f0bb1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/undef_za.c
  8b4bf8582e42d9776dbf25df79244f31  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/usmopa_za32.c
  cbdfbc444eb1d7272d5ea088132d03e1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/usmopa_za64.c
--- 73441,73447 ----
  3e205476351a45bf8306b7e60c397b11  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumopa_za64.c
  fa1cc0af91efbfbe4114931cd0014196  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumops_za32.c
  950f4c612e85d459a5680f63cea26930  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/sumops_za64.c
! 8a10b98dde4a02c12e40f2b781654e47  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h
  751ac5c0bca8fa2442b9cc92355f0bb1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/undef_za.c
  8b4bf8582e42d9776dbf25df79244f31  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/usmopa_za32.c
  cbdfbc444eb1d7272d5ea088132d03e1  gcc/testsuite/gcc.target/aarch64/sme/acle-asm/usmopa_za64.c
*************** b859a5f522518a13c1400caaf256ce86  gcc/te
*** 73993,73998 ****
--- 74063,74101 ----
  16b1e7c3885bc868c311e63021451b39  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x1.c
  08306410971afaae63e63dc395032c7b  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x2.c
  090c16bab9987cd4bc26adb3356930e5  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mls_za64_u16_vg4x4.c
+ 354a7e8814cc0172745576754042559e  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c
+ 2badd14f47b573e2d2e07780e312a846  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c
+ 5ebcf377764f192caa523da1013aa142  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c
+ bc89f9c54ec94ba655bbddd37a564740  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c
+ 691b35a24d9854dda2012f2046fbedb0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c
+ 21015d82921dea3b1370aca47f814945  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c
+ a16d80b2463fc355cac8219eb2fd5042  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c
+ 38976143f63bc77763fb8086352f4d87  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c
+ 31e750f1bbf4ca2e7c2094b58252fa85  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c
+ a8f8bae83cb87aac0b5632ef7bb80ca8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c
+ 99ddea4e5f3acb9c10f659837f4bf829  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c
+ 9570fc6436e8d56add62eb3a3b807549  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c
+ 54c5088011b71ed5e6d6338aa14a5793  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c
+ 43c3c1e9cfd9415183a0202f664dd250  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c
+ 491bbad08021c774b3c5d905f3e55317  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c
+ 9ab8e62b8f1267b91895bb9c780c8684  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c
+ 6720fb09c0167931176bae4111cdc939  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c
+ b0baa6cfbbc1b826c2d27f80f023534d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c
+ a37fc12e6e69e9170f023b643e5c6489  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c
+ 390318f37b5983324b669aea7913f7e8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c
+ 58872b1479d3ea850face13b5bb7f0b8  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c
+ afdc6dda50f24607646250cd8649d7c9  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c
+ 083e20df094e1b0fddeb16fee0115eba  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c
+ 268694707c1e2736efa04e50d502fec0  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c
+ 69a4f8b1cc3f766e13867d8c1fae5abe  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c
+ a0a816fbf3de0baf70e0e4ad66b1ab73  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c
+ c8c7f4c34796693a8a9fc3150b9bc091  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c
+ a97624c7a5ac7e17952cc1f33a9236c4  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c
+ 82c8cef8b1d795b542b26e47bd85a732  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c
+ 007b16c34313ae04985f8e19a6cd197c  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c
+ 44014beddee266e9b48065f3e0429e44  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c
+ f97d05bd7143ee6a7b060e6959ac962d  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c
+ a42ab4a8cc0abbde638fe66a6f20d6d2  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c
  c091c392e56d14660855417449ab33e2  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mopa_za16_bf16.c
  91ed2471cfe6d25d0e4d25f8fca852c1  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mopa_za16_f16.c
  2c4d8fc7091a07eddd92f324591ddef3  gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mopa_za16_mf8.c
*************** ae39438a4e7b3ed18af12c7495d1e030  gcc/te
*** 76374,76379 ****
--- 76477,76489 ----
  23e715f288cc2ec9e0a27e59285ea47f  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mmla_5.c
  35cf56271ab60254cc470b5889b7e7df  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mmla_6.c
  72ad801d133605265797b063a4de9584  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mmla_7.c
+ ded563dac6fe92b431a1cd0d69beecae  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c
+ 9ca463dd181511ba54b0456f4a0dd888  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c
+ b42a9b614ecc49c8a725d1333e41a45b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c
+ 7eeae7cebc887c8a86243776a18e5b90  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c
+ a97d5f47c72c864519c0faf726e66888  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c
+ dae58bd45fac4c05da4d31cd5b685ca5  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c
+ 035d1e583b16703ec00a3756f360b4ec  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c
  f81bab9101248e66e7b11d0198342f79  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mul_lane_1.c
  602557d7837f6edcaeb86bc494ade501  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/pattern_pred_1.c
  4d22aa630b4982540d6b6693f86d6841  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/pmov_from_vector_1.c
*************** dc5cc4bd54f699543e29d49d190cf7f3  gcc/te
*** 76656,76661 ****
--- 76766,76772 ----
  4505bd757cf0718372154e481c4a2da0  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_6.c
  453c5ef83bc5137397e38e9f3c9d6da9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/perm_7.c
  bb3a7f2587d8584d185738649f93a6f6  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_1.c
+ 873a0312cf10c8c037ae4ee919c25a43  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_2.c
  4a5457bf98a3061b6c949b777ceca410  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_1.c
  6d3b0cbb6b0b88e0030fbf0003faa4c9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_2.c
  0d1a441abf9343b89608d4826b9155f7  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_3.c
*************** cc1f496e67bd6d97563238cbd1276bed  gcc/te
*** 76775,76780 ****
--- 76886,76893 ----
  317fc09b0276922534d9ddc02a82b1fa  gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_4.c
  e3cf89281fef4a79715fb0df3fb9ae14  gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_5.c
  af1f116b840799b13f2db386096e7872  gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_6.c
+ e20fd245ae355e940eee990adb678829  gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7.c
+ 84cde85ce1f7e3e798f9af4523e4cc34  gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7_run.c
  c783e3f27efc6009180e849648e7deca  gcc/testsuite/gcc.target/aarch64/sve/complex_mul_1.c
  e34e1b9a30e1bf7be8e61dcf581ac027  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1.c
  3aabd6216d4bf01e1b009fe1dd930328  gcc/testsuite/gcc.target/aarch64/sve/cond_abd_1_run.c
*************** a3a41a6805e6ffdb509fa9a2f954556e  gcc/te
*** 77525,77530 ****
--- 77638,77645 ----
  8e6460d34d423bbdb8717ba52985addd  gcc/testsuite/gcc.target/aarch64/sve/peeled3_run.c
  1892a931601dcdf93953141a7a57b8b6  gcc/testsuite/gcc.target/aarch64/sve/peeled4.c
  cb7913fa4e77cb44284e75c1c117c651  gcc/testsuite/gcc.target/aarch64/sve/peeled_run.c
+ 55b096b6fa237be45dc83c511ce9657a  gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1-run.c
+ bc818847d37afff2c65d05d945b2da28  gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1.c
  3403fa7bd3faa08e302357668aaa12c7  gcc/testsuite/gcc.target/aarch64/sve/permute_1.c
  94bfbb150aa3fba0e4802dfc707c0f43  gcc/testsuite/gcc.target/aarch64/sve/permute_2.c
  b5319325441276b5db5345444a2b12be  gcc/testsuite/gcc.target/aarch64/sve/permute_3.c
*************** df238b64cc974628a48afaac0cd271a1  gcc/te
*** 77603,77609 ****
  49634f528a782a09d2e4cdcc681eee91  gcc/testsuite/gcc.target/aarch64/sve/pr119156_1.c
  eb595403e04074873b00c432743dde72  gcc/testsuite/gcc.target/aarch64/sve/pr119351.c
  fba890ec69e5613e555983284ebab389  gcc/testsuite/gcc.target/aarch64/sve/pr119351_run.c
! ecd052b8b25dcdd22b9bc9b4afdddf04  gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
  84d53e47a2bd0ee9db70c24448d92f33  gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c
  f3c32f052e49d3e8c461ebbc88a7bd49  gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c
  7bfa8eb7f05bafc051b2cd771b750e7e  gcc/testsuite/gcc.target/aarch64/sve/pr122103_1.c
--- 77718,77724 ----
  49634f528a782a09d2e4cdcc681eee91  gcc/testsuite/gcc.target/aarch64/sve/pr119156_1.c
  eb595403e04074873b00c432743dde72  gcc/testsuite/gcc.target/aarch64/sve/pr119351.c
  fba890ec69e5613e555983284ebab389  gcc/testsuite/gcc.target/aarch64/sve/pr119351_run.c
! e90ca21197b80636e8e120c6a6c31435  gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
  84d53e47a2bd0ee9db70c24448d92f33  gcc/testsuite/gcc.target/aarch64/sve/pr122069_1.c
  f3c32f052e49d3e8c461ebbc88a7bd49  gcc/testsuite/gcc.target/aarch64/sve/pr122069_2.c
  7bfa8eb7f05bafc051b2cd771b750e7e  gcc/testsuite/gcc.target/aarch64/sve/pr122103_1.c
*************** e5af8d5ddc19297c37575ca92211e116  gcc/te
*** 77708,77714 ****
  3aef5423a085cfc20a6b9611c8731143  gcc/testsuite/gcc.target/aarch64/sve/reduc_2.c
  ff9d5e617831a577f203db2924357e2e  gcc/testsuite/gcc.target/aarch64/sve/reduc_2_run.c
  31589372e98f5db9b44baf71b4bf3a2b  gcc/testsuite/gcc.target/aarch64/sve/reduc_3.c
! 58bd69e851293160d420a15ca08abc10  gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c
  09f212e2cb38a84fe8800de11b5c139c  gcc/testsuite/gcc.target/aarch64/sve/reduc_4.c
  85d0d8ccff5261118448ec8ad481cce1  gcc/testsuite/gcc.target/aarch64/sve/reduc_5.c
  3095445690a40e55afa7db24a400e0c5  gcc/testsuite/gcc.target/aarch64/sve/reduc_6.c
--- 77823,77829 ----
  3aef5423a085cfc20a6b9611c8731143  gcc/testsuite/gcc.target/aarch64/sve/reduc_2.c
  ff9d5e617831a577f203db2924357e2e  gcc/testsuite/gcc.target/aarch64/sve/reduc_2_run.c
  31589372e98f5db9b44baf71b4bf3a2b  gcc/testsuite/gcc.target/aarch64/sve/reduc_3.c
! 3f8bd68abf6acc69eacabab08aea32a7  gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c
  09f212e2cb38a84fe8800de11b5c139c  gcc/testsuite/gcc.target/aarch64/sve/reduc_4.c
  85d0d8ccff5261118448ec8ad481cce1  gcc/testsuite/gcc.target/aarch64/sve/reduc_5.c
  3095445690a40e55afa7db24a400e0c5  gcc/testsuite/gcc.target/aarch64/sve/reduc_6.c
*************** cf8f15ed1eac9f24bf64b24515cb6bca  gcc/te
*** 77737,77742 ****
--- 77852,77859 ----
  3063f052acde0214682f22ddd4e803ab  gcc/testsuite/gcc.target/aarch64/sve/revhw_2.c
  8980052fe62b0caeae5983046b058197  gcc/testsuite/gcc.target/aarch64/sve/revw_1.c
  80e3b4ad46a8d2950090ff8efdc1dca7  gcc/testsuite/gcc.target/aarch64/sve/revw_2.c
+ be3520b4d3ebda97e2453234a67f01b1  gcc/testsuite/gcc.target/aarch64/sve/roundeven_1.c
+ cb065e7ce08704deb07ac2ebd7643080  gcc/testsuite/gcc.target/aarch64/sve/roundeven_2.c
  82cc68a63e644509dc4ffa773504d753  gcc/testsuite/gcc.target/aarch64/sve/rsqrt_1.c
  f9d2dfb3403e355b20f0e438b79b899c  gcc/testsuite/gcc.target/aarch64/sve/rsqrt_1_run.c
  62403b5248ada1c1a275c784875bfe24  gcc/testsuite/gcc.target/aarch64/sve/sad_1.c
*************** be62ee77685e07cba780bef99d05a7eb  gcc/te
*** 77780,77786 ****
  df29a45b5ee2033132b0a6f7d96ebfe3  gcc/testsuite/gcc.target/aarch64/sve/slp_10_run.c
  7f0aab629d8cefaf2b6472c91398d3f0  gcc/testsuite/gcc.target/aarch64/sve/slp_11.c
  a859ea80596a38af45ac60b162ed9e8a  gcc/testsuite/gcc.target/aarch64/sve/slp_11_run.c
! 4ec100c8f972166b8564362763d2ab87  gcc/testsuite/gcc.target/aarch64/sve/slp_12.c
  f5f2ddecb49f9cee52452fe9bf42028a  gcc/testsuite/gcc.target/aarch64/sve/slp_12_run.c
  42057a068a96761d35fa47068601da11  gcc/testsuite/gcc.target/aarch64/sve/slp_13.c
  5063e2f1b2fdd4123ce879dfc91c4698  gcc/testsuite/gcc.target/aarch64/sve/slp_13_run.c
--- 77897,77903 ----
  df29a45b5ee2033132b0a6f7d96ebfe3  gcc/testsuite/gcc.target/aarch64/sve/slp_10_run.c
  7f0aab629d8cefaf2b6472c91398d3f0  gcc/testsuite/gcc.target/aarch64/sve/slp_11.c
  a859ea80596a38af45ac60b162ed9e8a  gcc/testsuite/gcc.target/aarch64/sve/slp_11_run.c
! 0590e15bd8d0b79405ec98b5935e5921  gcc/testsuite/gcc.target/aarch64/sve/slp_12.c
  f5f2ddecb49f9cee52452fe9bf42028a  gcc/testsuite/gcc.target/aarch64/sve/slp_12_run.c
  42057a068a96761d35fa47068601da11  gcc/testsuite/gcc.target/aarch64/sve/slp_13.c
  5063e2f1b2fdd4123ce879dfc91c4698  gcc/testsuite/gcc.target/aarch64/sve/slp_13_run.c
*************** b9893dda4a7c7e766d6503b50fda4902  gcc/te
*** 78153,78158 ****
--- 78270,78276 ----
  1f2e72ce22ed65bf68ac754885ca0ea2  gcc/testsuite/gcc.target/aarch64/sve/while_ult_1.c
  68e8f1b9c36256c9fba7bc2293ac7115  gcc/testsuite/gcc.target/aarch64/sve/while_ult_1_run.c
  94dd4afba44c578953f146d2f15672cf  gcc/testsuite/gcc.target/aarch64/sve/while_ult_2.c
+ 264ea6f3355190fb9a21cc576af5bd87  gcc/testsuite/gcc.target/aarch64/sve/widen_sum_1.c
  27d8ceeb490cb745489607f06b508b65  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1.c
  f243fb7673b198d762744d4c5937bfb6  gcc/testsuite/gcc.target/aarch64/sve/xorsign_1_run.c
  e13b38f2990120fb563c7e3296667346  gcc/testsuite/gcc.target/aarch64/sve/zip1_1.c
*************** ec21c6a99b6932b167fe35fa9ac45dfb  gcc/te
*** 78170,78175 ****
--- 78288,78299 ----
  ef22cd8d0e26371a0e48f5444a4355c5  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u32.c
  1759409a5820ff5adce708221567e600  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u64.c
  fc157a8af4d841509a9e4436ca15ec7a  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_u8.c
+ 62d498e3db3f7d6458b99f9de173441c  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s16.c
+ 97d6922c9ccfa3838af42784541b7c01  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s32.c
+ f8393d53bd7427238eff06546bfb7ff3  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s64.c
+ bb3f0242ef019c08eeb47f6b5e53f385  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u16.c
+ 84441f83ff01e1d1bfc2d51438689f06  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u32.c
+ 175f215cf82a92611aef1bd7a5ae1745  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u64.c
  7ef28067d5f189d8d0d625628f04dd0f  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abalb_s16.c
  01e3bbfc42d8255ece4b10d611f96568  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abalb_s32.c
  dce555b9b63b74da027def6c7dadcdcb  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abalb_s64.c
*************** d1048da76a8288fba979b423a69446fc  gcc/te
*** 80035,80040 ****
--- 80159,80168 ----
  e17c8c4e15c789037c218893bf9161b8  gcc/testsuite/gcc.target/aarch64/vect-compile.c
  1c2584b79632ca3e23f0b3181d2e3616  gcc/testsuite/gcc.target/aarch64/vect-convert-1.c
  c63ec1a2a3f22698a5e4367ab1109ae8  gcc/testsuite/gcc.target/aarch64/vect-cse-codegen.c
+ a409781af1150c5a1073a7f1b1b96461  gcc/testsuite/gcc.target/aarch64/vect-ctz-1.c
+ fbfa255c7cba52f8a5b7f3059d0a42a0  gcc/testsuite/gcc.target/aarch64/vect-ctz-2.c
+ f61ba4c39077bdc1c075ab850e0c506c  gcc/testsuite/gcc.target/aarch64/vect-ctz-3.c
+ 5a53e4ef7efb978227251a7d3449e255  gcc/testsuite/gcc.target/aarch64/vect-ctz.h
  921eb3232364cb2927f013733b5a0473  gcc/testsuite/gcc.target/aarch64/vect-dotprod-twoway-hisi.c
  abdce3709a72bca62c1e5456ca237dff  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_1.c
  3b8e1c37010cf385f367822b8561c891  gcc/testsuite/gcc.target/aarch64/vect-early-break-addhn_2.c
*************** a5ea701024dc372e404e47fd661308b9  gcc/te
*** 80094,80099 ****
--- 80222,80229 ----
  d7998cc373ed0d124e6bb2496619f98f  gcc/testsuite/gcc.target/aarch64/vect-reduc-bool-8.c
  ee50d59cde6553fbc8a60b764d8304bf  gcc/testsuite/gcc.target/aarch64/vect-reduc-bool-9.c
  ded4af2ae02936eb4be45e9e08f45373  gcc/testsuite/gcc.target/aarch64/vect-reduc-or_1.c
+ 5057cbfaed12d319a3016e0890e7d648  gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-1.c
+ 5246d5f983894d52f0359dff512ad501  gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-2.c
  cbb6981a9f5fba990ee2d0f5e5e38a50  gcc/testsuite/gcc.target/aarch64/vect-shr-reg-run.c
  f0d2e1dd6eaa2c17de51dc5c456d92a1  gcc/testsuite/gcc.target/aarch64/vect-shr-reg.c
  e492c61b71734a2af2ab50a12ad1ba63  gcc/testsuite/gcc.target/aarch64/vect-simd-clone-1.c
*************** b28f6252aaf3288f7754a0c50786df34  gcc/te
*** 80439,80445 ****
  4ee070d89a7b3e774eaf40214625cf03  gcc/testsuite/gcc.target/arc/mul64-1.c
  51a65655bfba373cbacabf27deec612c  gcc/testsuite/gcc.target/arc/mul64.c
  46c5b1c885d49d863f7518670ae85e9c  gcc/testsuite/gcc.target/arc/mulsi3_highpart-1.c
! 793d7938e24de8127c5230bc8a1799e9  gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c
  9c0d303a43e545b5f9e03c9a79846ec9  gcc/testsuite/gcc.target/arc/mult-cmp0.c
  a55caab34589aaad4b44c2b23036a38a  gcc/testsuite/gcc.target/arc/mxy.c
  cb20618eea943bb5260b4d5b424f7756  gcc/testsuite/gcc.target/arc/naked-1.c
--- 80569,80575 ----
  4ee070d89a7b3e774eaf40214625cf03  gcc/testsuite/gcc.target/arc/mul64-1.c
  51a65655bfba373cbacabf27deec612c  gcc/testsuite/gcc.target/arc/mul64.c
  46c5b1c885d49d863f7518670ae85e9c  gcc/testsuite/gcc.target/arc/mulsi3_highpart-1.c
! d62929aa32174ddc88fcb4919d383d10  gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c
  9c0d303a43e545b5f9e03c9a79846ec9  gcc/testsuite/gcc.target/arc/mult-cmp0.c
  a55caab34589aaad4b44c2b23036a38a  gcc/testsuite/gcc.target/arc/mxy.c
  cb20618eea943bb5260b4d5b424f7756  gcc/testsuite/gcc.target/arc/naked-1.c
*************** ebdb15be89bef0e9c175a92e85f05897  gcc/te
*** 80817,80824 ****
  025ddb61ae05cb8eff987c8cec961244  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  5ff0a15a5a399d7d0fafcad196691899  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  ec0c70b5899b431b52c53aba7a25843f  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
! 2b929af00dad162524dec248d1b72aa3  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
! a5e3d47fdebe7e5dea4aaa5a6dbfbfa6  gcc/testsuite/gcc.target/arm/cmse/cmse-19.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
  aee7e08137af9ad5cb0dc780a0c319de  gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
--- 80947,80954 ----
  025ddb61ae05cb8eff987c8cec961244  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  5ff0a15a5a399d7d0fafcad196691899  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  ec0c70b5899b431b52c53aba7a25843f  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
! 165cc381037a92d184421422a33e7640  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
! a89e7658851acc0da1dfc8a4f3291bb6  gcc/testsuite/gcc.target/arm/cmse/cmse-19.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
  aee7e08137af9ad5cb0dc780a0c319de  gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
*************** e74ff9f47d550052bb53055028bce7ad  gcc/te
*** 80954,80959 ****
--- 81084,81090 ----
  f7f17803a6b1738e8dc92505f13e319c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c
  015acf1d0f7ae430c72e3cafb43d433c  gcc/testsuite/gcc.target/arm/di-longlong64-sync-withldrexd.c
  2f22b048d621eda66f5a8e9f56c4d3d7  gcc/testsuite/gcc.target/arm/div64-unwinding.c
+ ede0409f4309e7e1bb5756c94f7464d6  gcc/testsuite/gcc.target/arm/divmod-order-1.c
  246a53aa20898ebf4576de8d35694ec1  gcc/testsuite/gcc.target/arm/divzero.c
  3a4cc77eebab8f993d561b9747c869c2  gcc/testsuite/gcc.target/arm/eabi1.c
  5277f5d0686be572bc75b1442e1b662e  gcc/testsuite/gcc.target/arm/eliminate.c
*************** bfc9c68e78fd72e08127df9f2211f1b7  gcc/te
*** 81071,81076 ****
--- 81202,81209 ----
  086d7341668f43eea7c3eed221559433  gcc/testsuite/gcc.target/arm/long-calls-2.c
  a89b5e0e366636ce12c4d2fdcfdebdd3  gcc/testsuite/gcc.target/arm/long-calls-3.c
  f4dc3ba47c0ebc20091da77bcbf16400  gcc/testsuite/gcc.target/arm/long-calls-4.c
+ 12f22c536db6a3c730b9849306ff91fa  gcc/testsuite/gcc.target/arm/long-mul-thumb1-inline.c
+ 82d4dad6eafe5bb184142cf3ab538e2f  gcc/testsuite/gcc.target/arm/long-mul-umull.c
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  907fdd46667ce02cd530e6e361337e71  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
  f362f2eaa3aeccd8f36ea7acbbc1b897  gcc/testsuite/gcc.target/arm/lto/lto.exp
*************** e5aafcaef63ec87ca861c2c3df04f753  gcc/te
*** 83916,83921 ****
--- 84049,84055 ----
  e63928ba458ed28f5f26f652175d8386  gcc/testsuite/gcc.target/arm/pr70278.c
  7b0dff48f8c89cbeb037deb0439e2888  gcc/testsuite/gcc.target/arm/pr70496.c
  0b68ca4bfc428f042e286b8dd314ee42  gcc/testsuite/gcc.target/arm/pr70830.c
+ 0ca397ed98282cd93602ededc4b973fb  gcc/testsuite/gcc.target/arm/pr71048.c
  dc5c76ff01c564582222b3a2ea1fc21c  gcc/testsuite/gcc.target/arm/pr71056.c
  f54ef63fcfe6438f5564d5ecc3ab119f  gcc/testsuite/gcc.target/arm/pr71778.c
  945975f95cabe460e370e69421e0d381  gcc/testsuite/gcc.target/arm/pr7676.c
*************** ebbf958a9ec613b0e83f39734d21b008  gcc/te
*** 84635,84640 ****
--- 84769,84775 ----
  b5f3dac0a4aa3e456482d4b3162d64b6  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uuk.c
  f5a1361523de0e3faf7dfdd815bbaedf  gcc/testsuite/gcc.target/avr/torture/pr125409-fx24-uur.c
  33205c0601ab01f0a0bb4fcfdc9bd796  gcc/testsuite/gcc.target/avr/torture/pr125409.h
+ 05f55291adecb6766031960a68688592  gcc/testsuite/gcc.target/avr/torture/pr127004.c
  42a74f28c740c9bd42dab79171f49a39  gcc/testsuite/gcc.target/avr/torture/pr39633.c
  8fb17af722ee890b7fa08b5610cdb80e  gcc/testsuite/gcc.target/avr/torture/pr41885.c
  70b849f57ecf42299230b99b7734dd2d  gcc/testsuite/gcc.target/avr/torture/pr51374-1.c
*************** ed39fac01137b1fe7fa6aa0aed6f57d9  gcc/te
*** 85545,85551 ****
  79a49b8c13cb7ee745254fc8de7ae899  gcc/testsuite/gcc.target/i386/991230-1.c
  f735456052a700dd38243bb3e18ed960  gcc/testsuite/gcc.target/i386/abi-1.c
  d1f50582e0aff656e8d04fa44820aada  gcc/testsuite/gcc.target/i386/abi-2.c
! ee4708424aefdffd40679896b5d93aea  gcc/testsuite/gcc.target/i386/abi-mix-1.c
  aaf36a000abd8aded2fe5ce3b23592b3  gcc/testsuite/gcc.target/i386/abi-mix-2.c
  fc0f5bb1d300de76b812a0ae5b8bd01c  gcc/testsuite/gcc.target/i386/addr-sel-1.c
  a7bd988811ab95583c012c435a897182  gcc/testsuite/gcc.target/i386/addr-space-1.c
--- 85680,85686 ----
  79a49b8c13cb7ee745254fc8de7ae899  gcc/testsuite/gcc.target/i386/991230-1.c
  f735456052a700dd38243bb3e18ed960  gcc/testsuite/gcc.target/i386/abi-1.c
  d1f50582e0aff656e8d04fa44820aada  gcc/testsuite/gcc.target/i386/abi-2.c
! 39659a559e3478f64aaf8843b1efd972  gcc/testsuite/gcc.target/i386/abi-mix-1.c
  aaf36a000abd8aded2fe5ce3b23592b3  gcc/testsuite/gcc.target/i386/abi-mix-2.c
  fc0f5bb1d300de76b812a0ae5b8bd01c  gcc/testsuite/gcc.target/i386/addr-sel-1.c
  a7bd988811ab95583c012c435a897182  gcc/testsuite/gcc.target/i386/addr-space-1.c
*************** da9a874cc43d515ca40fe91f469c7339  gcc/te
*** 85745,85751 ****
  64889694d1cb3280b3aa71fa1424dec5  gcc/testsuite/gcc.target/i386/auto-init-padding-7.c
  6833c0fc00c0e05839ef7fc0ebe6662f  gcc/testsuite/gcc.target/i386/auto-init-padding-8.c
  e54ac16bd26bbed3820743ade1ca4749  gcc/testsuite/gcc.target/i386/auto-init-padding-9.c
! 6d269f763b677e113f37ab0f5e75583e  gcc/testsuite/gcc.target/i386/avx-1.c
  ce8537ac3337be19a6e276a8fbfccd9e  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
--- 85880,85886 ----
  64889694d1cb3280b3aa71fa1424dec5  gcc/testsuite/gcc.target/i386/auto-init-padding-7.c
  6833c0fc00c0e05839ef7fc0ebe6662f  gcc/testsuite/gcc.target/i386/auto-init-padding-8.c
  e54ac16bd26bbed3820743ade1ca4749  gcc/testsuite/gcc.target/i386/auto-init-padding-9.c
! 0a02f8f6f7b5366e8a0caa7f3d95a173  gcc/testsuite/gcc.target/i386/avx-1.c
  ce8537ac3337be19a6e276a8fbfccd9e  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
*************** cda89011fa4819da55a2bd64c4ce10ae  gcc/te
*** 86562,86567 ****
--- 86697,86706 ----
  bf1faf9dcf34484db88c19444063c669  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1f.c
  16f32486f87c42b62781ab2574d68941  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1g.c
  0515d3aa8c5aca8edd255181f089656b  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1h.c
+ 405230c74806bbd3e01e6e141f345291  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c
+ 3e5985c3d6cf0f9bf2f9834df4ee8a21  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c
+ 1c95d2d271ab45be991021ec2cdd8a37  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c
+ 590fb3efbd351d568d6c433fece2c18e  gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1l.c
  c1ebd833400b4f1e9d74b7929ccecdb6  gcc/testsuite/gcc.target/i386/avx2-bf16-vec-absneg.c
  a5901d33285892facee8dbfe287ce0d1  gcc/testsuite/gcc.target/i386/avx2-broadcast-pr87767-1.c
  958690bb20e5ef6d9a38def7eb976f13  gcc/testsuite/gcc.target/i386/avx2-check.h
*************** df540b386fea93996eaf683fe3aa3e65  gcc/te
*** 86683,86697 ****
  eb660431400dfd8f30b0e0eac2d5c055  gcc/testsuite/gcc.target/i386/avx2-pr99517-2.c
  043383b25f13e0c9b9089a42c73d0865  gcc/testsuite/gcc.target/i386/avx2-pr99908.c
  62a66a977f36c3fad279922d1cc45fac  gcc/testsuite/gcc.target/i386/avx2-psraq-1.c
! 8afaf3881ae64dfbeb61a2c63ec21e01  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c
  fedde1c2812219bd1650a5838e226124  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-2.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
! c914fed76b70b1daf2ac4785dcc5ddd7  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
  2334bf8cdee7b4a9d5ee0ba235a96bcd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
  e1d1b9e055d09a1e78f8bfc020b865df  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-1.c
  1b29b481cb4054908fcf08ddd651fdd4  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
! 681569efeb3abec2f94b0963a699de73  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
  4de054259fe132f2282ead93ad09a5cd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
  70ea44bff5911320b0dbdcab7f556cdc  gcc/testsuite/gcc.target/i386/avx2-vec-mask-bit-not.c
  990742bce89a71ddcd0d9565f96bfe57  gcc/testsuite/gcc.target/i386/avx2-vec-set-1.c
--- 86822,86836 ----
  eb660431400dfd8f30b0e0eac2d5c055  gcc/testsuite/gcc.target/i386/avx2-pr99517-2.c
  043383b25f13e0c9b9089a42c73d0865  gcc/testsuite/gcc.target/i386/avx2-pr99908.c
  62a66a977f36c3fad279922d1cc45fac  gcc/testsuite/gcc.target/i386/avx2-psraq-1.c
! 0bb3bca52cb121228e49963614217cb6  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c
  fedde1c2812219bd1650a5838e226124  gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-2.c
  2b83554762241a146df7ccc1617e1bfa  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-1.c
  193f0a7d029b84ce4e3b2e58eac8240a  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsd_pd-2.c
! 2ccdcf54dafb8bdb684df5a63c333df3  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
  2334bf8cdee7b4a9d5ee0ba235a96bcd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-2.c
  e1d1b9e055d09a1e78f8bfc020b865df  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-1.c
  1b29b481cb4054908fcf08ddd651fdd4  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps-2.c
! ea03c37c70d21ea60d8264c86997958c  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
  4de054259fe132f2282ead93ad09a5cd  gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-2.c
  70ea44bff5911320b0dbdcab7f556cdc  gcc/testsuite/gcc.target/i386/avx2-vec-mask-bit-not.c
  990742bce89a71ddcd0d9565f96bfe57  gcc/testsuite/gcc.target/i386/avx2-vec-set-1.c
*************** a42ac2acf36aeb72f9b34b9a709d0702  gcc/te
*** 86708,86716 ****
  9e0d817063f098c643ef1641cfe87db1  gcc/testsuite/gcc.target/i386/avx2-vect-simd-15.c
  d027778ce32ca9c17ee34b12026d3b42  gcc/testsuite/gcc.target/i386/avx2-vect-simd-8.c
  c80d5d80eb6f05fe1683d3b445e07b37  gcc/testsuite/gcc.target/i386/avx2-vect-simd-9.c
! 4603bfd8a6e79de35055af2aecd1c8e2  gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c
  66107c44da465ecf778c5c46a5f24f79  gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c
! ddb6e876843d279a863966ee3d2fbc48  gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c
  849696c7399ee3b93d9b0ec1e82f054f  gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c
  9745a93a0fe2535a4f108bb419893796  gcc/testsuite/gcc.target/i386/avx2-vmovntdqa-1.c
  7cc5249d9d443ecf9551057fd7c7b1e7  gcc/testsuite/gcc.target/i386/avx2-vmovntdqa-2.c
--- 86847,86855 ----
  9e0d817063f098c643ef1641cfe87db1  gcc/testsuite/gcc.target/i386/avx2-vect-simd-15.c
  d027778ce32ca9c17ee34b12026d3b42  gcc/testsuite/gcc.target/i386/avx2-vect-simd-8.c
  c80d5d80eb6f05fe1683d3b445e07b37  gcc/testsuite/gcc.target/i386/avx2-vect-simd-9.c
! a815c5492405d02511e2407a7301dd17  gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c
  66107c44da465ecf778c5c46a5f24f79  gcc/testsuite/gcc.target/i386/avx2-vextracti128-2.c
! 73cff88cc94139841143bb15649d2fe1  gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c
  849696c7399ee3b93d9b0ec1e82f054f  gcc/testsuite/gcc.target/i386/avx2-vinserti128-2.c
  9745a93a0fe2535a4f108bb419893796  gcc/testsuite/gcc.target/i386/avx2-vmovntdqa-1.c
  7cc5249d9d443ecf9551057fd7c7b1e7  gcc/testsuite/gcc.target/i386/avx2-vmovntdqa-2.c
*************** e2a45efc7d03179e1464fe6f883cc569  gcc/te
*** 86750,86759 ****
  3155f71a19d36c408a62480472356986  gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
  d26bfcbc0aee8e0905b210185fbeed79  gcc/testsuite/gcc.target/i386/avx2-vpalignr256-1.c
  0754925375d326a9153d559580f84bd6  gcc/testsuite/gcc.target/i386/avx2-vpalignr256-2.c
! f3eff2e43289473cb055d9999507ca7e  gcc/testsuite/gcc.target/i386/avx2-vpand-1.c
  a04f69c743a2ead491ecaeb51d3f2b09  gcc/testsuite/gcc.target/i386/avx2-vpand-2.c
! 3b9ca41cd116f6d4d2f752d06b2046ad  gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
! d9f65fd5493c44e335bd9f401d7d81c4  gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c
  b14d5c9a68c65be0d6b640b7b3ec4963  gcc/testsuite/gcc.target/i386/avx2-vpandn-2.c
  8c5c9e32c0c1e611a44f08b5dbfe7c85  gcc/testsuite/gcc.target/i386/avx2-vpavgb-1.c
  eb708969415212c746828c0aef00baee  gcc/testsuite/gcc.target/i386/avx2-vpavgb-2.c
--- 86889,86898 ----
  3155f71a19d36c408a62480472356986  gcc/testsuite/gcc.target/i386/avx2-vpaddw-3.c
  d26bfcbc0aee8e0905b210185fbeed79  gcc/testsuite/gcc.target/i386/avx2-vpalignr256-1.c
  0754925375d326a9153d559580f84bd6  gcc/testsuite/gcc.target/i386/avx2-vpalignr256-2.c
! 6b70937e624a6ed5b4e332a9633c6514  gcc/testsuite/gcc.target/i386/avx2-vpand-1.c
  a04f69c743a2ead491ecaeb51d3f2b09  gcc/testsuite/gcc.target/i386/avx2-vpand-2.c
! 3087dca876499862ee2416f5bff80857  gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
! 08939d7b7e45c2654dafcd1a6971476d  gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c
  b14d5c9a68c65be0d6b640b7b3ec4963  gcc/testsuite/gcc.target/i386/avx2-vpandn-2.c
  8c5c9e32c0c1e611a44f08b5dbfe7c85  gcc/testsuite/gcc.target/i386/avx2-vpavgb-1.c
  eb708969415212c746828c0aef00baee  gcc/testsuite/gcc.target/i386/avx2-vpavgb-2.c
*************** be0d04fb46164198dcf87959ad7c501e  gcc/te
*** 86908,86914 ****
  db88b1df2bd40c80606462c834eba77c  gcc/testsuite/gcc.target/i386/avx2-vpmuludq-1.c
  ee27bcbb23774756baa8b928b1f16253  gcc/testsuite/gcc.target/i386/avx2-vpmuludq-2.c
  9de0ea77974c78cd1a505dcff125759e  gcc/testsuite/gcc.target/i386/avx2-vpop-check.h
! 74ecd503123a18e927ddc9ffa48a5c6b  gcc/testsuite/gcc.target/i386/avx2-vpor-1.c
  2413dd6aadfeab4d5b7b6623c5020b57  gcc/testsuite/gcc.target/i386/avx2-vpor-2.c
  2079370532bb3f478718add06e212847  gcc/testsuite/gcc.target/i386/avx2-vpsadbw-1.c
  50fde94cd1ed10738cdcbc6dcda6ce1b  gcc/testsuite/gcc.target/i386/avx2-vpsadbw-2.c
--- 87047,87053 ----
  db88b1df2bd40c80606462c834eba77c  gcc/testsuite/gcc.target/i386/avx2-vpmuludq-1.c
  ee27bcbb23774756baa8b928b1f16253  gcc/testsuite/gcc.target/i386/avx2-vpmuludq-2.c
  9de0ea77974c78cd1a505dcff125759e  gcc/testsuite/gcc.target/i386/avx2-vpop-check.h
! 3fa8648168fe388eabaa579321e90905  gcc/testsuite/gcc.target/i386/avx2-vpor-1.c
  2413dd6aadfeab4d5b7b6623c5020b57  gcc/testsuite/gcc.target/i386/avx2-vpor-2.c
  2079370532bb3f478718add06e212847  gcc/testsuite/gcc.target/i386/avx2-vpsadbw-1.c
  50fde94cd1ed10738cdcbc6dcda6ce1b  gcc/testsuite/gcc.target/i386/avx2-vpsadbw-2.c
*************** f1d81bb2aa29430ffc97c28299b0ff19  gcc/te
*** 87020,87037 ****
  3019df237ba1bf9bfa58464f35072cf4  gcc/testsuite/gcc.target/i386/avx2-vpunpcklqdq-2.c
  9a6b3547eab2af9c5414618d13bad0f1  gcc/testsuite/gcc.target/i386/avx2-vpunpcklwd-1.c
  26751e3e8660feb66f15a01cd7260c4f  gcc/testsuite/gcc.target/i386/avx2-vpunpcklwd-2.c
! 9248b5a45ef16a214bee776d65455f9f  gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c
  7f0e9e79d91783e5e1dbe2af3fa7684d  gcc/testsuite/gcc.target/i386/avx2-vpxor-2.c
  bbe8f565a096f607db5869dc65e6878c  gcc/testsuite/gcc.target/i386/avx2-vshift-1.c
! 5c4b6744b76e8979d3a9e676ed24ab21  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
! d313bab77287b21e3f72292a35842992  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
! 782370215f9eb7521cac26b9e2342c33  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
  1ed00f85c56ba2eb621086a7b39e4529  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
  ac1c6f23df451df8715f98348ab41e7b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
  010f15340b233494003927d058cdde0e  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
  30a72b65677ffe96e520e986be6eb49b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! 4c27cde84e5828fb8e0db20c9d17f5af  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! c158fe42ffca88feedfafca517f41077  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
  3a36003c490438a6be37d8b9024bce3e  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
  aaef10fa24c4bc67258e89962335eaed  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
--- 87159,87176 ----
  3019df237ba1bf9bfa58464f35072cf4  gcc/testsuite/gcc.target/i386/avx2-vpunpcklqdq-2.c
  9a6b3547eab2af9c5414618d13bad0f1  gcc/testsuite/gcc.target/i386/avx2-vpunpcklwd-1.c
  26751e3e8660feb66f15a01cd7260c4f  gcc/testsuite/gcc.target/i386/avx2-vpunpcklwd-2.c
! 26cfdcf5b47be5f84d02217b4afcd158  gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c
  7f0e9e79d91783e5e1dbe2af3fa7684d  gcc/testsuite/gcc.target/i386/avx2-vpxor-2.c
  bbe8f565a096f607db5869dc65e6878c  gcc/testsuite/gcc.target/i386/avx2-vshift-1.c
! be4482a4f3be425544d3ca34e3c4ca45  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
! ec37694146f12aa07e06ed3a4af8e57e  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
! 76ae2b0d0e127ca20e855da088f29b98  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
  1ed00f85c56ba2eb621086a7b39e4529  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
  ac1c6f23df451df8715f98348ab41e7b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
  010f15340b233494003927d058cdde0e  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
  30a72b65677ffe96e520e986be6eb49b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! 3d82bf9b135d5c244963d70d2f9493fb  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! d1e7b3a6d10b714c6911c7889a2c0ce7  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
  3a36003c490438a6be37d8b9024bce3e  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
  aaef10fa24c4bc67258e89962335eaed  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
*************** e4698cb8823977a5894910b921a979aa  gcc/te
*** 87179,87185 ****
  2f578e3dd41abd30d73bf9e0b3b1e474  gcc/testsuite/gcc.target/i386/avx512bw-pr95488-2.c
  6e566b675df9dfd7f6f79b8615cc780b  gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c
  de70add72880f23cd146fbcc12d0c044  gcc/testsuite/gcc.target/i386/avx512bw-pr96906-1.c
! 03e6288ecabc420b8cf1f581aa246623  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c
  86d1e2efcab8b345a067e94b7ba2d579  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-2.c
  f1ced29f655d431dc7ec96f26d147984  gcc/testsuite/gcc.target/i386/avx512bw-truncsfbf.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
--- 87318,87324 ----
  2f578e3dd41abd30d73bf9e0b3b1e474  gcc/testsuite/gcc.target/i386/avx512bw-pr95488-2.c
  6e566b675df9dfd7f6f79b8615cc780b  gcc/testsuite/gcc.target/i386/avx512bw-pr96891-1.c
  de70add72880f23cd146fbcc12d0c044  gcc/testsuite/gcc.target/i386/avx512bw-pr96906-1.c
! adfb01fdf99da364d985eda7bcf8e95a  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c
  86d1e2efcab8b345a067e94b7ba2d579  gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-2.c
  f1ced29f655d431dc7ec96f26d147984  gcc/testsuite/gcc.target/i386/avx512bw-truncsfbf.c
  186b4d26f65c47b5b328795efe473c71  gcc/testsuite/gcc.target/i386/avx512bw-vdbpsadbw-1.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 89999,90009 ****
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
  654b3662e0d1c66895af4e0b4c302291  gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
  c77edd4d8dc9ee85bf93b6e2c114d962  gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
! fa6ebeb8a38629b307b197117b388ef7  gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
! 183539c22965737f5ebca3d3e47d261b  gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
! 28a4a0d6bd0e09a7f1da7f5515db9c70  gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
! eeb2c795579e4b693eed6b471e041925  gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
! 4dde22c7279c7c8e684af5f718431d7d  gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
  19fe0cd1992bc2d71db601dda2c2bd34  gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  7c1badccd4856954ccba2139093860d2  gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
--- 90138,90148 ----
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
  654b3662e0d1c66895af4e0b4c302291  gcc/testsuite/gcc.target/i386/builtin-copysign-2.c
  c77edd4d8dc9ee85bf93b6e2c114d962  gcc/testsuite/gcc.target/i386/builtin-copysign-3.c
! 7004f49a92b6818e6f7e14a0f0bc4932  gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
! 8b4d25573678328f704fe04d3b1d6a0f  gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
! b728fc43b8e62981d569f7464cde0242  gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
! e5cd0ee06f31d8aba1869493b69339a1  gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
! f8681e98c8d3a977dd2a7f8232b652aa  gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
  19fe0cd1992bc2d71db601dda2c2bd34  gcc/testsuite/gcc.target/i386/builtin-copysign-8b.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  7c1badccd4856954ccba2139093860d2  gcc/testsuite/gcc.target/i386/builtin-fabs-1.c
*************** fca446fb8db4eb130017e79f6967b7fc  gcc/te
*** 90348,90355 ****
  4c8a9ffaff93028b0e21e86ab3c4590a  gcc/testsuite/gcc.target/i386/fma4-256-msubXX.c
  f066dcb6aab976663c47d52fd92e92be  gcc/testsuite/gcc.target/i386/fma4-256-nmaccXX.c
  63bbea74fa22c4b95221462c50fec308  gcc/testsuite/gcc.target/i386/fma4-256-nmsubXX.c
! beb5dbebeeefdb779be2c6a08bbc586e  gcc/testsuite/gcc.target/i386/fma4-256-vector.c
! fab28eb86f92645faba058abe8856d6c  gcc/testsuite/gcc.target/i386/fma4-builtin-2.c
  57acd573d0d3c04e7254ff13e5c7a711  gcc/testsuite/gcc.target/i386/fma4-builtin.c
  43950172bf6d6ee95625021526123538  gcc/testsuite/gcc.target/i386/fma4-check.h
  94f60ea1ac07538467868212b2824c5b  gcc/testsuite/gcc.target/i386/fma4-fma-2.c
--- 90487,90494 ----
  4c8a9ffaff93028b0e21e86ab3c4590a  gcc/testsuite/gcc.target/i386/fma4-256-msubXX.c
  f066dcb6aab976663c47d52fd92e92be  gcc/testsuite/gcc.target/i386/fma4-256-nmaccXX.c
  63bbea74fa22c4b95221462c50fec308  gcc/testsuite/gcc.target/i386/fma4-256-nmsubXX.c
! 872937fc69bcd6b754643bcd7f15ba72  gcc/testsuite/gcc.target/i386/fma4-256-vector.c
! ac7624e4b030a226b5fdbba0ba134212  gcc/testsuite/gcc.target/i386/fma4-builtin-2.c
  57acd573d0d3c04e7254ff13e5c7a711  gcc/testsuite/gcc.target/i386/fma4-builtin.c
  43950172bf6d6ee95625021526123538  gcc/testsuite/gcc.target/i386/fma4-check.h
  94f60ea1ac07538467868212b2824c5b  gcc/testsuite/gcc.target/i386/fma4-fma-2.c
*************** f2da98308ea381a2208f13bf91ba7c9b  gcc/te
*** 90358,90365 ****
  9ca9f3790821197b222de722021d675d  gcc/testsuite/gcc.target/i386/fma4-msubXX.c
  125a8aaa6e6c4ccbfdc9e400be4ae637  gcc/testsuite/gcc.target/i386/fma4-nmaccXX.c
  ff1367c2999883d575ce7a7e325c9650  gcc/testsuite/gcc.target/i386/fma4-nmsubXX.c
! 4bd7ca874f34425b1f81e1fa81eaf9a3  gcc/testsuite/gcc.target/i386/fma4-vector-2.c
! f33ef9447efa694b2af1bb03f65a05af  gcc/testsuite/gcc.target/i386/fma4-vector.c
  396ab4a6da0dafe4762f4ace61659d81  gcc/testsuite/gcc.target/i386/fma_1.h
  281baf4fffbbc7608d997a88c74209b5  gcc/testsuite/gcc.target/i386/fma_2.h
  d5e894871a62ba7fdc4844f40477340b  gcc/testsuite/gcc.target/i386/fma_3.h
--- 90497,90504 ----
  9ca9f3790821197b222de722021d675d  gcc/testsuite/gcc.target/i386/fma4-msubXX.c
  125a8aaa6e6c4ccbfdc9e400be4ae637  gcc/testsuite/gcc.target/i386/fma4-nmaccXX.c
  ff1367c2999883d575ce7a7e325c9650  gcc/testsuite/gcc.target/i386/fma4-nmsubXX.c
! 0ac6ebe5f44df26020670535a4def059  gcc/testsuite/gcc.target/i386/fma4-vector-2.c
! 05539e3fd03ac0748dcb0791419ab7f1  gcc/testsuite/gcc.target/i386/fma4-vector.c
  396ab4a6da0dafe4762f4ace61659d81  gcc/testsuite/gcc.target/i386/fma_1.h
  281baf4fffbbc7608d997a88c74209b5  gcc/testsuite/gcc.target/i386/fma_2.h
  d5e894871a62ba7fdc4844f40477340b  gcc/testsuite/gcc.target/i386/fma_3.h
*************** c1320fd604803bc04257c984f1e3ba77  gcc/te
*** 90423,90436 ****
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 5f7d0e0265096a86b346a63b152b1504  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  b954a6c88c30f112db6bd140acb0162c  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
  98162f894173cc3f53a1739d65f4341d  gcc/testsuite/gcc.target/i386/funcspec-9.c
  3a08303eb38d70d9bd8e13a2c173ac97  gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c
  b24def76cda5e6910ee6d0acbaa240e6  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c
! 8dc27ba8c75a1a5d359626de491eecb5  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
  2b0fb9cbf57f10cb2e97ffa7daa9ca55  gcc/testsuite/gcc.target/i386/fuse-caller-save.c
  374b8a1c71832c58fa214de004488fce  gcc/testsuite/gcc.target/i386/fxrstor-1.c
  4ba171e5929e217bf7404c8b2936f4dd  gcc/testsuite/gcc.target/i386/fxrstor64-1.c
--- 90562,90575 ----
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! 4874b2da3dcc96561b09535f4b141f04  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  b954a6c88c30f112db6bd140acb0162c  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
  98162f894173cc3f53a1739d65f4341d  gcc/testsuite/gcc.target/i386/funcspec-9.c
  3a08303eb38d70d9bd8e13a2c173ac97  gcc/testsuite/gcc.target/i386/fuse-caller-save-rec.c
  b24def76cda5e6910ee6d0acbaa240e6  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm-run.c
! a7ca76c7abe0900910291493adb72b37  gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
  2b0fb9cbf57f10cb2e97ffa7daa9ca55  gcc/testsuite/gcc.target/i386/fuse-caller-save.c
  374b8a1c71832c58fa214de004488fce  gcc/testsuite/gcc.target/i386/fxrstor-1.c
  4ba171e5929e217bf7404c8b2936f4dd  gcc/testsuite/gcc.target/i386/fxrstor64-1.c
*************** c48c02707eed4c21b1fea0eb0be3e02a  gcc/te
*** 90498,90503 ****
--- 90637,90643 ----
  b9fe9d47303c04eb3addd78ed747270a  gcc/testsuite/gcc.target/i386/iamcu/test_passing_unions.c
  f508e2c1d144c2c5c11dc60aaf9d08cc  gcc/testsuite/gcc.target/i386/iamcu/test_struct_returning.c
  b6c1af324fa0e840c1c6dc306c27271e  gcc/testsuite/gcc.target/i386/iamcu/test_varargs.c
+ 435003b7ec3fb1ac44884cae7d5911b1  gcc/testsuite/gcc.target/i386/ifcvt-average-cost-1.c
  ca32887018712b14ffe3bead48a9d143  gcc/testsuite/gcc.target/i386/ifcvt-onecmpl-abs-1.c
  e200d48b18e79edb3fcc2d27d28a1494  gcc/testsuite/gcc.target/i386/ifcvt-reduction-logic-op.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/i386/iinline-attr-2.c
*************** e881d81f2a724e5ea257d307b17c0025  gcc/te
*** 90723,90728 ****
--- 90863,90871 ----
  c30b0c67d4b7ac0cebaeaee89dbf7c87  gcc/testsuite/gcc.target/i386/long-double-80-7.c
  8c5117a28eaa54c02b0dff4cbb63eda5  gcc/testsuite/gcc.target/i386/long-double-80-8.c
  095d76b862aafc4842bcee6b53d13af1  gcc/testsuite/gcc.target/i386/long-double-80-9.c
+ 9625d8b5c0005debf076fdaa9566b09a  gcc/testsuite/gcc.target/i386/long-mul-phi-split.c
+ b87a5c3b13bc5b833c25456cb2d805ae  gcc/testsuite/gcc.target/i386/long-mul-sweep.c
+ 253280cbf1b89ab513f756f280ce26ac  gcc/testsuite/gcc.target/i386/long_mul.c
  688dfa680a5bcabf2269f19881a0ab88  gcc/testsuite/gcc.target/i386/loop-1.c
  ef7a5a666988f00b7cd8467861ed837f  gcc/testsuite/gcc.target/i386/loop-2.c
  7ae1213f9a5e9bc8cf14eb97a01465e7  gcc/testsuite/gcc.target/i386/loop-3.c
*************** ee6163f62ab711d692467ababe19d6e8  gcc/te
*** 90796,90804 ****
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  647352383c809884f76f16938eb90cd2  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! cc56945add1a33e4b0d139ccfc9105ee  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
  9aa5521551927ee379c30c41a443754c  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
! 565f44063769009d8f8ba26668888087  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
  4a4d1a9e4a261134b42dd364faf51acb  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
  d8852e9ba85b10d7405229fac53f2f31  gcc/testsuite/gcc.target/i386/memset-pr120683-14.c
  2ff98490298b10f28e799dfe2a81e58d  gcc/testsuite/gcc.target/i386/memset-pr120683-15.c
--- 90939,90947 ----
  f6fd4449a72ddd84f5687641334109d2  gcc/testsuite/gcc.target/i386/memcpy-vector_loop-2.c
  40cce91585f47cde61390171cd489668  gcc/testsuite/gcc.target/i386/memset-1.c
  647352383c809884f76f16938eb90cd2  gcc/testsuite/gcc.target/i386/memset-pr120683-1.c
! 91992f316f076092fe443b6d2fb98823  gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
  9aa5521551927ee379c30c41a443754c  gcc/testsuite/gcc.target/i386/memset-pr120683-11.c
! 0550382ab2c16edd4fe57b18c8d3de8d  gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
  4a4d1a9e4a261134b42dd364faf51acb  gcc/testsuite/gcc.target/i386/memset-pr120683-13.c
  d8852e9ba85b10d7405229fac53f2f31  gcc/testsuite/gcc.target/i386/memset-pr120683-14.c
  2ff98490298b10f28e799dfe2a81e58d  gcc/testsuite/gcc.target/i386/memset-pr120683-15.c
*************** f3e395b65622feac99889a0a7b3407ca  gcc/te
*** 90934,90940 ****
  b0015a9bcc0c4efd0261a58f3798d964  gcc/testsuite/gcc.target/i386/no-callee-saved-12.c
  42bd97eb7c2cc9b7ea74515a0c4cf3ce  gcc/testsuite/gcc.target/i386/no-callee-saved-13.c
  ce847ee191adcc1a562b86eae8463fe1  gcc/testsuite/gcc.target/i386/no-callee-saved-14.c
! 28070df22cbeb8bdda40326e1f3db379  gcc/testsuite/gcc.target/i386/no-callee-saved-15.c
  9204056c1841f39e08a93f36fd4f926c  gcc/testsuite/gcc.target/i386/no-callee-saved-16.c
  603a6e01b2f7a9cfee08f9a76db61c4a  gcc/testsuite/gcc.target/i386/no-callee-saved-17.c
  ca239e587e0aa89d75a7253cb23488fd  gcc/testsuite/gcc.target/i386/no-callee-saved-18.c
--- 91077,91083 ----
  b0015a9bcc0c4efd0261a58f3798d964  gcc/testsuite/gcc.target/i386/no-callee-saved-12.c
  42bd97eb7c2cc9b7ea74515a0c4cf3ce  gcc/testsuite/gcc.target/i386/no-callee-saved-13.c
  ce847ee191adcc1a562b86eae8463fe1  gcc/testsuite/gcc.target/i386/no-callee-saved-14.c
! 091d43b66b285f2b050f355a938fc0fd  gcc/testsuite/gcc.target/i386/no-callee-saved-15.c
  9204056c1841f39e08a93f36fd4f926c  gcc/testsuite/gcc.target/i386/no-callee-saved-16.c
  603a6e01b2f7a9cfee08f9a76db61c4a  gcc/testsuite/gcc.target/i386/no-callee-saved-17.c
  ca239e587e0aa89d75a7253cb23488fd  gcc/testsuite/gcc.target/i386/no-callee-saved-18.c
*************** d6be9416b5a692dcf10f49538e62c72a  gcc/te
*** 91148,91154 ****
  810cb15f6223190038b08b2d9a654199  gcc/testsuite/gcc.target/i386/pr100711-5.c
  a62f6df63fc4be6e37901b08c83e8ecc  gcc/testsuite/gcc.target/i386/pr100711-6.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
! 293660d266715c7814b0758f24d54f69  gcc/testsuite/gcc.target/i386/pr100865-1.c
  78f0e3844baaf11368a3e02e0e0e61a7  gcc/testsuite/gcc.target/i386/pr100865-10a.c
  216788a5980b50f5799c0c181e94faa0  gcc/testsuite/gcc.target/i386/pr100865-10b.c
  f5bc9b077ed43bdc9a703fbae0412df9  gcc/testsuite/gcc.target/i386/pr100865-11a.c
--- 91291,91297 ----
  810cb15f6223190038b08b2d9a654199  gcc/testsuite/gcc.target/i386/pr100711-5.c
  a62f6df63fc4be6e37901b08c83e8ecc  gcc/testsuite/gcc.target/i386/pr100711-6.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
! 9026be47c2eca9e22f82833f51fa2f46  gcc/testsuite/gcc.target/i386/pr100865-1.c
  78f0e3844baaf11368a3e02e0e0e61a7  gcc/testsuite/gcc.target/i386/pr100865-10a.c
  216788a5980b50f5799c0c181e94faa0  gcc/testsuite/gcc.target/i386/pr100865-10b.c
  f5bc9b077ed43bdc9a703fbae0412df9  gcc/testsuite/gcc.target/i386/pr100865-11a.c
*************** e292a240560fbabcde2b3e6709148e38  gcc/te
*** 91157,91174 ****
  bfc29b0613a8b50ad05723222e02fca0  gcc/testsuite/gcc.target/i386/pr100865-12a.c
  05ff62d2aea9db819682757c26e4d599  gcc/testsuite/gcc.target/i386/pr100865-12b.c
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
! 34a761a63cd2014d84ca26fea2853a7f  gcc/testsuite/gcc.target/i386/pr100865-2.c
! 41996af8c078f368a0eaf732c28fde57  gcc/testsuite/gcc.target/i386/pr100865-3.c
! 94272e9b3ca7a0c9f0bce53428b05cbd  gcc/testsuite/gcc.target/i386/pr100865-4a.c
! 7205f8bbba2d63098a67ea2e0f0a2a3a  gcc/testsuite/gcc.target/i386/pr100865-4b.c
! 78ea55b8818c2a0569b83153050c7528  gcc/testsuite/gcc.target/i386/pr100865-5a.c
! d251b3b4e25ec1e31408e14d0c051fb6  gcc/testsuite/gcc.target/i386/pr100865-5b.c
! b1a92e51935fa6dfe87cc1b5591f86cc  gcc/testsuite/gcc.target/i386/pr100865-6a.c
! cd0c1e0c14e0cd797ad6a3fe36f61c41  gcc/testsuite/gcc.target/i386/pr100865-6b.c
! 79c69335f7b22344550f6fa784a3c0fd  gcc/testsuite/gcc.target/i386/pr100865-6c.c
! e330f48d764c600de3a26efeed03b86f  gcc/testsuite/gcc.target/i386/pr100865-7a.c
! 9ad73e17a2a8a2177f83924d42a9ec6d  gcc/testsuite/gcc.target/i386/pr100865-7b.c
! a11e4c47ae1213eea59b55e60f30f4f8  gcc/testsuite/gcc.target/i386/pr100865-7c.c
  2e6c0885d5ed036832dae0f07276269a  gcc/testsuite/gcc.target/i386/pr100865-8a.c
  38883a5389fa795fd84a1023776608ea  gcc/testsuite/gcc.target/i386/pr100865-8b.c
  b1b7cd191466fe5bf9c8de405078e268  gcc/testsuite/gcc.target/i386/pr100865-8c.c
--- 91300,91317 ----
  bfc29b0613a8b50ad05723222e02fca0  gcc/testsuite/gcc.target/i386/pr100865-12a.c
  05ff62d2aea9db819682757c26e4d599  gcc/testsuite/gcc.target/i386/pr100865-12b.c
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
! c61267d0f19aab09bf5f2bcf404a8306  gcc/testsuite/gcc.target/i386/pr100865-2.c
! 48c190ad3c405c673c4d22780450cfcc  gcc/testsuite/gcc.target/i386/pr100865-3.c
! e10913017ab93c497fff76fa943ec711  gcc/testsuite/gcc.target/i386/pr100865-4a.c
! 18e47771c97e8c34bd7c158705e882f0  gcc/testsuite/gcc.target/i386/pr100865-4b.c
! e4c3cef6e56092329b7e8007ad132dde  gcc/testsuite/gcc.target/i386/pr100865-5a.c
! 6818804c4be3ed8588645d02e55e2eb4  gcc/testsuite/gcc.target/i386/pr100865-5b.c
! 632b7fc52ab127a47558e2dce004fc10  gcc/testsuite/gcc.target/i386/pr100865-6a.c
! 719428ebfa43a2e59370f1c54767d8b1  gcc/testsuite/gcc.target/i386/pr100865-6b.c
! db055e22a2b101c8284576cbf3283500  gcc/testsuite/gcc.target/i386/pr100865-6c.c
! 8dd09450a322ab9ad4295f089b391f57  gcc/testsuite/gcc.target/i386/pr100865-7a.c
! 87e8f70a57f20123c1d40c451b9e10a7  gcc/testsuite/gcc.target/i386/pr100865-7b.c
! 404ef776557480a1c87d6ba163c0f0a1  gcc/testsuite/gcc.target/i386/pr100865-7c.c
  2e6c0885d5ed036832dae0f07276269a  gcc/testsuite/gcc.target/i386/pr100865-8a.c
  38883a5389fa795fd84a1023776608ea  gcc/testsuite/gcc.target/i386/pr100865-8b.c
  b1b7cd191466fe5bf9c8de405078e268  gcc/testsuite/gcc.target/i386/pr100865-8c.c
*************** ad9039a2d4def8864439d6efb4020e66  gcc/te
*** 91236,91244 ****
  0457f3d16b7a3fe95e09e531dd63da5f  gcc/testsuite/gcc.target/i386/pr101989-1.c
  c0989692a0f2603de7cdb8cf6bbc470d  gcc/testsuite/gcc.target/i386/pr101989-2.c
  ce94fb3876b696419b146fe6dbfba74b  gcc/testsuite/gcc.target/i386/pr101989-3.c
! 21b1e986ca3dc4d419c2817e1ca408b4  gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c
  87b3d1a468a63279ca3c521ffeeeb440  gcc/testsuite/gcc.target/i386/pr102016.c
! 149ca17ab2bce6331b1e630f254fe518  gcc/testsuite/gcc.target/i386/pr102021.c
  ae9e982908f39694cfa63cde47ecd4ef  gcc/testsuite/gcc.target/i386/pr102024.c
  7b643f9feaacdf61e235197b76917d23  gcc/testsuite/gcc.target/i386/pr102080.c
  753fa8f7460d27b7c0a0e6ff32f4a8e7  gcc/testsuite/gcc.target/i386/pr102230.c
--- 91379,91387 ----
  0457f3d16b7a3fe95e09e531dd63da5f  gcc/testsuite/gcc.target/i386/pr101989-1.c
  c0989692a0f2603de7cdb8cf6bbc470d  gcc/testsuite/gcc.target/i386/pr101989-2.c
  ce94fb3876b696419b146fe6dbfba74b  gcc/testsuite/gcc.target/i386/pr101989-3.c
! f1c2833f455d47538f77c2912de7f676  gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c
  87b3d1a468a63279ca3c521ffeeeb440  gcc/testsuite/gcc.target/i386/pr102016.c
! 392604c0b8175708097d93b5b4d77cae  gcc/testsuite/gcc.target/i386/pr102021.c
  ae9e982908f39694cfa63cde47ecd4ef  gcc/testsuite/gcc.target/i386/pr102024.c
  7b643f9feaacdf61e235197b76917d23  gcc/testsuite/gcc.target/i386/pr102080.c
  753fa8f7460d27b7c0a0e6ff32f4a8e7  gcc/testsuite/gcc.target/i386/pr102230.c
*************** abdcac20a85ff356a7103baf30c2cad2  gcc/te
*** 91437,91445 ****
  1c991f69922d2409520cabb4c80c0b51  gcc/testsuite/gcc.target/i386/pr105624.c
  d3054d00843266f8c2d242966d899040  gcc/testsuite/gcc.target/i386/pr105668.c
  eeeee8caa23185d1a21ba6680503f028  gcc/testsuite/gcc.target/i386/pr105711.c
! a498301dfaa6c0008b4d07706c9a06e2  gcc/testsuite/gcc.target/i386/pr105735-1.c
  135d7d6c0eb77bfdf1602a21d85cd598  gcc/testsuite/gcc.target/i386/pr105735-2.c
! c0a2ca005877e183a3bd3c684fd9ae58  gcc/testsuite/gcc.target/i386/pr105735-3.c
  8c9085240015050c98084d878d6470ba  gcc/testsuite/gcc.target/i386/pr105776.c
  ea3f5b1a8dc1f2a75525c32a752e7f2e  gcc/testsuite/gcc.target/i386/pr105778.c
  8217651f44dab90cf8e1033c97295008  gcc/testsuite/gcc.target/i386/pr105791.c
--- 91580,91588 ----
  1c991f69922d2409520cabb4c80c0b51  gcc/testsuite/gcc.target/i386/pr105624.c
  d3054d00843266f8c2d242966d899040  gcc/testsuite/gcc.target/i386/pr105668.c
  eeeee8caa23185d1a21ba6680503f028  gcc/testsuite/gcc.target/i386/pr105711.c
! 99bfb05defa36c8c62eb4fa6d253e5f3  gcc/testsuite/gcc.target/i386/pr105735-1.c
  135d7d6c0eb77bfdf1602a21d85cd598  gcc/testsuite/gcc.target/i386/pr105735-2.c
! 19122e108e50915803b7174777b9fe6e  gcc/testsuite/gcc.target/i386/pr105735-3.c
  8c9085240015050c98084d878d6470ba  gcc/testsuite/gcc.target/i386/pr105776.c
  ea3f5b1a8dc1f2a75525c32a752e7f2e  gcc/testsuite/gcc.target/i386/pr105778.c
  8217651f44dab90cf8e1033c97295008  gcc/testsuite/gcc.target/i386/pr105791.c
*************** bbd4316e9550f452c0b86cf4e3ecf4a8  gcc/te
*** 91486,91493 ****
  324d64685ac24a3673ae04df4a898f6b  gcc/testsuite/gcc.target/i386/pr106038-1.c
  e1526b4760d054549a455444c35997de  gcc/testsuite/gcc.target/i386/pr106053.c
  40ab3593bfaa70f993c029ce56e9ae68  gcc/testsuite/gcc.target/i386/pr106060-1.c
! db4c0429f3849e92a97358dd999effe6  gcc/testsuite/gcc.target/i386/pr106060-2.c
! 4d6040b4efe9721902384beb5e0ce209  gcc/testsuite/gcc.target/i386/pr106060-3.c
  a81b000946ef8fad4e273c7209987f99  gcc/testsuite/gcc.target/i386/pr106095.c
  7cb073c67b48920056a7708378cc97d8  gcc/testsuite/gcc.target/i386/pr106122.c
  2d54c8c3f54676aee89848132817019f  gcc/testsuite/gcc.target/i386/pr106231-1.c
--- 91629,91636 ----
  324d64685ac24a3673ae04df4a898f6b  gcc/testsuite/gcc.target/i386/pr106038-1.c
  e1526b4760d054549a455444c35997de  gcc/testsuite/gcc.target/i386/pr106053.c
  40ab3593bfaa70f993c029ce56e9ae68  gcc/testsuite/gcc.target/i386/pr106060-1.c
! b518f3fcc62e1bcdb3120720c0d77619  gcc/testsuite/gcc.target/i386/pr106060-2.c
! 8adcca6256f28a4ab6c29587d6b522c4  gcc/testsuite/gcc.target/i386/pr106060-3.c
  a81b000946ef8fad4e273c7209987f99  gcc/testsuite/gcc.target/i386/pr106095.c
  7cb073c67b48920056a7708378cc97d8  gcc/testsuite/gcc.target/i386/pr106122.c
  2d54c8c3f54676aee89848132817019f  gcc/testsuite/gcc.target/i386/pr106231-1.c
*************** ff0a586f8aaac7078fb79402d3f0df4b  gcc/te
*** 92026,92039 ****
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
  b0888d33414ecea8f98e864805a34d8f  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! c9163a54d9b0a2c8d54452388f616c82  gcc/testsuite/gcc.target/i386/pr122343-1b.c
  86bd2e7d7dcd9bc57c82576dc7596616  gcc/testsuite/gcc.target/i386/pr122343-2a.c
  93c2b50c7c1c7d4785ce748a8324b71d  gcc/testsuite/gcc.target/i386/pr122343-2b.c
  e1813196a401be80463e8793d8b3e44d  gcc/testsuite/gcc.target/i386/pr122343-3.c
  59d36bdf79ad5f812b8f36acc73d5738  gcc/testsuite/gcc.target/i386/pr122343-4a.c
  5c8f3a62ee65925ec85ca05ebc4a2859  gcc/testsuite/gcc.target/i386/pr122343-4b.c
  e89dabc63f423e248b117ddcc0bd09f3  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! afab8f5ab42e3a19413f10dae63b3aad  gcc/testsuite/gcc.target/i386/pr122343-5b.c
  8c51d97782c0626ec8d91a8c371c1d6c  gcc/testsuite/gcc.target/i386/pr122343-6a.c
  7b1832a1250169fac74e4a1ba41cf615  gcc/testsuite/gcc.target/i386/pr122343-6b.c
  f81af8a9e8ed27275e054f8c03ecacb7  gcc/testsuite/gcc.target/i386/pr122343-7.c
--- 92169,92182 ----
  9a861d0f957f59a5dc5e7cafeddd1343  gcc/testsuite/gcc.target/i386/pr122320-mask64.c
  f6a03ec739c3c632b84006aa8e240dae  gcc/testsuite/gcc.target/i386/pr122320-mask8.c
  b0888d33414ecea8f98e864805a34d8f  gcc/testsuite/gcc.target/i386/pr122343-1a.c
! 45e51d22443709fcfa8aef69b1bbe7aa  gcc/testsuite/gcc.target/i386/pr122343-1b.c
  86bd2e7d7dcd9bc57c82576dc7596616  gcc/testsuite/gcc.target/i386/pr122343-2a.c
  93c2b50c7c1c7d4785ce748a8324b71d  gcc/testsuite/gcc.target/i386/pr122343-2b.c
  e1813196a401be80463e8793d8b3e44d  gcc/testsuite/gcc.target/i386/pr122343-3.c
  59d36bdf79ad5f812b8f36acc73d5738  gcc/testsuite/gcc.target/i386/pr122343-4a.c
  5c8f3a62ee65925ec85ca05ebc4a2859  gcc/testsuite/gcc.target/i386/pr122343-4b.c
  e89dabc63f423e248b117ddcc0bd09f3  gcc/testsuite/gcc.target/i386/pr122343-5a.c
! a4629bf980c1074f7fbf457942ed27ef  gcc/testsuite/gcc.target/i386/pr122343-5b.c
  8c51d97782c0626ec8d91a8c371c1d6c  gcc/testsuite/gcc.target/i386/pr122343-6a.c
  7b1832a1250169fac74e4a1ba41cf615  gcc/testsuite/gcc.target/i386/pr122343-6b.c
  f81af8a9e8ed27275e054f8c03ecacb7  gcc/testsuite/gcc.target/i386/pr122343-7.c
*************** df76ec06f1f94b77cb1652a61b635dcd  gcc/te
*** 92097,92108 ****
  57561ff787e5008d8cbc12f15d3ef382  gcc/testsuite/gcc.target/i386/pr125351.c
  5e60669dc31220ebca3d33f2e3d79b71  gcc/testsuite/gcc.target/i386/pr125355-2.c
  0d5d3d25c881e920fd3309b334c0c58f  gcc/testsuite/gcc.target/i386/pr125355.c
! 3a279fe11d2ff2b5ac06c455d8030c0f  gcc/testsuite/gcc.target/i386/pr125436-1a.c
! 0004242b482f069875dbdaf9591afedd  gcc/testsuite/gcc.target/i386/pr125436-1b.c
! 76c265e51ce367d1bb22161a2785a112  gcc/testsuite/gcc.target/i386/pr125436-2a.c
! 611cade9ca2cb44f3bcd97a96c40961f  gcc/testsuite/gcc.target/i386/pr125436-2b.c
! 4fe6b8586570216e1e52b07fd8670ff3  gcc/testsuite/gcc.target/i386/pr125436-3.c
! da78a391ac02d4cc16ae604858c2e8df  gcc/testsuite/gcc.target/i386/pr125436-4.c
  20e05cf993391a61cf15835793091a43  gcc/testsuite/gcc.target/i386/pr125614.c
  92ee0e508226594fb395b77e261e4345  gcc/testsuite/gcc.target/i386/pr125708-2.c
  1f67cd0f9980b605cafe7d50af23cbf9  gcc/testsuite/gcc.target/i386/pr125883.c
--- 92240,92251 ----
  57561ff787e5008d8cbc12f15d3ef382  gcc/testsuite/gcc.target/i386/pr125351.c
  5e60669dc31220ebca3d33f2e3d79b71  gcc/testsuite/gcc.target/i386/pr125355-2.c
  0d5d3d25c881e920fd3309b334c0c58f  gcc/testsuite/gcc.target/i386/pr125355.c
! 120ac62fec7ec957d15a4329f2e1e865  gcc/testsuite/gcc.target/i386/pr125436-1a.c
! 2634939c029c563201fcb92a10f936fa  gcc/testsuite/gcc.target/i386/pr125436-1b.c
! 86c7eed73db37d78e6ab73cbbc786b9a  gcc/testsuite/gcc.target/i386/pr125436-2a.c
! f2df7b9680907cd2d84a066a6d763c8c  gcc/testsuite/gcc.target/i386/pr125436-2b.c
! f2099bc106c1fca535c8b7e3e7dafb6c  gcc/testsuite/gcc.target/i386/pr125436-3.c
! 119c9e5ccf10666da36f1c6df132d21d  gcc/testsuite/gcc.target/i386/pr125436-4.c
  20e05cf993391a61cf15835793091a43  gcc/testsuite/gcc.target/i386/pr125614.c
  92ee0e508226594fb395b77e261e4345  gcc/testsuite/gcc.target/i386/pr125708-2.c
  1f67cd0f9980b605cafe7d50af23cbf9  gcc/testsuite/gcc.target/i386/pr125883.c
*************** e11eed97001c00f6578dd361ce88c5fa  gcc/te
*** 92187,92199 ****
  90c3a1b1720e1c236e58fb0b53d4841a  gcc/testsuite/gcc.target/i386/pr126571-1.c
  6a37cd46787901480538583943da1a5b  gcc/testsuite/gcc.target/i386/pr126676.c
  137596f923c61fb9b145dc3e543a2f08  gcc/testsuite/gcc.target/i386/pr126685.c
  2ef1c5dd4b9ec4c9fdcf23ba50eede72  gcc/testsuite/gcc.target/i386/pr126787.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
  6a09a31c8162440929d99a05b6983c5a  gcc/testsuite/gcc.target/i386/pr14552.c
! e0e0a92c78bf564587af65728ae84707  gcc/testsuite/gcc.target/i386/pr15184-1.c
! 6e05e2de2734ee776c5605772d318712  gcc/testsuite/gcc.target/i386/pr15184-2.c
  d4aa6113ea62bc36639d93e1e44a1210  gcc/testsuite/gcc.target/i386/pr17390.c
  2e4c03f3bc4f33ebf1fe63318811709f  gcc/testsuite/gcc.target/i386/pr17692.c
  d3dae857859b68227163d1fc45aaf67c  gcc/testsuite/gcc.target/i386/pr18041-1.c
--- 92330,92353 ----
  90c3a1b1720e1c236e58fb0b53d4841a  gcc/testsuite/gcc.target/i386/pr126571-1.c
  6a37cd46787901480538583943da1a5b  gcc/testsuite/gcc.target/i386/pr126676.c
  137596f923c61fb9b145dc3e543a2f08  gcc/testsuite/gcc.target/i386/pr126685.c
+ 1a4737bff226a8080866b263302a7f59  gcc/testsuite/gcc.target/i386/pr126784-1.c
+ 29e2a0ceb43a3aa6055be6c790504314  gcc/testsuite/gcc.target/i386/pr126784-2.c
+ f7d7f5fc6a71e6fccabd7d5814e63675  gcc/testsuite/gcc.target/i386/pr126784-3.c
+ c48ea935d6bdb8615289d5ac93717b94  gcc/testsuite/gcc.target/i386/pr126784-4.c
+ bc56c56148a2774047b7e4a9c116cda5  gcc/testsuite/gcc.target/i386/pr126784-5.c
+ 7992feb763634ad0aa68e3ead9f39bf8  gcc/testsuite/gcc.target/i386/pr126784-6.c
  2ef1c5dd4b9ec4c9fdcf23ba50eede72  gcc/testsuite/gcc.target/i386/pr126787.c
+ 46663b148798782879014b61eb54f802  gcc/testsuite/gcc.target/i386/pr126788.c
+ 41c18d149cc0cdc039e9084838fea99d  gcc/testsuite/gcc.target/i386/pr126959-1a.c
+ c5b822cf883ad86dc871d35e2e74ea57  gcc/testsuite/gcc.target/i386/pr126959-1b.c
+ b075578545d76a598ae1c07222bbaef7  gcc/testsuite/gcc.target/i386/pr126959-2a.c
+ 624e5b170a48a03957c0be78b4a598e4  gcc/testsuite/gcc.target/i386/pr126959-2b.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
  6a09a31c8162440929d99a05b6983c5a  gcc/testsuite/gcc.target/i386/pr14552.c
! 97078cccf53619482b42f458ff987769  gcc/testsuite/gcc.target/i386/pr15184-1.c
! 8e43938c7bb1c989717a17f93ba28e5f  gcc/testsuite/gcc.target/i386/pr15184-2.c
  d4aa6113ea62bc36639d93e1e44a1210  gcc/testsuite/gcc.target/i386/pr17390.c
  2e4c03f3bc4f33ebf1fe63318811709f  gcc/testsuite/gcc.target/i386/pr17692.c
  d3dae857859b68227163d1fc45aaf67c  gcc/testsuite/gcc.target/i386/pr18041-1.c
*************** c502c143bfe08e286784446e3a530233  gcc/te
*** 92636,92646 ****
  c41787b461e07058b4753b061ebee528  gcc/testsuite/gcc.target/i386/pr54855-12.c
  da25227be6c2e8d97f4082c5dcee0ea8  gcc/testsuite/gcc.target/i386/pr54855-13.c
  e1f8fefaf23ab23b68f6b9e333156fbd  gcc/testsuite/gcc.target/i386/pr54855-2.c
! c5180162b29d54e400e719e562e3e7b2  gcc/testsuite/gcc.target/i386/pr54855-3.c
  6c8a61e66aa69d7b21476fdde3fc61e9  gcc/testsuite/gcc.target/i386/pr54855-4.c
  8454659f5121819b6572e5c62d9da410  gcc/testsuite/gcc.target/i386/pr54855-5.c
  4a710e105a13bc0c780bd4a46bd28238  gcc/testsuite/gcc.target/i386/pr54855-6.c
! eaa8b0340911db238f1a4cf7122772b7  gcc/testsuite/gcc.target/i386/pr54855-7.c
  44e6d3206f845c1ad1a6581540a52f97  gcc/testsuite/gcc.target/i386/pr54855-8.c
  bc63c3756a4c8558a345b23aed4936ba  gcc/testsuite/gcc.target/i386/pr54855-9.c
  f9b778e3b98dfbae81a8d9edc0e6e7f0  gcc/testsuite/gcc.target/i386/pr55049-1.c
--- 92790,92800 ----
  c41787b461e07058b4753b061ebee528  gcc/testsuite/gcc.target/i386/pr54855-12.c
  da25227be6c2e8d97f4082c5dcee0ea8  gcc/testsuite/gcc.target/i386/pr54855-13.c
  e1f8fefaf23ab23b68f6b9e333156fbd  gcc/testsuite/gcc.target/i386/pr54855-2.c
! ff37aa613ff148d723c43caa6c73146b  gcc/testsuite/gcc.target/i386/pr54855-3.c
  6c8a61e66aa69d7b21476fdde3fc61e9  gcc/testsuite/gcc.target/i386/pr54855-4.c
  8454659f5121819b6572e5c62d9da410  gcc/testsuite/gcc.target/i386/pr54855-5.c
  4a710e105a13bc0c780bd4a46bd28238  gcc/testsuite/gcc.target/i386/pr54855-6.c
! 4552780724ae7f7187a26facb2ac98fc  gcc/testsuite/gcc.target/i386/pr54855-7.c
  44e6d3206f845c1ad1a6581540a52f97  gcc/testsuite/gcc.target/i386/pr54855-8.c
  bc63c3756a4c8558a345b23aed4936ba  gcc/testsuite/gcc.target/i386/pr54855-9.c
  f9b778e3b98dfbae81a8d9edc0e6e7f0  gcc/testsuite/gcc.target/i386/pr55049-1.c
*************** ed049a272703c2981bd99fa9aae29bd9  gcc/te
*** 93086,93092 ****
  614a4d96f766f9b0c9a16b2c6430a0c4  gcc/testsuite/gcc.target/i386/pr70322-2.c
  000306df7153399c97be28712e1e4637  gcc/testsuite/gcc.target/i386/pr70322-3.c
  20bf8cbdb5ec84cb85770259cbdb7da9  gcc/testsuite/gcc.target/i386/pr70322-4.c
! d178a4178315727b7ac6a7f18e055893  gcc/testsuite/gcc.target/i386/pr70325.c
  e44800457a70163ec72b2dc33ac17526  gcc/testsuite/gcc.target/i386/pr70327.c
  eb4e22d671989cb7f3fba5d82472ab65  gcc/testsuite/gcc.target/i386/pr70355.c
  9d7c81de8851fa380ebd81b0f4c1c5a4  gcc/testsuite/gcc.target/i386/pr70359.c
--- 93240,93246 ----
  614a4d96f766f9b0c9a16b2c6430a0c4  gcc/testsuite/gcc.target/i386/pr70322-2.c
  000306df7153399c97be28712e1e4637  gcc/testsuite/gcc.target/i386/pr70322-3.c
  20bf8cbdb5ec84cb85770259cbdb7da9  gcc/testsuite/gcc.target/i386/pr70322-4.c
! 5d45a7c5762f20a45135cf860c61a66c  gcc/testsuite/gcc.target/i386/pr70325.c
  e44800457a70163ec72b2dc33ac17526  gcc/testsuite/gcc.target/i386/pr70327.c
  eb4e22d671989cb7f3fba5d82472ab65  gcc/testsuite/gcc.target/i386/pr70355.c
  9d7c81de8851fa380ebd81b0f4c1c5a4  gcc/testsuite/gcc.target/i386/pr70359.c
*************** e24e16431564ae1db7f06ba62681abaa  gcc/te
*** 93160,93166 ****
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
  93e914077bc0a0fec60293774cf1fb84  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
! f7128cf60180ba3fac33b941315c81be  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  2eceebafa8040e380209c0fbb4f79051  gcc/testsuite/gcc.target/i386/pr78057.c
  cb796275f121f6fc5bb34a1f5ecd6404  gcc/testsuite/gcc.target/i386/pr78102.c
--- 93314,93320 ----
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
  93e914077bc0a0fec60293774cf1fb84  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
! 27c686309118ac707428b45c128bc25e  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  2eceebafa8040e380209c0fbb4f79051  gcc/testsuite/gcc.target/i386/pr78057.c
  cb796275f121f6fc5bb34a1f5ecd6404  gcc/testsuite/gcc.target/i386/pr78102.c
*************** fdff40dff74b5a9723606b85d25291c0  gcc/te
*** 93352,93358 ****
  bb2d4966606a36afeb42adf77317fc37  gcc/testsuite/gcc.target/i386/pr81736-2.c
  a2ddb4d89c347a11f776d1247c99db5f  gcc/testsuite/gcc.target/i386/pr81736-3.c
  93ae06b858e123a7c00e3611bbcfd689  gcc/testsuite/gcc.target/i386/pr81736-4.c
! f30dda0a5cbcc534a34c804bf963045d  gcc/testsuite/gcc.target/i386/pr81736-5.c
  42c3629851528e7ef662078a02487f38  gcc/testsuite/gcc.target/i386/pr81736-6.c
  04da05326d25bbf6b245c4aaab470c26  gcc/testsuite/gcc.target/i386/pr81736-7.c
  c5d91f720ac19a39b21200b7763ea25f  gcc/testsuite/gcc.target/i386/pr81766.c
--- 93506,93512 ----
  bb2d4966606a36afeb42adf77317fc37  gcc/testsuite/gcc.target/i386/pr81736-2.c
  a2ddb4d89c347a11f776d1247c99db5f  gcc/testsuite/gcc.target/i386/pr81736-3.c
  93ae06b858e123a7c00e3611bbcfd689  gcc/testsuite/gcc.target/i386/pr81736-4.c
! 10294f09befc9537141a0e2bd4f7577f  gcc/testsuite/gcc.target/i386/pr81736-5.c
  42c3629851528e7ef662078a02487f38  gcc/testsuite/gcc.target/i386/pr81736-6.c
  04da05326d25bbf6b245c4aaab470c26  gcc/testsuite/gcc.target/i386/pr81736-7.c
  c5d91f720ac19a39b21200b7763ea25f  gcc/testsuite/gcc.target/i386/pr81766.c
*************** c2713286552f07ac4fea6dcb1b12ac3c  gcc/te
*** 93473,93479 ****
  5435d67b61a499c7fee5dceca4d38535  gcc/testsuite/gcc.target/i386/pr84827.c
  b7f2c0b3d382bb72b6dc274a9b8ae5cf  gcc/testsuite/gcc.target/i386/pr84829.c
  c476ce9c85fd2d6635a7b7b3c213a831  gcc/testsuite/gcc.target/i386/pr84844.c
! 0169ebe2c020ca8986468147914a24a8  gcc/testsuite/gcc.target/i386/pr84876.c
  db37ebccda7aeb13b5467c554d55464d  gcc/testsuite/gcc.target/i386/pr84945.c
  6a76981e7d281bb69c2cdfe5148553eb  gcc/testsuite/gcc.target/i386/pr84985.c
  0389ebb77df63b9c8c906303370d50a2  gcc/testsuite/gcc.target/i386/pr84989.c
--- 93627,93633 ----
  5435d67b61a499c7fee5dceca4d38535  gcc/testsuite/gcc.target/i386/pr84827.c
  b7f2c0b3d382bb72b6dc274a9b8ae5cf  gcc/testsuite/gcc.target/i386/pr84829.c
  c476ce9c85fd2d6635a7b7b3c213a831  gcc/testsuite/gcc.target/i386/pr84844.c
! 2c22e1f227f0dc6c7644181fb8415eae  gcc/testsuite/gcc.target/i386/pr84876.c
  db37ebccda7aeb13b5467c554d55464d  gcc/testsuite/gcc.target/i386/pr84945.c
  6a76981e7d281bb69c2cdfe5148553eb  gcc/testsuite/gcc.target/i386/pr84985.c
  0389ebb77df63b9c8c906303370d50a2  gcc/testsuite/gcc.target/i386/pr84989.c
*************** bedac99974c4a13a1a78b62b24233122  gcc/te
*** 93736,93742 ****
  f7e21a56566f8559fcba70f3cda721fe  gcc/testsuite/gcc.target/i386/pr90773-14.c
  0fdb660390b755ba9d18a4a05ed5455a  gcc/testsuite/gcc.target/i386/pr90773-15.c
  9090e0362d7860afaf0aa65b2b0634ed  gcc/testsuite/gcc.target/i386/pr90773-16.c
! c48294add9b28d052daf4ec43673f18f  gcc/testsuite/gcc.target/i386/pr90773-17.c
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
  f80a713960f0646d35d5cd99ddc87102  gcc/testsuite/gcc.target/i386/pr90773-2.c
--- 93890,93896 ----
  f7e21a56566f8559fcba70f3cda721fe  gcc/testsuite/gcc.target/i386/pr90773-14.c
  0fdb660390b755ba9d18a4a05ed5455a  gcc/testsuite/gcc.target/i386/pr90773-15.c
  9090e0362d7860afaf0aa65b2b0634ed  gcc/testsuite/gcc.target/i386/pr90773-16.c
! 05cb3a6a8211005f352d21f87d829a79  gcc/testsuite/gcc.target/i386/pr90773-17.c
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
  f80a713960f0646d35d5cd99ddc87102  gcc/testsuite/gcc.target/i386/pr90773-2.c
*************** acc82a5b459bf1433e5f0d6d4849c00a  gcc/te
*** 93804,93810 ****
  7b2e31351a834503ea31d18b2dbfbe50  gcc/testsuite/gcc.target/i386/pr92080-1.c
  b954f1adefeb2933a8727f030aaad230  gcc/testsuite/gcc.target/i386/pr92080-10.c
  a57fa4dbe9117c322d8074bcbdb6ea8d  gcc/testsuite/gcc.target/i386/pr92080-11.c
! efc3d15d88f41f75da5fd5dafeb0838f  gcc/testsuite/gcc.target/i386/pr92080-12.c
  e1a47196028cf3d7d1da3ad695db60b3  gcc/testsuite/gcc.target/i386/pr92080-13.c
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
--- 93958,93964 ----
  7b2e31351a834503ea31d18b2dbfbe50  gcc/testsuite/gcc.target/i386/pr92080-1.c
  b954f1adefeb2933a8727f030aaad230  gcc/testsuite/gcc.target/i386/pr92080-10.c
  a57fa4dbe9117c322d8074bcbdb6ea8d  gcc/testsuite/gcc.target/i386/pr92080-11.c
! c15f3d63c043a398d0bd3bedb6e9634d  gcc/testsuite/gcc.target/i386/pr92080-12.c
  e1a47196028cf3d7d1da3ad695db60b3  gcc/testsuite/gcc.target/i386/pr92080-13.c
  7c666da60bf0f91a71a0449e0dc05fe9  gcc/testsuite/gcc.target/i386/pr92080-14.c
  be1e0e8eba7c0a6e5b4edccfb5c6ee30  gcc/testsuite/gcc.target/i386/pr92080-15.c
*************** f85582df9bec9b4c497c5bb05affa30b  gcc/te
*** 94163,94169 ****
  39b85791a1f4d96f8f6146862340680f  gcc/testsuite/gcc.target/i386/preserve-none-18.c
  21024146d5998abe9f0de92fd6da0b0f  gcc/testsuite/gcc.target/i386/preserve-none-19.c
  4d774ef666e5d98759b5daea23ae8434  gcc/testsuite/gcc.target/i386/preserve-none-2.c
! d18b3df1e3458bb621e6394d59a53306  gcc/testsuite/gcc.target/i386/preserve-none-20.c
  56306971eee8f608a87c6e88e789d411  gcc/testsuite/gcc.target/i386/preserve-none-21.c
  7fca32d4ccac7b8ffc8719cb67604ae3  gcc/testsuite/gcc.target/i386/preserve-none-22.c
  4ed96f93d209ebe8db42f2b48b53c280  gcc/testsuite/gcc.target/i386/preserve-none-23.c
--- 94317,94323 ----
  39b85791a1f4d96f8f6146862340680f  gcc/testsuite/gcc.target/i386/preserve-none-18.c
  21024146d5998abe9f0de92fd6da0b0f  gcc/testsuite/gcc.target/i386/preserve-none-19.c
  4d774ef666e5d98759b5daea23ae8434  gcc/testsuite/gcc.target/i386/preserve-none-2.c
! 31de812ca4b34d1601fa3160ead0f482  gcc/testsuite/gcc.target/i386/preserve-none-20.c
  56306971eee8f608a87c6e88e789d411  gcc/testsuite/gcc.target/i386/preserve-none-21.c
  7fca32d4ccac7b8ffc8719cb67604ae3  gcc/testsuite/gcc.target/i386/preserve-none-22.c
  4ed96f93d209ebe8db42f2b48b53c280  gcc/testsuite/gcc.target/i386/preserve-none-23.c
*************** bc6b7244a28a5688b5a5c75593461393  gcc/te
*** 94373,94381 ****
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 92eadacc4a4fd15470400eaf85e1bd0b  gcc/testsuite/gcc.target/i386/sse-12.c
! a07ceddb0a52108163df5e6ddeffaf93  gcc/testsuite/gcc.target/i386/sse-13.c
! cc388883c299495f533cd6cecb53a105  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
--- 94527,94535 ----
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! cb6c915a2c678ea9ec941c2920bac21b  gcc/testsuite/gcc.target/i386/sse-12.c
! e090e147be8a2cab46a7766c386f370e  gcc/testsuite/gcc.target/i386/sse-13.c
! b19a7de6b67129cd05c2bca50d107258  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 94384,94392 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 0169b567b362d95e9278ef1323d21808  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! 14fd0f14291c904b2f8835bec5590e76  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  8bb465a190ed3492b3cf000afacb0a9a  gcc/testsuite/gcc.target/i386/sse-26.c
--- 94538,94546 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! ef2854875faea255c502a4e8398245fc  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! ac3da9be45aaad61593b8c3fce651e2b  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  8bb465a190ed3492b3cf000afacb0a9a  gcc/testsuite/gcc.target/i386/sse-26.c
*************** f31713939bdc5209351df9a08b597557  gcc/te
*** 94488,94494 ****
  ad1dd097598261bb606526980c62c78e  gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
  ef24b6bdf3dfec31c6a03f2c1d49b42b  gcc/testsuite/gcc.target/i386/sse2-bfloat16-1.c
  534cad63c699a360c7081b2647c43ab9  gcc/testsuite/gcc.target/i386/sse2-bfloat16-2.c
! 84cd4cec73572972cceb0db29510b927  gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c
  5c043f9abbc3ad9ae973384fd30850c0  gcc/testsuite/gcc.target/i386/sse2-builtin-fp-int-inexact.c
  6658245d9cdd7b084f9f2fa2dcc881f2  gcc/testsuite/gcc.target/i386/sse2-check.h
  12ed5dd15b94275feb351ef37ce96d3d  gcc/testsuite/gcc.target/i386/sse2-cmpsd-1.c
--- 94642,94648 ----
  ad1dd097598261bb606526980c62c78e  gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
  ef24b6bdf3dfec31c6a03f2c1d49b42b  gcc/testsuite/gcc.target/i386/sse2-bfloat16-1.c
  534cad63c699a360c7081b2647c43ab9  gcc/testsuite/gcc.target/i386/sse2-bfloat16-2.c
! 407f8684272d3dd2fb19fde99faba359  gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c
  5c043f9abbc3ad9ae973384fd30850c0  gcc/testsuite/gcc.target/i386/sse2-builtin-fp-int-inexact.c
  6658245d9cdd7b084f9f2fa2dcc881f2  gcc/testsuite/gcc.target/i386/sse2-check.h
  12ed5dd15b94275feb351ef37ce96d3d  gcc/testsuite/gcc.target/i386/sse2-cmpsd-1.c
*************** cf5ce63ad160152c8cf0c9c3d01c5b79  gcc/te
*** 94786,94798 ****
  d83d0f8b342ff8ef187b5267acdf1b9a  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-1a.c
  001bec980378e25765c927def02c9eae  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2.c
  c86c2814d0ff9e3e7807177c93e54cdf  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2a.c
! c3f9e4e1884a10b88f0b0841400ac634  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c
  1de74963e620964fc49c729ef9de0a73  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-2.c
  747d389fb10946466ce7106bf9861c05  gcc/testsuite/gcc.target/i386/sse2-shufpd-1.c
  229da27deb07940e47896f28568a9ad6  gcc/testsuite/gcc.target/i386/sse2-shufps-1.c
  e3c923013c80e125486648e3307d19ca  gcc/testsuite/gcc.target/i386/sse2-sqrtpd-1.c
  7db644ccdd175cb179b38dae92b1ab88  gcc/testsuite/gcc.target/i386/sse2-store-multi.c
! 64142495fd35f30a44b73fe33e81d06a  gcc/testsuite/gcc.target/i386/sse2-stv-1.c
  eb452255da68355f880cada63c730531  gcc/testsuite/gcc.target/i386/sse2-stv-2.c
  81934d79e6df6c7fd43f1e2978ac3281  gcc/testsuite/gcc.target/i386/sse2-stv-3.c
  6da4abc673844a6c4f7943be5a464569  gcc/testsuite/gcc.target/i386/sse2-stv-4.c
--- 94940,94952 ----
  d83d0f8b342ff8ef187b5267acdf1b9a  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-1a.c
  001bec980378e25765c927def02c9eae  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2.c
  c86c2814d0ff9e3e7807177c93e54cdf  gcc/testsuite/gcc.target/i386/sse2-set-v8hi-2a.c
! 90686935d5ebfaceb8c5400ae76d70bd  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c
  1de74963e620964fc49c729ef9de0a73  gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-2.c
  747d389fb10946466ce7106bf9861c05  gcc/testsuite/gcc.target/i386/sse2-shufpd-1.c
  229da27deb07940e47896f28568a9ad6  gcc/testsuite/gcc.target/i386/sse2-shufps-1.c
  e3c923013c80e125486648e3307d19ca  gcc/testsuite/gcc.target/i386/sse2-sqrtpd-1.c
  7db644ccdd175cb179b38dae92b1ab88  gcc/testsuite/gcc.target/i386/sse2-store-multi.c
! eccc380f8c7e7ef11e5eed3c3b96ef91  gcc/testsuite/gcc.target/i386/sse2-stv-1.c
  eb452255da68355f880cada63c730531  gcc/testsuite/gcc.target/i386/sse2-stv-2.c
  81934d79e6df6c7fd43f1e2978ac3281  gcc/testsuite/gcc.target/i386/sse2-stv-3.c
  6da4abc673844a6c4f7943be5a464569  gcc/testsuite/gcc.target/i386/sse2-stv-4.c
*************** be3365966668001dda567754312a4f5e  gcc/te
*** 95160,95166 ****
  0109d1a4e225b3755673fbaf77ba3cec  gcc/testsuite/gcc.target/i386/uintr-1.c
  911a93d36744ba5b1de2b7c736d39ad7  gcc/testsuite/gcc.target/i386/uintr-2.c
  208db11f3088f797e0d34eef91005d8f  gcc/testsuite/gcc.target/i386/uintr-3.c
! aa8882f65b02471cd35761336907d3b6  gcc/testsuite/gcc.target/i386/uintr-4.c
  c574722a02bcb4448aa068b358b0d3ce  gcc/testsuite/gcc.target/i386/uintr-5.c
  3df1f9aef42723bbbd0f795be1e64913  gcc/testsuite/gcc.target/i386/umod-1.c
  80c6ab83e85c9918b290e01c4d8514c5  gcc/testsuite/gcc.target/i386/umod-2.c
--- 95314,95320 ----
  0109d1a4e225b3755673fbaf77ba3cec  gcc/testsuite/gcc.target/i386/uintr-1.c
  911a93d36744ba5b1de2b7c736d39ad7  gcc/testsuite/gcc.target/i386/uintr-2.c
  208db11f3088f797e0d34eef91005d8f  gcc/testsuite/gcc.target/i386/uintr-3.c
! 4bc9cafa1253b6dfcf1da7b1e6f0bb65  gcc/testsuite/gcc.target/i386/uintr-4.c
  c574722a02bcb4448aa068b358b0d3ce  gcc/testsuite/gcc.target/i386/uintr-5.c
  3df1f9aef42723bbbd0f795be1e64913  gcc/testsuite/gcc.target/i386/umod-1.c
  80c6ab83e85c9918b290e01c4d8514c5  gcc/testsuite/gcc.target/i386/umod-2.c
*************** dcf09c8d7eb01e0e8a5e8cefaf164498  gcc/te
*** 95217,95224 ****
  64e947d6f5fbfaeeb886d49aec0a5ea0  gcc/testsuite/gcc.target/i386/vect-bfloat16-2a.c
  01d0fca7e57424d984e9526aa969af2e  gcc/testsuite/gcc.target/i386/vect-bfloat16-2b.c
  eda0d442fd95aa4f91e9f15d67b2a009  gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c
! ef5c459cb91849c88697aa740366def5  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c
! c6de9db89c9a84b86bc9e22583bbe1da  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c
  ba85333fb178da98ba30d0c3d66f7655  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-128.c
  ab69d9bbd51cf998202e39a5a3e247fa  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-256.c
  0e1652680d35183ac540c92e1d5e4771  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-run.c
--- 95371,95378 ----
  64e947d6f5fbfaeeb886d49aec0a5ea0  gcc/testsuite/gcc.target/i386/vect-bfloat16-2a.c
  01d0fca7e57424d984e9526aa969af2e  gcc/testsuite/gcc.target/i386/vect-bfloat16-2b.c
  eda0d442fd95aa4f91e9f15d67b2a009  gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c
! 48ff300ff4e54206753b129349889236  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c
! 52ce113a7b9c2ef061938e987a9793f7  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c
  ba85333fb178da98ba30d0c3d66f7655  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-128.c
  ab69d9bbd51cf998202e39a5a3e247fa  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-256.c
  0e1652680d35183ac540c92e1d5e4771  gcc/testsuite/gcc.target/i386/vect-cbranch-cond-all-run.c
*************** a04043a4ea34632928d0e9f94e464533  gcc/te
*** 95289,95297 ****
  0f9fc194c0bd731306645fe06259feae  gcc/testsuite/gcc.target/i386/vect-reduc-2.c
  a4dbe83161bc5daddec5db7f5327c277  gcc/testsuite/gcc.target/i386/vect-shift-1.c
  a82a9d393bb05c8976c4e48d693bd432  gcc/testsuite/gcc.target/i386/vect-shiftv4qi-2.c
! 70ce09136c23f60572b9e937e5bdcdcb  gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c
  100510265df3e2a89528c0ac304256ad  gcc/testsuite/gcc.target/i386/vect-shiftv8qi-2.c
! a07d241b6e589c70ab350c7f9a3cd2f4  gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c
  de36035a6b74d9e9cabfaa8cfb15f288  gcc/testsuite/gcc.target/i386/vect-signbitf.c
  b0da24fa88b08163c773260811462548  gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-1.c
  0d27c648c7c20454c90cb0a7a80ec0e0  gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-2.c
--- 95443,95451 ----
  0f9fc194c0bd731306645fe06259feae  gcc/testsuite/gcc.target/i386/vect-reduc-2.c
  a4dbe83161bc5daddec5db7f5327c277  gcc/testsuite/gcc.target/i386/vect-shift-1.c
  a82a9d393bb05c8976c4e48d693bd432  gcc/testsuite/gcc.target/i386/vect-shiftv4qi-2.c
! be898344883f26dc9637ed7a569cbc6a  gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c
  100510265df3e2a89528c0ac304256ad  gcc/testsuite/gcc.target/i386/vect-shiftv8qi-2.c
! c7942aafab028d218490c97a58ada83f  gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c
  de36035a6b74d9e9cabfaa8cfb15f288  gcc/testsuite/gcc.target/i386/vect-signbitf.c
  b0da24fa88b08163c773260811462548  gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-1.c
  0d27c648c7c20454c90cb0a7a80ec0e0  gcc/testsuite/gcc.target/i386/vect-simd-clone-avx512-2.c
*************** e9a9132d4e7f667ada39367199aa16c9  gcc/te
*** 95374,95379 ****
--- 95528,95534 ----
  66d1d77278077916978319dc1f32ebb7  gcc/testsuite/gcc.target/i386/warn-vect-op-3.c
  732431c1122c6fec401dab5065f048c2  gcc/testsuite/gcc.target/i386/wbinvd-1.c
  efca2d14ddeeb4b9d4b258a40c5017ef  gcc/testsuite/gcc.target/i386/wbnoinvd-1.c
+ 00258640b4fcb323d0ec8cbcf2f600a4  gcc/testsuite/gcc.target/i386/widen_mult_high_chain.c
  a2033299875112ec8a8d46645cf7d9b0  gcc/testsuite/gcc.target/i386/wmul-1.c
  4ad4e72fa1607f98dfaf4b54d6bb5d32  gcc/testsuite/gcc.target/i386/wmul-2.c
  27ad6112330741456181c2be05f60c1f  gcc/testsuite/gcc.target/i386/wmul-3.c
*************** b8afe26f29e3d32ac95aaa33621d54b8  gcc/te
*** 95421,95427 ****
  a390d40d8a1affb5cd5f9f3db7a982e8  gcc/testsuite/gcc.target/i386/xop-mul-1.c
  e958cd4a15db13f7f9d756d8e597850e  gcc/testsuite/gcc.target/i386/xop-pcmov.c
  9ff4b82a962aeea51c95bf02f6bf7581  gcc/testsuite/gcc.target/i386/xop-pcmov2.c
! 74886747227d39a6a7a490ca16c59e3d  gcc/testsuite/gcc.target/i386/xop-pcmov3.c
  5e5a8a68487e65740060a961941c5426  gcc/testsuite/gcc.target/i386/xop-pr57233.c
  2ab60c120001ef1c9c38bbff7a7468e7  gcc/testsuite/gcc.target/i386/xop-rotate1-int.c
  3255a31882fe4b3adff94b9f17877355  gcc/testsuite/gcc.target/i386/xop-rotate1-vector.c
--- 95576,95582 ----
  a390d40d8a1affb5cd5f9f3db7a982e8  gcc/testsuite/gcc.target/i386/xop-mul-1.c
  e958cd4a15db13f7f9d756d8e597850e  gcc/testsuite/gcc.target/i386/xop-pcmov.c
  9ff4b82a962aeea51c95bf02f6bf7581  gcc/testsuite/gcc.target/i386/xop-pcmov2.c
! 74baed28446aeddcc224f60cda926130  gcc/testsuite/gcc.target/i386/xop-pcmov3.c
  5e5a8a68487e65740060a961941c5426  gcc/testsuite/gcc.target/i386/xop-pr57233.c
  2ab60c120001ef1c9c38bbff7a7468e7  gcc/testsuite/gcc.target/i386/xop-rotate1-int.c
  3255a31882fe4b3adff94b9f17877355  gcc/testsuite/gcc.target/i386/xop-rotate1-vector.c
*************** b56152b8f2b24e237460063de6afdb2a  gcc/te
*** 95438,95444 ****
  8a48cca4e7806f3968b7d0c67cb9cbdd  gcc/testsuite/gcc.target/i386/xop-vshift-1.c
  b81eec3020bfc4b0c6d961dd7dfc73b5  gcc/testsuite/gcc.target/i386/xop-vshift-2.c
  9d85993ff88724a6ede2b74bc9d3044a  gcc/testsuite/gcc.target/i386/xorps-sse.c
! 5e35df83dc304085add881ffa9591299  gcc/testsuite/gcc.target/i386/xorps-sse2.c
  823144da31d940721b1596844506366d  gcc/testsuite/gcc.target/i386/xorps.c
  f7e982f19bf360c6735d5fbd85f29e0c  gcc/testsuite/gcc.target/i386/xorsign-avx.c
  6a2cde4952e95c9d572f47df40d64bb7  gcc/testsuite/gcc.target/i386/xorsign.c
--- 95593,95599 ----
  8a48cca4e7806f3968b7d0c67cb9cbdd  gcc/testsuite/gcc.target/i386/xop-vshift-1.c
  b81eec3020bfc4b0c6d961dd7dfc73b5  gcc/testsuite/gcc.target/i386/xop-vshift-2.c
  9d85993ff88724a6ede2b74bc9d3044a  gcc/testsuite/gcc.target/i386/xorps-sse.c
! a32fdd45acae60c160905f542f10abad  gcc/testsuite/gcc.target/i386/xorps-sse2.c
  823144da31d940721b1596844506366d  gcc/testsuite/gcc.target/i386/xorps.c
  f7e982f19bf360c6735d5fbd85f29e0c  gcc/testsuite/gcc.target/i386/xorsign-avx.c
  6a2cde4952e95c9d572f47df40d64bb7  gcc/testsuite/gcc.target/i386/xorsign.c
*************** a7c92b064cd3dfa35552d030d9c88443  gcc/te
*** 95475,95483 ****
  ec39e4f7e99d99e583f0ad35694883c0  gcc/testsuite/gcc.target/i386/zero-scratch-regs-26.c
  21aad5fd641b7c2182d6f16bfb2693e1  gcc/testsuite/gcc.target/i386/zero-scratch-regs-27.c
  df0dc23a33eb491ee7e7877623b71191  gcc/testsuite/gcc.target/i386/zero-scratch-regs-28.c
! a0db901c2d58c6ec7373c71e5e9f5f96  gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c
  7b29158ed7c8cc9b7feb32c04249959b  gcc/testsuite/gcc.target/i386/zero-scratch-regs-3.c
! bc37db967928436168b8c1061133369a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c
  436c4c4db448d2a78bd0a4ff74e64d3a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-31.c
  66378b9cfd36021151804e3b9acaa10c  gcc/testsuite/gcc.target/i386/zero-scratch-regs-32.c
  a802b4b3fcbb11b953e3a919e483099b  gcc/testsuite/gcc.target/i386/zero-scratch-regs-33.c
--- 95630,95638 ----
  ec39e4f7e99d99e583f0ad35694883c0  gcc/testsuite/gcc.target/i386/zero-scratch-regs-26.c
  21aad5fd641b7c2182d6f16bfb2693e1  gcc/testsuite/gcc.target/i386/zero-scratch-regs-27.c
  df0dc23a33eb491ee7e7877623b71191  gcc/testsuite/gcc.target/i386/zero-scratch-regs-28.c
! 038389ea08c1f4f0834bd7fce15854b6  gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c
  7b29158ed7c8cc9b7feb32c04249959b  gcc/testsuite/gcc.target/i386/zero-scratch-regs-3.c
! fdddfdfa49526660a5a7e021afd22a09  gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c
  436c4c4db448d2a78bd0a4ff74e64d3a  gcc/testsuite/gcc.target/i386/zero-scratch-regs-31.c
  66378b9cfd36021151804e3b9acaa10c  gcc/testsuite/gcc.target/i386/zero-scratch-regs-32.c
  a802b4b3fcbb11b953e3a919e483099b  gcc/testsuite/gcc.target/i386/zero-scratch-regs-33.c
*************** c7831e9890b75b07100c51fa065b3eb9  gcc/te
*** 100433,100438 ****
--- 100588,100594 ----
  c70bca20c7bd6aa021b2e89d48d2d2ce  gcc/testsuite/gcc.target/riscv/amo/amo.exp
  f69496eb552c7db7b1b5e628014d4927  gcc/testsuite/gcc.target/riscv/amo/big-endian-subword-amo-hi.c
  2be9e68bcabc0f743c05cc7732103d6a  gcc/testsuite/gcc.target/riscv/amo/big-endian-subword-amo-qi.c
+ 2f8e11ee80a41617f3d5ce01005ac724  gcc/testsuite/gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c
  9cfa276fc7d939150c8c384d7c10667b  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-1.c
  7f3e1b2a559ce8cef571d2a40d2dfcee  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-2.c
  aeea4287f00bf622bcedbf5a392818f6  gcc/testsuite/gcc.target/riscv/amo/inline-atomics-3.c
*************** f3e95dfef6fe130ad0cd7293e1f9301e  gcc/te
*** 100646,100651 ****
--- 100802,100808 ----
  de4aad186db1699e7a1c579eacca24f8  gcc/testsuite/gcc.target/riscv/attribute-zce-2.c
  317a36045c038af971baf417e032ee47  gcc/testsuite/gcc.target/riscv/attribute-zce-3.c
  0e193122ac4c7b12a1de8876dc48ff1e  gcc/testsuite/gcc.target/riscv/attribute-zce-4.c
+ 7ca73ad34920b8eef6f7f013156550a3  gcc/testsuite/gcc.target/riscv/autopref-xt-c9501fdvt.c
  3df27341bf15cae561a9680429bae764  gcc/testsuite/gcc.target/riscv/bclr-for-simode-1.c
  40eb658c86c8f9d61968188b246610a2  gcc/testsuite/gcc.target/riscv/bclr-lowest-set-bit-1.c
  dafbb9f1e1691d3d70f62ae5201b1965  gcc/testsuite/gcc.target/riscv/bext-ext-2.c
*************** e1c388f985f3b0308061fc504e4ff9c8  gcc/te
*** 100740,100745 ****
--- 100897,100903 ----
  ce38011c6154f93d71861589c50fc10a  gcc/testsuite/gcc.target/riscv/crc-builtin-zbc64.c
  5f07e02d11c4a9130b1387e99550a549  gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbc.c
  10cc4e358ab236d54d2f63b8c3e18498  gcc/testsuite/gcc.target/riscv/crc-coremark-16bitdata-zbkc.c
+ 80e7154ca51f557b4c1fcb3fe1ce2979  gcc/testsuite/gcc.target/riscv/crc-size-no-table.c
  53287659715081b9f3d80da7841cf513  gcc/testsuite/gcc.target/riscv/cset-sext-rtl.c
  a7d65fd143ca909973c946ae01e9dd76  gcc/testsuite/gcc.target/riscv/cset-sext-rtl32.c
  6d625a6d88d6da5c54d8cb6af2d21d39  gcc/testsuite/gcc.target/riscv/cset-sext-sfb-rtl.c
*************** f780cb1be54aedb9fe11df82907cd8cf  gcc/te
*** 100996,101002 ****
  55f4f2922e6ec98706e53701a92f2aa7  gcc/testsuite/gcc.target/riscv/fusion-auipc-addi.c
  39a40770f3b1c8e53902ab4f11a82ead  gcc/testsuite/gcc.target/riscv/fusion-auipc-ld.c
  3335f6f388c4ed5627aa383a61eb5539  gcc/testsuite/gcc.target/riscv/fusion-b-alui.c
- b246af1f4f582f73d33717787d7f1ba7  gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c
  0b7a665736c61c595acd0c0eca1c927c  gcc/testsuite/gcc.target/riscv/fusion-ldindexed.c
  5931f780670a78ee4c6e5c56a6637b87  gcc/testsuite/gcc.target/riscv/fusion-lui-addi-2.c
  077130f7046cbf955f599d4c8b29972e  gcc/testsuite/gcc.target/riscv/fusion-lui-addi.c
--- 101154,101159 ----
*************** b922a4195a74b66838f4ea3b9f49a130  gcc/te
*** 101543,101548 ****
--- 101700,101706 ----
  84440e6869fd8d7ff533f548e7a852e5  gcc/testsuite/gcc.target/riscv/pr125731.c
  dcac463122d6cdedd0454d3f10ae3f75  gcc/testsuite/gcc.target/riscv/pr126426.c
  b32a61ecd0ea56926c06a9937a9d29d5  gcc/testsuite/gcc.target/riscv/pr126454.c
+ 252d3c47c362a972b6a12e6e37d25b40  gcc/testsuite/gcc.target/riscv/pr126873.c
  37a08389ba95284cc27832767dfc1430  gcc/testsuite/gcc.target/riscv/pr43644.c
  8eba488c3d26a288644785954ea86af2  gcc/testsuite/gcc.target/riscv/pr52345.c
  f035fac0dc9b5f42ec0a469a8391163c  gcc/testsuite/gcc.target/riscv/pr56096.c
*************** d90ca4ab32f893e58362b7afbe85e6fd  gcc/te
*** 102229,102235 ****
  edd0a4ba6a9489214ca39d04c6a65fdc  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c
  107743a69f58f28cf14e8a598bd333e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-1.c
  c1274e3ee15699a124ca1ff4e24fd55b  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-2.c
! 325cf4e0e645378ab3f59f1e5e5469db  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
  744e1d9bf456f63d1459b76959635e65  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m1.c
  2edd9f50633fb2bb265afe189912b331  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m2.c
  15f1fc409628c7f79c90d0634d242e01  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m4.c
--- 102387,102393 ----
  edd0a4ba6a9489214ca39d04c6a65fdc  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store-2.c
  107743a69f58f28cf14e8a598bd333e7  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-1.c
  c1274e3ee15699a124ca1ff4e24fd55b  gcc/testsuite/gcc.target/riscv/rvv/autovec/gather-scatter/strided_store_run-2.c
! 7148ee8088200dd6254954fa78a6dbfd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
  744e1d9bf456f63d1459b76959635e65  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m1.c
  2edd9f50633fb2bb265afe189912b331  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m2.c
  15f1fc409628c7f79c90d0634d242e01  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vfwcvt_f-f16-m4.c
*************** b2887a4eb0c5eba476b631a06c8c8982  gcc/te
*** 102348,102353 ****
--- 102506,102526 ----
  faaf31454bf2ad2d21d6d877592d83d9  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf2.c
  adc3d0afac0ca08c1ff72856c0101050  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf4.c
  4386cd42af643364bdc153a8e986367b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vv-i8-mf8.c
+ 278471c24958aec6c8e39cf702b1b3f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m1.c
+ 223f438bdc7714162c88ce4f109faaed  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m2.c
+ 284b04dc6020b094a078db50a20e062e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m4.c
+ 85b7ee88d73a3cf87b7d7c300d789f1c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf2.c
+ 41617121615dc14f2fdd4381bc2bcdb4  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf4.c
+ 1826ceb68023ab71e3dbe8b3a58cdbd9  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m1.c
+ 134a09a8ec0159a1fa6dd24344d4c17b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m2.c
+ 2ea09fb2d3ab63819d5ba2867378126d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m4.c
+ 52e301e09d5a5ca713980753a251330f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-mf2.c
+ 33cd454512ab48c21aac23a6b8994034  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m1.c
+ aeba9fc7d401e64788d72e1e0ef18f78  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m2.c
+ f7770263c470dcf54ebeb0844943d208  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m4.c
+ e597f7b9541a60dd2f73a945da69abc1  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf2.c
+ bb60397d0e7f1fe0a2d7151283784202  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf4.c
+ 371fc82e78b7c6b6c62952b81ac6c754  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf8.c
  dc014dea1b501d459b153c3d48676f48  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m1.c
  5ebdea99923567ebf76c4626ceae2d73  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m2.c
  5c1c2db95e077b1ba1e72c35229da85a  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_wv-i16-m4.c
*************** cbcc47c7bf7a10724ab99d0e7fcc382a  gcc/te
*** 102378,102383 ****
--- 102551,102571 ----
  f977cf47cd4b0baca532e06fdfebbf27  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf2.c
  b65cac1be0dd226227dd9408638ba540  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf4.c
  eecce353a8a25c0b68b996b7d0814839  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vv-u8-mf8.c
+ d05b035dfebe50002a37363c9446f3a7  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m1.c
+ b6e119fff08fae283d2c72697601ca82  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m2.c
+ bb6789ecbfb3b33649268067f89e9821  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m4.c
+ 4721e233249e2bbb2c3f9050826accb1  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf2.c
+ 8c72b0488ab6efeb76a5a7cdc350cf82  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf4.c
+ ce81432d3b48cfac3180e311ea6be0af  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m1.c
+ 417994f23dfefa1c4572e98ae4686c95  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m2.c
+ 4f0e6a869751126ddcb1b02a6742d81e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m4.c
+ 09071542382194596b8b3385d94c577c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-mf2.c
+ e3e5fe9371d27de16f85b331d891216b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m1.c
+ 6f9456281fd61c1d0238854dbfccd83d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m2.c
+ 40227e048d06c9a11db26addcb9cd84c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m4.c
+ bf190fd5ad3723f7eabfde2eda4229f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf2.c
+ 3d5f8172b9b5b8cff79964bd1c58a010  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf4.c
+ bcb8117212e7164888070d57d4385b3c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf8.c
  df0b2f7ea477d2d4ac1e0b2c7bdaf0cd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m1.c
  dfe157e0c52775e30fc2427066b4c07c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m2.c
  8c7261d38fc20193f108713121028580  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_wv-u16-m4.c
*************** c1c95f8d765fe7164844664c83716c7e  gcc/te
*** 102438,102443 ****
--- 102626,102646 ----
  486ebca72941b6e8e33009b4f5534912  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmacc_vv-i8-mf2.c
  b46a5c8e35a40e7a86435ba28e987f91  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmacc_vv-i8-mf4.c
  13fe020091e83be4523007df549e0b76  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmacc_vv-i8-mf8.c
+ a72302619429f9faa686f08e764a054d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c
+ 618e22ee33b31d6a1e2e74f3450c2de5  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c
+ 9d3773e1747e7e79699bc13b645fd401  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c
+ e9318536793109af9d5065244fa2cd3f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c
+ 3d5c4e7ddc17ddef8218424c051ab791  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c
+ b51e732fcbd2cf259bbdead9ae4fa414  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c
+ bfdca89811119fa5774bda83bcd775cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c
+ e7645f192df750adbe8cc57e77608d86  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c
+ 88ebd6716c7021038eebbecda0ea8fc1  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c
+ 5e1e3165abb74e4ddcb66625104c16eb  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c
+ c09e49d79e7ab9ec7f2d458b003e6c63  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c
+ a52f077054aa904a52dc936e9b457a4e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c
+ 27aadfbf748e5102098e981cc4fe117e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c
+ aba93f6d01bdf289031dfa39663b5675  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c
+ 53674787472e3078dabc9d942beb0546  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c
  f89522857a1aa5a17311f991fdae7a04  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccu_vv-u16-m1.c
  98a58be19fa093c8ca955b9b043fe5ad  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccu_vv-u16-m2.c
  9db6bebcea3852e45e899db12cfe2d78  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccu_vv-u16-m4.c
*************** f8d278c0fa98e7d280ad146c4932802b  gcc/te
*** 102468,102473 ****
--- 102671,102691 ----
  32206d1554f8597dc92deed09dec31a7  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vv-i8-mf2.c
  df44d44bcf9e1bb7b6d7646bc2426f09  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vv-i8-mf4.c
  c11b47f888ee948261c2e8ef7b0576dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vv-i8-mf8.c
+ 2ac7265c7c32169d496f4db2f12f2f87  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m1.c
+ b14f6453e15cec770948408c41d5affb  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m2.c
+ 1c494d90b72dda2e6125d9400d140eb4  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m4.c
+ 0ff5675f4141d1e3c0bcc48719bee357  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf2.c
+ d8658afb97d1555247d5ce00d34faa36  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf4.c
+ eb035e865a72832aa858e2b072c21f7e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m1.c
+ 77600c7366c17259bddd51eeb949085c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m2.c
+ db9c50c8e35e1ed4647ae23cc7e4f2bd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m4.c
+ 8ac6739bf4795532579c240fe2fc956d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-mf2.c
+ 837420c122b819f340262ac7a7ab7942  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m1.c
+ c873e2a24010cc458312e6db536858a3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m2.c
+ 5c25a7431dcab3615831a0216916fed3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m4.c
+ 93c5ed02f63a6c10ad80e942a484c928  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf2.c
+ 39b23e2b946d773c20e913ff56fb6d20  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf4.c
+ 9f8ac578037c52ac265065f9e6c788cc  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf8.c
  57541e57f595343854adfc7c32d1c4b7  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulsu_vv-i16-m1.c
  336cff587566b178497346fe1c887b6e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulsu_vv-i16-m2.c
  b14ef8fb2d7fdd047285c9dbc157618f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulsu_vv-i16-m4.c
*************** ece1fe7b900bb623c956f83f29294f0e  gcc/te
*** 102498,102503 ****
--- 102716,102736 ----
  423b604a10013e94e512a6b7780ca13a  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vv-u8-mf2.c
  d9c156d761672b1fa6e7b858be0cb13d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vv-u8-mf4.c
  45b00cbaa18b57dcae4686d556d0b4e3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vv-u8-mf8.c
+ 067858177b16808d6072f4f78d934a22  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m1.c
+ 700ac38fa7d9a114cb9863223d06c5f5  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m2.c
+ 36d0d0fbec74b2ef9284ed5395456282  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m4.c
+ 2d48c6710d63e9a5fc1a53b48cfad3ec  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf2.c
+ 14f549af198c40d77350bb2de6ea5003  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf4.c
+ 24bc86bcc0b05102a2f3c0c9cf7ac056  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m1.c
+ 5c0fecb108a1e696fbbf309aff141d42  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m2.c
+ 6b6cbb4577cf0895b054fc14bc67bb9c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m4.c
+ a14319057946b544dfb37a59b0e2113d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-mf2.c
+ e9772649db4e853337d25f3c234df414  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m1.c
+ 77b03b1e247e829dc556c6349551b52b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m2.c
+ fb07906b0e1390b220153d2b6bb05be1  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m4.c
+ e8a86beaec22ddb7e64e3ab39073bc8d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf2.c
+ 30d907f34fb6e19572808d23b02db717  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf4.c
+ a4d690a8e428c2bc91edcc70f5c8cb6c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf8.c
  de0f3971456fed01194ef4ca3b05d08d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i16-m1.c
  4b3e23faacc1794794d27fda92192516  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i16-m2.c
  78267e5fbd8ae8e32e9175108b8d3646  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i16-m4.c
*************** ea1aa2bbba340093a076e07219f85d78  gcc/te
*** 102513,102518 ****
--- 102746,102766 ----
  014d28fd2780daa72c664d6fc7e0d975  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i8-mf2.c
  1ba12e035fb9c3c81e7b5dfd5f1ecb04  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i8-mf4.c
  f534a78bbd32b65ce28f69c925982849  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vv-i8-mf8.c
+ 611f2bfd877061c29bb5374b9ff11f60  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m1.c
+ ea40595d447f0a4f682519a4fdfeb9ab  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m2.c
+ 9ed7a506f1aec17290b601d6cac03904  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m4.c
+ 716c67a059c9ae6565006533c4185d50  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf2.c
+ 9b61fa30eec30620f2440a481d4ac41f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf4.c
+ 0561e00de6261ffbcbadf11cd07f969c  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m1.c
+ cbda527b283849970cd02ff1e287687b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m2.c
+ 2e7fdc3eca1af531111f1c82cccbf851  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m4.c
+ 204f6458ae05574d03292e8638b122dd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-mf2.c
+ 376469b3ddb0128d5a9e82c1063c5cd3  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m1.c
+ b9eb1c98341057151fbab92a3f753a7a  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m2.c
+ feb8ccb3ff83dafda17028e2b2a185e5  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m4.c
+ 09523495e013b4a86384c03eb36428c2  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf2.c
+ e67fdbd90f40135b67a38a2dcee2f57f  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf4.c
+ 236da344c04f61c3c9ae5cfdcb1aa7c0  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf8.c
  339851984f6ec6fefa5d51aa6d0a5362  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m1.c
  6584cb8a39d204ea54f6d578f267525b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m2.c
  db90e33def1699f49f982eb585e252f5  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_wv-i16-m4.c
*************** d29c403b600f6a7b030eb89b5bc3f894  gcc/te
*** 102543,102548 ****
--- 102791,102811 ----
  368e618a5489f3fd5607138e28dd9056  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vv-u8-mf2.c
  0cd961828f205d89dd67b49d90fa0544  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vv-u8-mf4.c
  c5d2575fb9fd893bbd73aca1b34bd7bd  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vv-u8-mf8.c
+ 3873c20ca40e5bffb57900310f8ad071  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m1.c
+ 0c53b0e216a873c70a45047d9e729857  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m2.c
+ 606e968db05ca5365a5f00adf1a2df20  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m4.c
+ f972bba7d616f4696b95830ad6ad9b20  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf2.c
+ 66a35d873861f64d21f44e4c87bd9495  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf4.c
+ e42497a1ecfbf3755444612ab2e5a179  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m1.c
+ 46f2229051e57867fc0ca7c699d9dc56  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m2.c
+ e15667986c9cf8368eb6138c99de28db  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m4.c
+ 13b2802e8052f0e7d700fa8b6311c679  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-mf2.c
+ 3ee42bae058cfe0367802caccc6e2221  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m1.c
+ cfdac6a4c4b1f7c9df6a40f2eaee1b9e  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m2.c
+ 95b510f5d64aff8e88642c89c0797598  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m4.c
+ 625d7db57efebdd7820e0a19ffde424b  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf2.c
+ db7ee93c3717a7ac1969725378e1f22d  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf4.c
+ 61bf78be0d9a3d4b12ceb1a52553ff40  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf8.c
  dbb089583923564f923f4b416b627741  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m1.c
  aeb9d70e45b4fb595237e130baf00205  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m2.c
  0d2f663c53d6fac29050efe30312f299  gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_wv-u16-m4.c
*************** bc6b132c9cf59831631a5c52bb926867  gcc/te
*** 102720,102726 ****
  a416d6914c1fa1c63fb0ecfdc563031d  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114200.c
  aa7a899cbf47b134ff11f8a14258f5b8  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114202.c
  ffef069d9bd050c4b8acaedcaa19bfbe  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114668.c
! 5e75fc6ae813fde66888597b1fe4999c  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c
  7d7fbc7ca455506db45517a59aba67a4  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114749.c
  5a9ce9e632efc48f5b447f654f5486ab  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr115336.c
  3056ad0471f586b864727a718c0940e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr115495.c
--- 102983,102989 ----
  a416d6914c1fa1c63fb0ecfdc563031d  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114200.c
  aa7a899cbf47b134ff11f8a14258f5b8  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114202.c
  ffef069d9bd050c4b8acaedcaa19bfbe  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114668.c
! b2b8536387d79de12bc6baa87c2fcaca  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c
  7d7fbc7ca455506db45517a59aba67a4  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114749.c
  5a9ce9e632efc48f5b447f654f5486ab  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr115336.c
  3056ad0471f586b864727a718c0940e1  gcc/testsuite/gcc.target/riscv/rvv/autovec/pr115495.c
*************** ef5d162de2581d4ca808b2873f2c688a  gcc/te
*** 102906,102919 ****
  d6c2ed62415b103a595510537c9a7212  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s32.c
  3a44a9eb690d1e1fbcc1c4f53163fc3b  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s64.c
  569afef6ee4e09dce52119a188cdd893  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s8.c
! 38537d65661bed842c44357c9c965887  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c
! d513c56394780935d4f82cb46f67252a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c
! be376cbd29af2d6d7880ccd00826991a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c
! c4d7a19bb30ab2d5fe2061b69c65a651  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c
! 8e3a81195e7c600ac22e95e624d6f991  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c
! 3da4c0448fe5b26dc3cfd758b6731ebd  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c
! 14884b8ca8c25c6741e50289c1823ff8  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c
! ac57164553b34bc9edff289fe4a28850  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c
  3410edd723bca88421e6d7c2176010a6  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s16.c
  ea49894be962b4877a2603417cd5b679  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s32.c
  71ecac5f2be616656dee724e508df81a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s64.c
--- 103169,103182 ----
  d6c2ed62415b103a595510537c9a7212  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s32.c
  3a44a9eb690d1e1fbcc1c4f53163fc3b  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s64.c
  569afef6ee4e09dce52119a188cdd893  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-2-s8.c
! 73efa3e672617247fbde994ca85e3d96  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c
! d7153e4bb7c9b6b1aa593a6b6db7187b  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c
! 8a667572e4d6c008f9dbf5490239d0a7  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c
! d6978c87fe310906c5861aa116490983  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c
! 10dff983758a43d807f96f3f6163764a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c
! 96e8c8f80bc95a57687138dc87c1b44c  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c
! 6e059b905dfeebf12a5a418dc739da29  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c
! e7c15f92019a0b6d2a4724f849242e8f  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c
  3410edd723bca88421e6d7c2176010a6  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s16.c
  ea49894be962b4877a2603417cd5b679  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s32.c
  71ecac5f2be616656dee724e508df81a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-1-s64.c
*************** a34d327beaf5542af2a60e0b64d39717  gcc/te
*** 102930,102939 ****
  4a009684e0cc39abbff50cf131a371ea  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s32.c
  0f467946252321315e38669390d30663  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s64.c
  e50dd7b73fefb92d60509ad72f08709c  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s8.c
! 7b538b48e46bffcc2fd7200c7e87420a  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c
! 52ca0e1a1bb7537a87c1d39cf9e94146  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c
! a0aff92bf1905e8d3c6ba4337e4c888e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c
! 5209b588a556fc5310e4e14bd59fdf17  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c
  f63c9b288c71e4c8138b29b277430432  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i16.c
  224a5418c643ff57e5208e14f51ce9f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i32.c
  c9484920bdef7ef029e3c5651c27a5fe  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i64.c
--- 103193,103202 ----
  4a009684e0cc39abbff50cf131a371ea  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s32.c
  0f467946252321315e38669390d30663  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s64.c
  e50dd7b73fefb92d60509ad72f08709c  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-run-4-s8.c
! 0486e8a073ce7bbf3b354e086a19807e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c
! f905109f0675935cd5c7bf8cc9de7d6f  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c
! 6e8fc8b222030b8ad5c0b9ccd72917f0  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c
! 1723ea1ec101d927cd6e5cbec162e749  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c
  f63c9b288c71e4c8138b29b277430432  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i16.c
  224a5418c643ff57e5208e14f51ce9f4  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i32.c
  c9484920bdef7ef029e3c5651c27a5fe  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-run-1-i64.c
*************** b3623744beb4280e52fad318705b4610  gcc/te
*** 103322,103328 ****
  95310899ac17575420553ab9eb737108  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_imm-run-4-u8.c
  21b34458f735729383e5d5cf8ec45718  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u16.c
  564271f5cf181c68a64fafe02d00c15e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u32.c
! 6bb344b349801093203dc47415617279  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c
  1d1189d58bf415555e2ecfea30217a85  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u16.c
  2c289d5ac69c48a17f4c5a53766ddb24  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u32.c
  f0786b4f9a93c9157cba05550f7e0d1f  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u8.c
--- 103585,103591 ----
  95310899ac17575420553ab9eb737108  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_imm-run-4-u8.c
  21b34458f735729383e5d5cf8ec45718  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u16.c
  564271f5cf181c68a64fafe02d00c15e  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u32.c
! e0c60df41cea73e20d3a71793a425965  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c
  1d1189d58bf415555e2ecfea30217a85  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u16.c
  2c289d5ac69c48a17f4c5a53766ddb24  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u32.c
  f0786b4f9a93c9157cba05550f7e0d1f  gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-run-1-u8.c
*************** f8d68eda8e75610f3abd8282856cc66e  gcc/te
*** 105080,105179 ****
  acb83c56941b40cd27490db738df6ef7  gcc/testsuite/gcc.target/riscv/rvv/base/fixed-point-vxrm-error.c
  cf53a9b2eaefe23a823c5ce97b46657c  gcc/testsuite/gcc.target/riscv/rvv/base/fixed-point-vxrm.c
  e1d7b8138b6a29516a84045b46d40610  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cmp-eqne.c
! 9fbf50a6082336831995df0ec679aa31  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c
! 49d0f4ca1bac31d2c3d11181b7e1e406  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c
! 3cb6f7d5cb779a9b9582af157b48729a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c
! e5da2028fd8ae06cb16a4e7a71b6bff1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c
! 84d5375840b31f4448cc2f0a0fba4bc2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c
! f93c8b2d1c60cfefa252a5e0d57d20e6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c
! e43dc356931827f1fb219777007defdf  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c
! 3257eac7b6843bb198b5a1cfd309da16  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c
! 0c2162997dabbd4581c3b44cfbbad88e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c
! 34e4d13d80eb58cb509af76075e8968d  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c
! 41b9cabcddc1251091508afd338e1724  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c
! 376bbb35a803b2ff85668065b38f5a62  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c
! 470f2a01c24e91b4dcb00f8eb444adab  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c
! a0b89791eac7771cba097ac0053a57a6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c
! 31df742a2ff4db033b1601b9af37a5ec  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c
! 520c0f296fc462a9c9f3db8700af813f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c
! 18670eb7f3b1f85e6baef31a612383ec  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c
! 6a8ea9b6e45c633df8687248c75700ce  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c
! 531be58d5cb2cb6f55a9740b4b79e8cc  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c
! fba279b470067433ad612d0990be5c18  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c
! 3dc3f29b9fe9a14c7f8266c9c7d3cfcc  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c
! 408fca6bd1b4dd8550f2fe1894456d93  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c
! fa6e5b66ad7b7afd188772013046ea67  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c
! c6523387a35e4477a7e5553122e4a33f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c
! 2379449d389ac9d611d4ce394c57a3e0  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c
! 8180feae844b2ab7b9bf4167809b667e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c
! 16beed4268b89e23f1bb7a81a847025e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c
! 4931997ea4514ba27cde19ffb2bf965c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c
! 167128a82b678ece5cb099ad6478062e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c
! 828706ced3005ecbb8a023e068977131  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c
! d22f34b562ba8b678f63255e921216cc  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c
! e971a88ccb711afd1d7b3690f3c24f69  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c
! 1853361239475570bec4de9959fc0d85  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c
! c4377924db17218fd1a9f71272a97de8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c
! 62eee2dc9191998cb770ab96128a91f3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c
! b31fe78eb165bf40150ac6d89f84481e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c
! 8fe9441bc15fe69c61afe696cb787bd4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c
! fcd85807d47d1aa732644c6bd29bc460  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c
! 93a5b1a538428ed5311981a644023729  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c
! 05de4238dd27e8f7bd06215b541ed103  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c
! 0697ea0a928a990c62e53730b2d74cd8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c
! 64d75ebb58e002a30e5ef9b349cfaca7  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c
! 5d9120c36b4104bff2c7cceaaa78bdd4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c
! 0edce528a86eb16208924b7ccd3696d3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c
! fab92414b9a7c56752b0ea31adced714  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c
! 690951190d599018b9954886fc46f530  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c
! f3f3d29da4ef25bac5a8c8a4fec2bf5c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c
! 896f1d3dbe5b5af8ebd6303a1de7c12c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c
! 9815396b68c8d40f9ea8eb289f0ed15f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c
! 02f331cbc7b14fa4be5724465d6b0457  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c
! 92a35c5bb597a876e1588f681063e0ec  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c
! 93ab4f336e951a11c1ab696d53615540  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c
! 92a06e1471b270521b5e87369cb8aae6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c
! 44da02ffc9cab20c646b37a4dc7cfe41  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c
! 3d166279f647f076a5c10eb1a9b23c93  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c
! c3ce5c47b9a65de2e82818405fb45249  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c
! d5374e91aa2e026dcb667eb34d3d43b9  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c
! 2f66b66094ed22361a24ab7867749972  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c
! 5be2a4b06a41199015dda601b4768215  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c
! 616ee7a81908be883369e1039a992cee  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c
! 476197f8f40692cb66ec04479b84d8c3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c
! 894649cfac295aee09df2454d88ea0ee  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c
! 72e215fd2989adc8887ec5edd221dd0b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c
! e682972a60e37655f4cc82550382549c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c
! 733f99e9bd8ba4cf1ba4470418819976  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c
! 41854bd15b948310f3e49dc72a9fd048  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c
! 7c7c5306f9f715984e309d0a1b8de5e4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c
! 9d0521da54ca89d8d8cf9348f32f91ee  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c
! 4425ecae75b6287d4aec31b6c3b53698  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
! 4da9108de22e727b36a90c39f768cccf  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c
! 29df1e7c053b0d67157324d6a7e2ad2c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
! cb327ba20917305547c29f7c581b088a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
! 07ed1e2a91dfeb3efc3559a2d1cda889  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c
! 1923a5b6a5f592a57920be56f0f46f37  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c
! 221b4ec6df47580950a6ebd735a51c85  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c
! fe34a93a6b7cc99cb65d142eff6b7cbf  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c
! ce84e742fbfec32a98cefdb30a7de997  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c
! 9e0506a9831857769313ef1dfd4a357f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c
  efcfd0a5b252d8eb20e72455c8c11751  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-8.c
! 8e870e3f8c99b0c7a1403a8d79ce4937  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c
  2d9535a42ea9c6e2aadfcfe8a21bf39c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-1.c
  1f237df462bcd8aed648b5cc01eb6233  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-2.c
  51c2aaab7e5e6e1357dd43a2f28963ce  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c
  59e68ec9f26ceb99d3b8226640b3c89a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-4.c
  d09d02ca261bd37ac82f659e747f39c8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-error.c
! c87529df3798efdb96df88cb00280be2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c
! b67ca5e39bbd8dd9eac473b210aa40a5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c
! c618f387f6415254cd607cf609660cb7  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c
! afd460908a0b7401ce9f6e4ead6a3c28  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c
! fdd7ca08370edc102a089bdc70948641  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c
! 03ed55bad5be320930d3e6d80f76c81b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c
! a11b2d48f45e0532bda6343f2dbf1969  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c
! 5f1974423a4eb40c08c5f87a3d5df989  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c
! f7ecc35a59544c495fa9a69e895ba453  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c
  f116042d5c7a85aa363c6d59c709d246  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-1.c
  aafe22584bf34860d16684eeb25fbd93  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-2.c
  b46408621d928e7ddbdcec62ad381bb3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-3.c
--- 105343,105442 ----
  acb83c56941b40cd27490db738df6ef7  gcc/testsuite/gcc.target/riscv/rvv/base/fixed-point-vxrm-error.c
  cf53a9b2eaefe23a823c5ce97b46657c  gcc/testsuite/gcc.target/riscv/rvv/base/fixed-point-vxrm.c
  e1d7b8138b6a29516a84045b46d40610  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cmp-eqne.c
! 257f3b8cf079803b165ec8baa7fb0494  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c
! 19fc9bcd85aa8486e4bf3a53573f10dc  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c
! f6255c28bd8aa0e43c20835777142360  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c
! e131522d6647aa3d14e11e9124d195c1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c
! ecc7c8ca07fca086a908a9b672e1b686  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c
! df6ac4b49a88bd1b7527ea6f131b50cf  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c
! cb039e3818c8ed88ef22e11affa7779e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c
! 4458576aa46aa14c7bef644836fe1ed1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c
! b8dcb39812904fb50abf34e2d947215e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c
! a98670d5886bdef232011354d2b7bd54  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c
! 035265e40a37487ea1a85ddbc2de73e7  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c
! d74a187acc15cefac8276f56df6403f3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c
! da7680b64050285f40fdd8803c25f013  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c
! 816835e9e8c8c03d7f488dd13bd300b6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c
! db8354caa43c28d589f1bc2d90915e24  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c
! 863e456f15410515d1249c99f162495b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c
! c2091702258418e8e4fc19c7ca483e92  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c
! ec5d889d55976759f2b147f3eed5afe6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c
! 2ca81704b2de964ae1442e82a41672e5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c
! faf1f1cddfd6ff2f4cc68ae6f30d094e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c
! 69d7f3be130255a15127be270af41c8a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c
! 9ad92ca2ef882b07ec6bbbfce9640ed8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c
! fd66cd486137c48bc9ceb22da16ca491  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c
! 55849080fede7826649fa1f84b98ba44  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c
! 2635bff3f322112058a5c319d48285f2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c
! d183f7cd0465db97fcb0137c9ecf19fe  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c
! d21f785d14f90b893ed77c7ccf218676  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c
! 05c1373c364b1eea7f33638be2f18133  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c
! b65a1b20791dcfc9452f04dfc5fb3634  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c
! 38f8dfd5a2494d94c43901c5553b0f34  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c
! 0394587e29518a8905cae2b36a5d17d0  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c
! 8c6d6b72d7fb92f05e52a40d18d5f4f4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c
! eff1fa12d25f86ef72572ac787ca3068  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c
! 64a61a6a2edd524fb37d3fe50d980027  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c
! fd1655c03db8260a879da7cc83912126  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c
! 48f41929e3eb5e8f6e233efb24265944  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c
! bcf1d824a410dff2d065ba4f56b06166  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c
! 4b2576aabd69a35e02259b257df2bcaa  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c
! 59dac0319be9b3c92e732e4156889206  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c
! 0efdb3335b49888d076dd8eae3911518  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c
! dd13bdcc47ed1938373da1aab81526f5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c
! bebea7c40dc0235a275b688223c43c62  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c
! 2d964c96663d96214c6c45a1d0bcd428  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c
! 20c7302a0e84834092fdfa546ff8461f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c
! d1a44fea8d02de4a3b5fc8ecc607f77e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c
! bcf3c72d34d6d9c683e34c933847fc2d  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c
! a17950efdd28a59242136b2323df8358  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c
! b04a29994ee367f59d192999ee0a2bba  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c
! 12b57cede119f042aa4c06dbe77d537a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c
! 5c54e23ac9396ad4223adcfdd40be546  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c
! 7ec1d3fd9b90c308e56a768b967958f1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c
! 28ffb5f54129608bc4f1ef3ce74459e2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c
! 6b5504794cf5f5484ca0fa27234ea2c2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c
! e997743368b7fd238b2b7614476bea48  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c
! f431ffb7ecdae212031bcd649c5db049  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c
! 312f7a05889a266367bfbe943153b685  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c
! 7338f8f825f8b4d248abceeae2d8fd2e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c
! c66f5762e5ff747bf029754bbef1c9b1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c
! 6bcf06d2d25eb7b25ba83d113dfd62c3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c
! 0d4fa746f7ffaad0c9ef7b123dfadeec  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c
! 0a8685db29b57d607287d56d15635a31  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c
! ce6f0b2d45d8cd67c0b66edc4ba15ff6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c
! 5ad989027dd356311310310e2bb82a3f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c
! 9a00ad2b599d8b9c58ba3400503b32c9  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c
! 3fc7bf4dfe8753a6e152970e1b2b3b13  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c
! b6752f526249a5d76d0a3bdc786aa5c6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c
! 44aff3ad8f52b18b7440613e163a4e37  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c
! de188976472feec6dcd16d964d2d0fdb  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c
! 688484884d48e76670005b8a8474a9f4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
! 265fe03142b6b635e73e2dfa52bb9f99  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c
! dfa656575153a494456fb88aa2cfb0b2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
! 47563c58238e390cf4decdec30e65dca  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
! 5432f38ca562734d2255dc71f5a68fd0  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c
! fa85f162e22d6470b0d0295b543a54b8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c
! deb745f1258b20ece488560a23658cd5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c
! 61cb6ef1992cbd24e8f87edd340bb8ee  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c
! f8b6d95242997386d9d8bd68c3d93651  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c
! 8c3b9fd483441b567d31466e9859b2c1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c
  efcfd0a5b252d8eb20e72455c8c11751  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-8.c
! 49218498c1371d67ec0693093b6614cd  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c
  2d9535a42ea9c6e2aadfcfe8a21bf39c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-1.c
  1f237df462bcd8aed648b5cc01eb6233  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-2.c
  51c2aaab7e5e6e1357dd43a2f28963ce  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c
  59e68ec9f26ceb99d3b8226640b3c89a  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-autovec-4.c
  d09d02ca261bd37ac82f659e747f39c8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-error.c
! 2b7ca8580bfe18f8cc923deba8484545  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c
! e83196da505a9c6b077a7f45ce45dcf6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c
! 76db2184439ae52f6b3b34be52f7b6ed  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c
! 2d1adc126a51c20e842bb0d7e89cd59b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c
! 93b8b5054ee971b2ec08043b9dc8fd29  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c
! 3cc0b883b39e09f0d3138d353c16caf5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c
! 4f8a172f84cfa9ca6a897d6d85b03b8f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c
! 98e947cfb8174a2ba46707a9a950b724  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c
! 49c1eae622246d631cdd322b17220038  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c
  f116042d5c7a85aa363c6d59c709d246  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-1.c
  aafe22584bf34860d16684eeb25fbd93  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-2.c
  b46408621d928e7ddbdcec62ad381bb3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-3.c
*************** b46408621d928e7ddbdcec62ad381bb3  gcc/te
*** 105181,105217 ****
  028f68a4a2b0888f98231019d7d24a8e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-5.c
  2e3286be2aabcd40aace2fca41adfada  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run.h
  52197522cf63693fc2f37894ff755dfb  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm.c
! d2d4b724f694a55e3e05b9837e03ff61  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c
! 4e72c0fb5dc86bd9eeb2708d6a91c230  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c
! 538d78d287d2c27ebc68e29309ffbb0e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c
! 60b91369fb9c448ba6fe5c0a8310d54b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c
! 83a50ddc406cabbec47443226356bb05  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c
! 58eb91cff7af64d6a93770d4bfaa8864  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c
! 186de41735fe30311bc8297a76c44e45  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c
! f9f4daec976fba955253581a934de0d7  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c
! f294f8f525dae1bf40c0224b40b0ffe4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c
! 1602f9b60ea04c9dcf3525bd0f88bafc  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c
! 7b49d0d154cf33d4f3945b3bfe263414  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c
! fe90eaf85b34e81ba7d7fd632139e76e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c
! cb4901ff79e8eb4e2d578e38778e2416  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c
! f326b92e3c80a1bbb8e2912cd2798e67  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c
! 64af13ed37e2c791e2bae615a8ea7b1f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c
! 0cb00abe20614f59a2818b93ed624b6b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c
! 9e31dc8b6b2407661e7db6d3ea544d60  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c
! 1128d99560f6cc52a12da60274135f57  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c
! 47fff23cdacef666c5a75680c4287d02  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c
! 2c33b21c1ec715a6246840cf0dbca681  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c
! 5b3f0160a8c6a085b15daab8869c1932  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c
! 4f8eef09572c3524d50f61b12af5b19c  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c
! e2bbd0d66ea5bc2f51f8b693b16a4b95  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c
! f80ec5a52861f1e3b73fa2cb6ee89450  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c
! f1a514e76b96ae0a6647ef1d5e8d212d  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c
! fccb1a06ca62fead6e68965e0d2ca933  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c
! d5050960d1f46bf0f8e43c795935946f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c
! 291cf0ccd014e0915d4903fdd80a1e93  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c
! 737d56f72c7cdc3d58a2c48f96b22d98  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c
! ef4245fd73f1de259b051142efa963ad  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c
! 843a8c5fa0dc081f888dc2d0b627d0a3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c
  08054e5f470b078b510e4a3e83f162d6  gcc/testsuite/gcc.target/riscv/rvv/base/frm-1.c
  62b9c34ffc66f09c2f8e7f4e0f7963a6  gcc/testsuite/gcc.target/riscv/rvv/base/integer-cmp-eqne.c
  49f1b4782476ece5ef4b7d47553b9e13  gcc/testsuite/gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c
--- 105444,105480 ----
  028f68a4a2b0888f98231019d7d24a8e  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run-5.c
  2e3286be2aabcd40aace2fca41adfada  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-run.h
  52197522cf63693fc2f37894ff755dfb  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm.c
! 86f75603b69da02df241516f47987f40  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c
! 44f3e72316106758fccf8dd95e2bb6c8  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c
! 9b3827f54888cceacc36f92c04fe8bbe  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c
! 2c33646b20260cdb49aaab11919c97f2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c
! 7104f382ecf00a1b5e78416c20a2d3c6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c
! 2a2a583a8870a47a2be5c54a2fdfdabd  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c
! c8ec1762a07eb8e6d31a7431adbc0925  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c
! b38f8dda55ad5e803933fc9005f6eed3  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c
! 8288932103fe00119309d694c41ae561  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c
! e1d212ab27e8b0efc274b14010d685b4  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c
! a6e5fb4bbf5d9a66ecb992a10fbb6a6f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c
! 1700058ecdd67cc452b72241cc473f9b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c
! 2ced1ee4c6b5ba10e8579c96bb0a3f5b  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c
! 7ed690916f7344388c7d63f59ef58de1  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c
! 4e9c03f2a35a323fcbf0e459c608e2a2  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c
! 150c8c16016c9b1220f704bf02a4a265  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c
! afee6d97b0f77b3146cc82636620295f  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c
! 7f4381cf349c67de5fabcb989f380318  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c
! eb169338afde4bc5af0a1632ce630068  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c
! f5ca3bd590c48f49e36cecc27923ef44  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c
! 030473ff05fb2588ad90236e7628b2ac  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c
! 1cc343759ac9fd3d5c340bc189e754c6  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c
! e59a0dff8249118a71290a78ffd3e9ff  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c
! 7a912eaa4ba0dde5971f2d4133ec7a17  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c
! 48ff94523c9757c9d9530990cbf32fb0  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c
! e0856f1bda028219b4f92629a07325cd  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c
! 0b14b07368d23710d3606e7386a91f51  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c
! 4b875962489dbdd8c46dd53b9df3c4d5  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c
! a3e539eb65ac34e77741948bcc480239  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c
! e9b5099ec693aea3519574fbf0d46173  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c
! 8cdbbe23539339509d6157709d48edca  gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c
  08054e5f470b078b510e4a3e83f162d6  gcc/testsuite/gcc.target/riscv/rvv/base/frm-1.c
  62b9c34ffc66f09c2f8e7f4e0f7963a6  gcc/testsuite/gcc.target/riscv/rvv/base/integer-cmp-eqne.c
  49f1b4782476ece5ef4b7d47553b9e13  gcc/testsuite/gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c
*************** e45b502abe5e1c2f294a60c81cecf97d  gcc/te
*** 105281,105287 ****
  6d11f8c8860a455537716fa561d37c4f  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-7.c
  5115b1dec1af73c8e693d1ed16463268  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-8.c
  f7ecde847485ec2bfb3130a5d11f24bf  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-9.c
! a7ba8196d8ede3f7743a7b5bec4b23e2  gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c
  4b2cb986d899a5dfaf7e3e831d4bf826  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c
  11e94441b59e464d0fdf626cb0d10ff6  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c
  b9d5069480ea9f9e07ace3f73293803d  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c
--- 105544,105550 ----
  6d11f8c8860a455537716fa561d37c4f  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-7.c
  5115b1dec1af73c8e693d1ed16463268  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-8.c
  f7ecde847485ec2bfb3130a5d11f24bf  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-9.c
! 245ea609dbffe52845bec0dd12b2fe5e  gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c
  4b2cb986d899a5dfaf7e3e831d4bf826  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c
  11e94441b59e464d0fdf626cb0d10ff6  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c
  b9d5069480ea9f9e07ace3f73293803d  gcc/testsuite/gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c
*************** d0449abd622c085a684b0e2415ec2117  gcc/te
*** 105403,105408 ****
--- 105666,105672 ----
  15e86a1d19dbad365e01d54267a6b495  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-49.c
  19140a4383e8b06d1d20ab5f9e1496c5  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-5.c
  614a6309e9d349c2e49f14a8691d8d8a  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-50.c
+ c009d5cd4db76dd4d10012cdac89a1a1  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-51.c
  2ed4fb55a4dc2e5bba7bdac02954f3c2  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-6.c
  6c90b3544a064a82a7d8cc3dde89a693  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-7.c
  33f46e06c303fb898c34975b7d932871  gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-8.c
*************** de37c6016ad6cf1b22d7b03f060e8fcd  gcc/te
*** 105443,105449 ****
  e0e32156088fa9af1f2b938e27f7f0c3  gcc/testsuite/gcc.target/riscv/rvv/base/pr117955.c
  e8e18eaf7275c743b3236c1a657a67cf  gcc/testsuite/gcc.target/riscv/rvv/base/pr117990-run-1.c
  d5d07a6cd59f8387f299aa9f6bf8a11c  gcc/testsuite/gcc.target/riscv/rvv/base/pr118075-run-1.c
! ac5a30749d3455f2d2ee95e0bba17cbf  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c
  9d372497e1d653c6ba1c64cc559aefc8  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-2.c
  68975fcccf2a78e3687b7853c57cb0bb  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-run-1.c
  c0f86006491768d52aed98937458f329  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-run-2.c
--- 105707,105713 ----
  e0e32156088fa9af1f2b938e27f7f0c3  gcc/testsuite/gcc.target/riscv/rvv/base/pr117955.c
  e8e18eaf7275c743b3236c1a657a67cf  gcc/testsuite/gcc.target/riscv/rvv/base/pr117990-run-1.c
  d5d07a6cd59f8387f299aa9f6bf8a11c  gcc/testsuite/gcc.target/riscv/rvv/base/pr118075-run-1.c
! 6898c8f373e0b4dd9a9c21c0de3694e1  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c
  9d372497e1d653c6ba1c64cc559aefc8  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-2.c
  68975fcccf2a78e3687b7853c57cb0bb  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-run-1.c
  c0f86006491768d52aed98937458f329  gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-run-2.c
*************** c68a73138459484ead0cddce6ce27d08  gcc/te
*** 105452,105458 ****
  eaed30eccbeb952165411cfd2c789b72  gcc/testsuite/gcc.target/riscv/rvv/base/pr118872.c
  96272d16f134fa97f27114f27089793a  gcc/testsuite/gcc.target/riscv/rvv/base/pr118931-run-1.c
  9e9d5697b1d1ba9cb4041f8ebf17039b  gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c
! abe5cb852d5c8b368720c2010f7dde5c  gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c
  3086321c9a12d3eecd8f1f9ad8ecac7a  gcc/testsuite/gcc.target/riscv/rvv/base/pr120436.c
  250f19182eb5aac9b6a01d7c594e8f5f  gcc/testsuite/gcc.target/riscv/rvv/base/pr122270-1.c
  b0032fffb6e1860da7ca94cd7252c411  gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c
--- 105716,105722 ----
  eaed30eccbeb952165411cfd2c789b72  gcc/testsuite/gcc.target/riscv/rvv/base/pr118872.c
  96272d16f134fa97f27114f27089793a  gcc/testsuite/gcc.target/riscv/rvv/base/pr118931-run-1.c
  9e9d5697b1d1ba9cb4041f8ebf17039b  gcc/testsuite/gcc.target/riscv/rvv/base/pr119115.c
! 52b99a58ac5be45d0931b49ec7490893  gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c
  3086321c9a12d3eecd8f1f9ad8ecac7a  gcc/testsuite/gcc.target/riscv/rvv/base/pr120436.c
  250f19182eb5aac9b6a01d7c594e8f5f  gcc/testsuite/gcc.target/riscv/rvv/base/pr122270-1.c
  b0032fffb6e1860da7ca94cd7252c411  gcc/testsuite/gcc.target/riscv/rvv/base/pr122652.c
*************** af9424f2e0fb816623eabd06ff445cd6  gcc/te
*** 106097,106102 ****
--- 106361,106367 ----
  4e6ad7e1eb54bfb1831df3a873bb834e  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/common/test_struct_nine_128bit_vectors.h
  6edebadc51d685154461e38fea7093d3  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/common/test_two_registers.h
  586dd7b5fbb7ee4cd0443e5f5a8b4e27  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/common/test_vector_array_struct.h
+ 67bc8ddd069be5aa62f7495d486cfd7d  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/empty-aggregate.c
  93e36453a96e46e2d5432c6866cf2559  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/riscv-vls-cc.exp
  d765ff8ee76981e10c3f6bfc4185f76e  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/test_128_abi_vlen_large_vector.c
  a2af258497515d741c81bc5f2338252e  gcc/testsuite/gcc.target/riscv/rvv/vls-cc/test_128_abi_vlen_medium_vector.c
*************** c85dd72a05191265ed466d39c4b6b5e7  gcc/te
*** 106321,106327 ****
  92fc9dd150d1769bb8d75f82a2c6198d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-1.c
  1f59839cf415d948822ef4462b427dec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-2.c
  740c1cbc9a681099966183d4587d9a26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c
! 14e4ce1dbfe4c1978792e21458b54f60  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
  214ad7d07e6a288b395d3cef7ca24962  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c
--- 106586,106592 ----
  92fc9dd150d1769bb8d75f82a2c6198d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-1.c
  1f59839cf415d948822ef4462b427dec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr112988-2.c
  740c1cbc9a681099966183d4587d9a26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113248.c
! 1a1fa7f689b7cce13f3782c0291661ab  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
  231f16f9d08fd8f85a1f7dac951a33d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113696.c
  7af3daa5fca47d3622e18dcf26901c3a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr115214.c
  214ad7d07e6a288b395d3cef7ca24962  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr117974.c
*************** d64e66d94cbdd12b340dbf4a224f19e9  gcc/te
*** 106359,106365 ****
  9a448d4392699ef2b3082ce2dbb7cacf  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-36.c
  b52f97c93529a238efa6897a26326f80  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-37.c
  07badc323281331a3a04c4de6815be63  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-38.c
! d155ea0f0b50305c82378ab87c0dc321  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c
  90f4672e8fa886fa4cfbb22f81a4990e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-4.c
  f700060f4b8116569c23ba8a116a158f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-40.c
  419dff49996f0dd50432920c2b7b75df  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-41.c
--- 106624,106630 ----
  9a448d4392699ef2b3082ce2dbb7cacf  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-36.c
  b52f97c93529a238efa6897a26326f80  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-37.c
  07badc323281331a3a04c4de6815be63  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-38.c
! 537c8e5be4e2e5a80316fb1223bf480e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c
  90f4672e8fa886fa4cfbb22f81a4990e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-4.c
  f700060f4b8116569c23ba8a116a158f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-40.c
  419dff49996f0dd50432920c2b7b75df  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-41.c
*************** f22d7b7dd0ac13e7be7c691d7016cacf  gcc/te
*** 106406,106417 ****
  4e97bfbff456defb0b3b091a58418069  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c
  ff0da16730eed18779024ef04592b1bd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-4.c
  cd948c64a2684bb7995fa9d7b296ba40  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c
! aedb7500eb87a112f80fb4609b472748  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c
  a6e85f1bf3d68b905f55eb7a3c5ea388  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-1.c
  c0a5c2206ccb5cf2a7d4252a7f171aed  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-10.c
  53d0a2998a86b61666e3e83e9514aae6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-11.c
  7d34e3c14e449cb63f6293af6c9316d0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-12.c
! 835d7f9ee00940eb208115ef87f2b36f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c
  4aa61bc76d29783352fc122155853cb1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-2.c
  01e25b739316d2f693965e2bc219a683  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-3.c
  6dad560e0fe6f25d552e9d7564fcc323  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c
--- 106671,106682 ----
  4e97bfbff456defb0b3b091a58418069  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c
  ff0da16730eed18779024ef04592b1bd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-4.c
  cd948c64a2684bb7995fa9d7b296ba40  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c
! e724faa71d7d8ca910a94cee82a2d743  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c
  a6e85f1bf3d68b905f55eb7a3c5ea388  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-1.c
  c0a5c2206ccb5cf2a7d4252a7f171aed  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-10.c
  53d0a2998a86b61666e3e83e9514aae6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-11.c
  7d34e3c14e449cb63f6293af6c9316d0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-12.c
! 43491aecee60c6db44d64bd0d83aa13f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c
  4aa61bc76d29783352fc122155853cb1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-2.c
  01e25b739316d2f693965e2bc219a683  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-3.c
  6dad560e0fe6f25d552e9d7564fcc323  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c
*************** d02a2912e872fd8b7b39b69b74482091  gcc/te
*** 109680,109687 ****
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! a28c324c053ea30337be8d9b01478f4d  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
! cf207cd32f48bf81f1c2ea9397f53856  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  86eaa72e1ff6c2744ffa37b93b7e3f52  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
  e44ad0904c1813b96900f1dc55637bce  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
--- 109945,109952 ----
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! e8b0d56371363a8463d4caeed2dc67f8  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
! bbcf499c13930cdef91bc43296afd20e  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  86eaa72e1ff6c2744ffa37b93b7e3f52  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
  e44ad0904c1813b96900f1dc55637bce  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
*************** e0fe6119bfcf724ee51375d3156cacc5  gcc/te
*** 115167,115172 ****
--- 115432,115439 ----
  c7ede1ebcb10a45e043e636af05828b5  gcc/testsuite/gfortran.dg/associate_80.f90
  459fbab02621785ee9cc92b06ca356f4  gcc/testsuite/gfortran.dg/associate_81.f90
  a17657c86525835e124af80877014f6b  gcc/testsuite/gfortran.dg/associate_82.f90
+ c1e9d775b052c373d922dec7c4aaa852  gcc/testsuite/gfortran.dg/associate_83.f90
+ 1c70313418bdde2f0e473f82a72e077b  gcc/testsuite/gfortran.dg/associate_84.f90
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
  79e6ed8de9e44f2a63d74a896b518a8f  gcc/testsuite/gfortran.dg/associate_contained_func_typebound.f90
  63711a9e2de25641dd224750ada9a60b  gcc/testsuite/gfortran.dg/associate_contained_func_typebound_2.f90
*************** cb9ccf001da2d7d1cf77a7d2e9ebeed2  gcc/te
*** 115374,115379 ****
--- 115641,115647 ----
  8a7966d3a124002e000afedcfc5dfc1f  gcc/testsuite/gfortran.dg/bind_c_module_proc.f90
  74a4370d67a610f90e4eed4db0901687  gcc/testsuite/gfortran.dg/bind_c_optional-1.f90
  65e0bb83cbf49d5a78d319d060fe4102  gcc/testsuite/gfortran.dg/bind_c_optional-2.f90
+ 7fbd6e889aded14da2aa3f5ce10e3d4d  gcc/testsuite/gfortran.dg/bind_c_private_1.f90
  fe8c5e542693077295c21e4aaab6c998  gcc/testsuite/gfortran.dg/bind_c_procs.f03
  55687585265263f1b2e68929e4c12de3  gcc/testsuite/gfortran.dg/bind_c_procs_2.f90
  67f38e9de2f12b98af2d4078c0fbac44  gcc/testsuite/gfortran.dg/bind_c_procs_3.f90
*************** bb310597e71d8648c4c14b69f7d31131  gcc/te
*** 115889,115895 ****
  ffa5f5d7a334ba55226b8772a20e8323  gcc/testsuite/gfortran.dg/c_loc_test_19.f90
  6de843415c284c1e56a51ee768d59f6a  gcc/testsuite/gfortran.dg/c_loc_test_20.f90
  5fae9540f12ce154ae745a63dba06487  gcc/testsuite/gfortran.dg/c_loc_test_21.f90
! 309cd429cf0d6485c2e30782d8f25ea6  gcc/testsuite/gfortran.dg/c_loc_test_22.f90
  e445fb633b48b36bea498fca43cce336  gcc/testsuite/gfortran.dg/c_loc_tests_10.f03
  1983fb67fbd1598f5a7a4f46d9ceca33  gcc/testsuite/gfortran.dg/c_loc_tests_11.f03
  1abc3a7523c7635588a7df80a53611c1  gcc/testsuite/gfortran.dg/c_loc_tests_12.f03
--- 116157,116163 ----
  ffa5f5d7a334ba55226b8772a20e8323  gcc/testsuite/gfortran.dg/c_loc_test_19.f90
  6de843415c284c1e56a51ee768d59f6a  gcc/testsuite/gfortran.dg/c_loc_test_20.f90
  5fae9540f12ce154ae745a63dba06487  gcc/testsuite/gfortran.dg/c_loc_test_21.f90
! c384c527a2533d427d54b830a146d296  gcc/testsuite/gfortran.dg/c_loc_test_22.f90
  e445fb633b48b36bea498fca43cce336  gcc/testsuite/gfortran.dg/c_loc_tests_10.f03
  1983fb67fbd1598f5a7a4f46d9ceca33  gcc/testsuite/gfortran.dg/c_loc_tests_11.f03
  1abc3a7523c7635588a7df80a53611c1  gcc/testsuite/gfortran.dg/c_loc_tests_12.f03
*************** f758820ceb8b3dc83b306077bb651d94  gcc/te
*** 116243,116248 ****
--- 116511,116521 ----
  fda1f206c2e1ff5cd9f550d75873293b  gcc/testsuite/gfortran.dg/class_to_type_2.f90
  b7e881e628c247d750478033fea18cb3  gcc/testsuite/gfortran.dg/class_to_type_3.f03
  363a8e7237fe405caaa21bb126f5a3a6  gcc/testsuite/gfortran.dg/class_to_type_4.f90
+ 7a53b5a48a6ad05bb7d089f2733ac024  gcc/testsuite/gfortran.dg/class_to_type_5.f90
+ 4f11a7534b9f1db99dd40e9aa0cf706d  gcc/testsuite/gfortran.dg/class_to_type_6.f90
+ 4c25d949081da545f29310f3617ed66f  gcc/testsuite/gfortran.dg/class_to_type_7.f90
+ 91f4e20f54886e5f0571bda8bba4f815  gcc/testsuite/gfortran.dg/class_to_type_8.f90
+ 680e5d6b4bac1956a4b5faee1537c573  gcc/testsuite/gfortran.dg/class_to_type_9.f90
  8ac709463ea07c61a332e38d83d9f8f1  gcc/testsuite/gfortran.dg/class_transformational_1.f90
  c29841cda434ff0f97175361e0f2ba6e  gcc/testsuite/gfortran.dg/class_transformational_2.f90
  b51c285d2aa337ba9d51a48947b0788a  gcc/testsuite/gfortran.dg/cmplx_intrinsic_1.f90
*************** b6282b55783f0b1b931571f793113587  gcc/te
*** 119706,119711 ****
--- 119979,119985 ----
  d64f2f360e5963a4bea9642fa7bf28c2  gcc/testsuite/gfortran.dg/is_contiguous_4.f90
  ebc7811d4f30308fbc8ee420f6168425  gcc/testsuite/gfortran.dg/is_contiguous_5.f90
  38e6bcfa1282a8722a267803521d96bb  gcc/testsuite/gfortran.dg/is_contiguous_6.f90
+ 70ea13847e787089b162e4931e093ed3  gcc/testsuite/gfortran.dg/is_contiguous_7.f90
  765cb2ca72a98a43c69ea99a61aa0a59  gcc/testsuite/gfortran.dg/is_iostat_end_eor_1.f90
  ca491b51342a862f4f525db35073fe93  gcc/testsuite/gfortran.dg/is_iostat_end_eor_2.f90
  e29de44a3798652da0c04b03153d2639  gcc/testsuite/gfortran.dg/ishft_1.f90
*************** ee4028c15df35bd899fb0f4ccdae563b  gcc/te
*** 120951,120956 ****
--- 121225,121231 ----
  5a00ca35ba1faa29766a381172b84b0d  gcc/testsuite/gfortran.dg/pr126234.f90
  1e6e6c4d7228b11f3a30141f4e909e7b  gcc/testsuite/gfortran.dg/pr126242.f90
  79f761eaecad212ada45e8ca1650129e  gcc/testsuite/gfortran.dg/pr126303.f
+ 4183207535f24d22a9ef08e88256897f  gcc/testsuite/gfortran.dg/pr126909.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  2b5f18b773a5db29b0a2ee2d8cce767c  gcc/testsuite/gfortran.dg/pr15140.f90
*************** d2dc4b8b4c8c2279101a65b75688be21  gcc/te
*** 121678,121683 ****
--- 121953,121959 ----
  bf06d26cfd17de7f7a1ca3d27181a469  gcc/testsuite/gfortran.dg/pr95500.f90
  6ef53d080792d6388cbc30dcbd258ee4  gcc/testsuite/gfortran.dg/pr95502.f90
  957c4b1c6c2a82ac61e92b1200c1f5cc  gcc/testsuite/gfortran.dg/pr95503.f90
+ 6e4a5a2ae762ac3d8a8a676936a36f26  gcc/testsuite/gfortran.dg/pr95542.f90
  5231d7be8a143a19ea814874ba722093  gcc/testsuite/gfortran.dg/pr95544.f90
  42b37edbbc665179c35ef2c650460dfc  gcc/testsuite/gfortran.dg/pr95584.f90
  4d7840381b8acfddf9d6d981be248de8  gcc/testsuite/gfortran.dg/pr95585.f90
*************** caa7da29771aad612f545bdeb544b4c9  gcc/te
*** 122565,122570 ****
--- 122841,122847 ----
  a8c69bca898ff29ba3a6ae2924078fa7  gcc/testsuite/gfortran.dg/structure_constructor_15.f90
  25b14e6e8851bd84a6960c3b9ce1be37  gcc/testsuite/gfortran.dg/structure_constructor_16.f90
  3dbdb30cf91d1bfe2aefcf7e2101376b  gcc/testsuite/gfortran.dg/structure_constructor_17.f90
+ 949cce9e2d0fec5e875130d9d4185ead  gcc/testsuite/gfortran.dg/structure_constructor_18.f90
  34b1847b506e1397548db8e0aa2a5dee  gcc/testsuite/gfortran.dg/structure_constructor_2.f03
  b4cea5ac2c6cc89ab88ca3d7673f1483  gcc/testsuite/gfortran.dg/structure_constructor_3.f03
  cf05250e492fd4f294f0298ffb5c8bdb  gcc/testsuite/gfortran.dg/structure_constructor_4.f03
*************** cc69f06d5cf4cbc8c70e417d3db3148b  gcc/te
*** 127779,127784 ****
--- 128056,128062 ----
  5870b8cebdd6ce91693a485c5a6854d5  gcc/testsuite/gnat.dg/reduce4.adb
  001425eca43e1ece9e65dd7929459079  gcc/testsuite/gnat.dg/reduce5.adb
  4bfff26122d5903178ba10ce7dc12f6c  gcc/testsuite/gnat.dg/reduce6.adb
+ 300aebdec53772ab208fc7f21d3a64ff  gcc/testsuite/gnat.dg/reduce7.adb
  50be8d98f4f9ac99d64926a10596a2df  gcc/testsuite/gnat.dg/ref_type.adb
  5457827e708b7bfc92ffe5610655a443  gcc/testsuite/gnat.dg/ref_type.ads
  222b5d10f23a2e8e8a5e4d41e86e66ed  gcc/testsuite/gnat.dg/regpat1.adb
*************** bc790bd930f8c4f971b8268bdda83659  gcc/te
*** 128003,128008 ****
--- 128281,128291 ----
  b605c919a473b8d6808dd232aa7eaf49  gcc/testsuite/gnat.dg/specs/gen_interface.ads
  4830454a8335e61b1876284f60de9782  gcc/testsuite/gnat.dg/specs/gen_interface_p.ads
  c3d551a8416dc4b2870263e10877307e  gcc/testsuite/gnat.dg/specs/generic_inst1.ads
+ 29717aba143fcc96f1b938c32ca64c95  gcc/testsuite/gnat.dg/specs/generic_inst10.ads
+ ff61e2dc1682c4e2296ccb140d4ef20c  gcc/testsuite/gnat.dg/specs/generic_inst10_g1.ads
+ 8a04425940326cf69fe99422b9ca68e7  gcc/testsuite/gnat.dg/specs/generic_inst10_g2.ads
+ bba010393fa4e393cf7b1fe8bea36862  gcc/testsuite/gnat.dg/specs/generic_inst10_g3.ads
+ 714a84f9e9342b8ec4cbfa37a8c54855  gcc/testsuite/gnat.dg/specs/generic_inst10_pkg.ads
  84bbd54b835597ff50d8d9c0c1ed6128  gcc/testsuite/gnat.dg/specs/generic_inst2-child1.ads
  acb50fb5dcaeadfaa1d06f3a291ad5ac  gcc/testsuite/gnat.dg/specs/generic_inst2-child2.ads
  26c02326292bb6ec71f4f8278f140bff  gcc/testsuite/gnat.dg/specs/generic_inst2.ads
*************** beea177adf92fe95e8df49c09e98fb22  gcc/te
*** 130911,130917 ****
  5a6de494accc5d43d4daa0ed3d05846b  gcc/testsuite/lib/gcc-gdb-test.exp
  5d43c86c0be2338b09999f28a2d4ae79  gcc/testsuite/lib/gcc-simulate-thread.exp
  f137fa2e280bd8fee6a57544dbe520a8  gcc/testsuite/lib/gcc.exp
! c9227c4c135d0c2dda85d1e50917d3d8  gcc/testsuite/lib/gcov.exp
  1ab113b2aab75f691397f0a23c85a675  gcc/testsuite/lib/gdc-dg.exp
  47d9d384596e60d78772d4cbb578d9fe  gcc/testsuite/lib/gdc-utils.exp
  659d28254b74bb134c269af0f05ac5d1  gcc/testsuite/lib/gdc.exp
--- 131194,131200 ----
  5a6de494accc5d43d4daa0ed3d05846b  gcc/testsuite/lib/gcc-gdb-test.exp
  5d43c86c0be2338b09999f28a2d4ae79  gcc/testsuite/lib/gcc-simulate-thread.exp
  f137fa2e280bd8fee6a57544dbe520a8  gcc/testsuite/lib/gcc.exp
! 272a2c98b9300d6743567aaad4a5b888  gcc/testsuite/lib/gcov.exp
  1ab113b2aab75f691397f0a23c85a675  gcc/testsuite/lib/gdc-dg.exp
  47d9d384596e60d78772d4cbb578d9fe  gcc/testsuite/lib/gdc-utils.exp
  659d28254b74bb134c269af0f05ac5d1  gcc/testsuite/lib/gdc.exp
*************** cdfac88acd33dec95625eb0cca4bc571  gcc/te
*** 130952,130958 ****
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
  48d663ee59b30b58dbd6982840814e57  gcc/testsuite/lib/scanasm.exp
  81addbeaa55d8c8d361049d045d21b6e  gcc/testsuite/lib/scandump.exp
! daccee9e5e177dcd385268830f15bd84  gcc/testsuite/lib/scanhtml.exp
  a33ed92a9095d29763dd3ba2493b26d7  gcc/testsuite/lib/scanipa.exp
  907fd2c95b387627db1ef01a7111570d  gcc/testsuite/lib/scanlang.exp
  7f1aa3b1c580955b0cc6825949fcc66a  gcc/testsuite/lib/scanltrans.exp
--- 131235,131241 ----
  5a6cedce32c4c01005adb940226eae62  gcc/testsuite/lib/sarif.py
  48d663ee59b30b58dbd6982840814e57  gcc/testsuite/lib/scanasm.exp
  81addbeaa55d8c8d361049d045d21b6e  gcc/testsuite/lib/scandump.exp
! 9f1802498c7f588a21819447e4509171  gcc/testsuite/lib/scanhtml.exp
  a33ed92a9095d29763dd3ba2493b26d7  gcc/testsuite/lib/scanipa.exp
  907fd2c95b387627db1ef01a7111570d  gcc/testsuite/lib/scanlang.exp
  7f1aa3b1c580955b0cc6825949fcc66a  gcc/testsuite/lib/scanltrans.exp
*************** db8100f4ec0262eeb2c99e9eaffe546e  gcc/te
*** 130961,130972 ****
  898221caadca6a62674ccf022e39d1b2  gcc/testsuite/lib/scanoffloadrtl.exp
  d8b0ac4d429708884c384b15b26da1c4  gcc/testsuite/lib/scanoffloadtree.exp
  851f49e0de52aa5e1e70b5504f1ea27c  gcc/testsuite/lib/scanrtl.exp
! de9eeadec9703aff96169206e31a3a22  gcc/testsuite/lib/scansarif.exp
  500d5ba9cb874cb3eaa8515fcaa035d3  gcc/testsuite/lib/scantree.exp
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! 04af4662a03b38e023aa3ab0bd1868d7  gcc/testsuite/lib/target-supports.exp
  b1eb2edcf4941bfb00c200eb000a0a7b  gcc/testsuite/lib/target-utils.exp
  98b890f6c455deafd6ca241993fc5d67  gcc/testsuite/lib/timeout-dg.exp
  0afb0c69501fa44908d13017be208db3  gcc/testsuite/lib/timeout.exp
--- 131244,131255 ----
  898221caadca6a62674ccf022e39d1b2  gcc/testsuite/lib/scanoffloadrtl.exp
  d8b0ac4d429708884c384b15b26da1c4  gcc/testsuite/lib/scanoffloadtree.exp
  851f49e0de52aa5e1e70b5504f1ea27c  gcc/testsuite/lib/scanrtl.exp
! 51cf90b30d392592765d0284774198e7  gcc/testsuite/lib/scansarif.exp
  500d5ba9cb874cb3eaa8515fcaa035d3  gcc/testsuite/lib/scantree.exp
  275f7eb9618e6b097a58c1fba25cdb9c  gcc/testsuite/lib/scanwpaipa.exp
  9bc4cbcf0cb4f1aa30a8cf3142d157eb  gcc/testsuite/lib/target-libpath.exp
  6f6a566231f79b409eb113cf2e7f5132  gcc/testsuite/lib/target-supports-dg.exp
! fc3bb13780086ac3983561498be95900  gcc/testsuite/lib/target-supports.exp
  b1eb2edcf4941bfb00c200eb000a0a7b  gcc/testsuite/lib/target-utils.exp
  98b890f6c455deafd6ca241993fc5d67  gcc/testsuite/lib/timeout-dg.exp
  0afb0c69501fa44908d13017be208db3  gcc/testsuite/lib/timeout.exp
*************** e955b77da9f61f19437f61d65861e763  gcc/tr
*** 133938,133973 ****
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  40caf527b0a0d9a8c38eee49bd5f5a71  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! 353091e462e88bd539abdb45ea13c810  gcc/tree-profile.cc
! 1f8a56c52a91a6a6e79b16a2ccc6ae40  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
  c3b5af33118e23a3f3b653f87a6181d3  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  6b789908da4ef6b57b1873aeeb83ab62  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
  bcc14a4de2b37f6c98080d60cd3a2c36  gcc/tree-ssa-alias-compare.h
! 78500dfd45dcc7b2b824b07df922c1c0  gcc/tree-ssa-alias.cc
  fe34bf127e446b91dd107c83db0ab4e5  gcc/tree-ssa-alias.h
  7ea04656ca71cfab9d92b5810abd6687  gcc/tree-ssa-ccp.cc
  00bd4ac9fa4538263509ec504e606320  gcc/tree-ssa-ccp.h
  b36c3bd52f9df56746196a0cf2b3ac14  gcc/tree-ssa-coalesce.cc
  7de85a2bd407435f95828a5c4e12f826  gcc/tree-ssa-coalesce.h
  121090f76aa83f677c00129216885e7e  gcc/tree-ssa-copy.cc
! 1a3e901dadd11ced06da804e86571690  gcc/tree-ssa-dce.cc
  60dcee04d4b692977781318ef4a7aaf8  gcc/tree-ssa-dce.h
  6beb278a5f33cf9f78a1b9d49889185b  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! c911885eb94152dd832b6b2a740c7c66  gcc/tree-ssa-forwprop.cc
  248183d5c026a6265d43c63a90f41a31  gcc/tree-ssa-ifcombine.cc
  417a76837cd2f895f07d02485a3cdffe  gcc/tree-ssa-ifcombine.h
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
  8810d451bbe1958d41d972bc0224c156  gcc/tree-ssa-loop-ch.cc
! c0b0eee8718bdd98efee6fb91221f995  gcc/tree-ssa-loop-im.cc
  972578d2900bb38415f9eb02b271096c  gcc/tree-ssa-loop-ivcanon.cc
! a7e4faa79a06e6da75ffb6e7e7a01df1  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
  f084337b877c38fa179ae0f14738ee83  gcc/tree-ssa-loop-manip.cc
  035c28a41f0d6337f42b24ced6477de5  gcc/tree-ssa-loop-manip.h
--- 134221,134256 ----
  47856333edaecc32813dad93ecb96fbe  gcc/tree-pretty-print-markup.h
  40caf527b0a0d9a8c38eee49bd5f5a71  gcc/tree-pretty-print.cc
  c021bc7a8aa59f2b8184de8bff6b1d14  gcc/tree-pretty-print.h
! 9c02e3b4a807cd464ab0cb3b84be4b51  gcc/tree-profile.cc
! 2ed891bc12c028eb36d6e00c5b1d3ec3  gcc/tree-scalar-evolution.cc
  0ac41331ad8cbe754ee005d5ef9aff94  gcc/tree-scalar-evolution.h
  c3b5af33118e23a3f3b653f87a6181d3  gcc/tree-sra.cc
  3c8e89a03a1e2e77a99e5b05bb2976ae  gcc/tree-sra.h
  6b789908da4ef6b57b1873aeeb83ab62  gcc/tree-ssa-address.cc
  2cc8f7ab186c793b91875224ed16edc6  gcc/tree-ssa-address.h
  bcc14a4de2b37f6c98080d60cd3a2c36  gcc/tree-ssa-alias-compare.h
! 28145404853d0b2bc8bcbf4165636f46  gcc/tree-ssa-alias.cc
  fe34bf127e446b91dd107c83db0ab4e5  gcc/tree-ssa-alias.h
  7ea04656ca71cfab9d92b5810abd6687  gcc/tree-ssa-ccp.cc
  00bd4ac9fa4538263509ec504e606320  gcc/tree-ssa-ccp.h
  b36c3bd52f9df56746196a0cf2b3ac14  gcc/tree-ssa-coalesce.cc
  7de85a2bd407435f95828a5c4e12f826  gcc/tree-ssa-coalesce.h
  121090f76aa83f677c00129216885e7e  gcc/tree-ssa-copy.cc
! cdc06708001757c11cec97905096052e  gcc/tree-ssa-dce.cc
  60dcee04d4b692977781318ef4a7aaf8  gcc/tree-ssa-dce.h
  6beb278a5f33cf9f78a1b9d49889185b  gcc/tree-ssa-dom.cc
  ec31925fe8431d27258939fc79f1f02e  gcc/tree-ssa-dom.h
  ec4fb47e62593f549e393a7e359eab42  gcc/tree-ssa-dse.cc
  1df01d660e0f98ade0ae7a3152aa33ed  gcc/tree-ssa-dse.h
! d21ba1ef2666b542eb7f335de8514fb3  gcc/tree-ssa-forwprop.cc
  248183d5c026a6265d43c63a90f41a31  gcc/tree-ssa-ifcombine.cc
  417a76837cd2f895f07d02485a3cdffe  gcc/tree-ssa-ifcombine.h
  b1c1f1362ac401ede3373f8aa23c02f1  gcc/tree-ssa-live.cc
  7c36b95c9d109be3302936ceed49fb4f  gcc/tree-ssa-live.h
  8810d451bbe1958d41d972bc0224c156  gcc/tree-ssa-loop-ch.cc
! d318cb186caea47cbda1132b6c111843  gcc/tree-ssa-loop-im.cc
  972578d2900bb38415f9eb02b271096c  gcc/tree-ssa-loop-ivcanon.cc
! 0fabb8517c1852a297b33aefae0a4f8d  gcc/tree-ssa-loop-ivopts.cc
  73db7c26eb3c2afa63524b388a9849fd  gcc/tree-ssa-loop-ivopts.h
  f084337b877c38fa179ae0f14738ee83  gcc/tree-ssa-loop-manip.cc
  035c28a41f0d6337f42b24ced6477de5  gcc/tree-ssa-loop-manip.h
*************** f7b409734eec08cd9a87244dc663df3a  gcc/tr
*** 133978,133990 ****
  b40e503b1c066e432f44fab811edde5a  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 68eba1cf15aa2871c4d68fd98980729f  gcc/tree-ssa-math-opts.cc
! fa83f982a805985b3a3da2ca5e10e43a  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
  ebd873d370c7679b934448f40ae3ec17  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
! e44b0626464940cf1e9b857320ec790f  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
  6e6117c73429cd3635e978bbc73398a5  gcc/tree-ssa-reassoc.cc
--- 134261,134273 ----
  b40e503b1c066e432f44fab811edde5a  gcc/tree-ssa-loop-unswitch.cc
  faa18178392bba086edee765e464318c  gcc/tree-ssa-loop.cc
  c1590659dad2b41a69adb7654db65644  gcc/tree-ssa-loop.h
! 54030144b22461574bcb5df4b36da06b  gcc/tree-ssa-math-opts.cc
! d9c1a707b0689a42a82fe1fed6004f53  gcc/tree-ssa-math-opts.h
  56d25f9d7a5f35aa3637460c00b7eb7e  gcc/tree-ssa-operands.cc
  f83d0b12185538e6f679296bebfe3d2f  gcc/tree-ssa-operands.h
  ebd873d370c7679b934448f40ae3ec17  gcc/tree-ssa-phiopt.cc
  fe5ca56c2551cb5cbd256cfafdcabecd  gcc/tree-ssa-phiprop.cc
! f02a6ba2c827456d0c3cdb49275920e4  gcc/tree-ssa-pre.cc
  f39acc236b21f9150a1ef4359aef585e  gcc/tree-ssa-propagate.cc
  d38017eb69a50f24b5e47ee97928afde  gcc/tree-ssa-propagate.h
  6e6117c73429cd3635e978bbc73398a5  gcc/tree-ssa-reassoc.cc
*************** fcb7f7c869cc3f1aa8b3ea9de357f4ab  gcc/tr
*** 134001,134016 ****
  f3e7c56f55d15a7ad4c88bc40bad8aa5  gcc/tree-ssa-tail-merge.cc
  4835f0b56bdf88ee25d6d6e08808a7db  gcc/tree-ssa-ter.cc
  ade30359e437d413371ab6bf896f2aa8  gcc/tree-ssa-ter.h
! f409c4d51a1fea77bc648d20942b70ec  gcc/tree-ssa-threadbackward.cc
  5957c03e6224f408fea9feda5dc9ade5  gcc/tree-ssa-threadedge.cc
  68901eab6fa42a8561fa69c7ce55bf1d  gcc/tree-ssa-threadedge.h
! 5eaf91b9a03861ce39b4478c6bb848e9  gcc/tree-ssa-threadupdate.cc
! 9a23dad40361ccf83cef995bf6f1eb7f  gcc/tree-ssa-threadupdate.h
  0b038be05a994656b633b1dad37e5247  gcc/tree-ssa-uncprop.cc
  1fdfe92b2f91507fee3530366a88d8c5  gcc/tree-ssa-uninit.cc
  9efa39c096ff342ed062200d36b3c7a2  gcc/tree-ssa.cc
  070343f0d359685a1e4b6492f3a41e29  gcc/tree-ssa.h
! 0edecb6fd508e63d98f2094545afe9f4  gcc/tree-ssanames.cc
  90fbd5cfafe635bc28561bc0092642e2  gcc/tree-ssanames.h
  9800375f31e457a30cf501959cec78df  gcc/tree-stdarg.cc
  208d28432e9ae5fc3f0dd219bf094d10  gcc/tree-stdarg.h
--- 134284,134299 ----
  f3e7c56f55d15a7ad4c88bc40bad8aa5  gcc/tree-ssa-tail-merge.cc
  4835f0b56bdf88ee25d6d6e08808a7db  gcc/tree-ssa-ter.cc
  ade30359e437d413371ab6bf896f2aa8  gcc/tree-ssa-ter.h
! f5075a603491d0b4b548a248cbdc32cd  gcc/tree-ssa-threadbackward.cc
  5957c03e6224f408fea9feda5dc9ade5  gcc/tree-ssa-threadedge.cc
  68901eab6fa42a8561fa69c7ce55bf1d  gcc/tree-ssa-threadedge.h
! 8416f93e46cc19ba1ed45d9116a65f7c  gcc/tree-ssa-threadupdate.cc
! 6ae22a129e976993fbaac3835c48fed3  gcc/tree-ssa-threadupdate.h
  0b038be05a994656b633b1dad37e5247  gcc/tree-ssa-uncprop.cc
  1fdfe92b2f91507fee3530366a88d8c5  gcc/tree-ssa-uninit.cc
  9efa39c096ff342ed062200d36b3c7a2  gcc/tree-ssa.cc
  070343f0d359685a1e4b6492f3a41e29  gcc/tree-ssa.h
! da8ea172e0950595b760417bdb021e73  gcc/tree-ssanames.cc
  90fbd5cfafe635bc28561bc0092642e2  gcc/tree-ssanames.h
  9800375f31e457a30cf501959cec78df  gcc/tree-stdarg.cc
  208d28432e9ae5fc3f0dd219bf094d10  gcc/tree-stdarg.h
*************** fa20fc0102b6036d5fa58b953c127e15  gcc/tr
*** 134025,134043 ****
  43fbcc51e0b7cfe300481b1408f494ea  gcc/tree-vect-generic.cc
  10dc735c7b271ce8c1ba325571ec3a59  gcc/tree-vect-loop-manip.cc
  525520454568aa2ac104fdd2e856c0a0  gcc/tree-vect-loop.cc
! 6f238976dd73de0dfaea859c22bd719d  gcc/tree-vect-patterns.cc
! 69b737c073eebd07245e04ab6c22c2cc  gcc/tree-vect-slp-patterns.cc
! f22b693c3a3b03f425a2e6f8ae1e67f3  gcc/tree-vect-slp.cc
! 36919fcf1e86d25e2ea2b79f64a4bf20  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  a87f80d9a1405f816a0b6d544400beef  gcc/tree-vectorizer.cc
! a9df432a6b74231f4858638ca4c3306b  gcc/tree-vectorizer.h
  a95d3232c0c2f689728a28b57249b8f7  gcc/tree-vrp.cc
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
! e8fabd82e3c45f0031ae442a912f752a  gcc/tree.cc
  5e9c53a573546d9a37c30e50e76f7e61  gcc/tree.def
! c4c670c1bae037b3de3b4934eeb0df98  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
--- 134308,134326 ----
  43fbcc51e0b7cfe300481b1408f494ea  gcc/tree-vect-generic.cc
  10dc735c7b271ce8c1ba325571ec3a59  gcc/tree-vect-loop-manip.cc
  525520454568aa2ac104fdd2e856c0a0  gcc/tree-vect-loop.cc
! 0cc046a7dcbeca6803fafbcb38ce07aa  gcc/tree-vect-patterns.cc
! c9a63a1d9504fc1c0c16dd1cee09fc33  gcc/tree-vect-slp-patterns.cc
! b2de9d43937b13b67a245c20e8245902  gcc/tree-vect-slp.cc
! 9de846d8a4ca63954d7e6c152e32ce91  gcc/tree-vect-stmts.cc
  42032e04f389a2e0f43fbb46ac091dac  gcc/tree-vector-builder.cc
  4a1b4947e64a076fdca46d14aab2181f  gcc/tree-vector-builder.h
  a87f80d9a1405f816a0b6d544400beef  gcc/tree-vectorizer.cc
! 952e2adf81b3d26e58847c1888f78f0c  gcc/tree-vectorizer.h
  a95d3232c0c2f689728a28b57249b8f7  gcc/tree-vrp.cc
  c946b0d59b15393b95e356052c027eed  gcc/tree-vrp.h
! a4ab2585ba7a7ead01f4206ea9b0bd59  gcc/tree.cc
  5e9c53a573546d9a37c30e50e76f7e61  gcc/tree.def
! c72b2f9fd2d4c316acb32685c62bcb50  gcc/tree.h
  56652e612288132aa8395fdf720b0146  gcc/treestruct.def
  6c6350469a3dbb37f658f247d16ed872  gcc/tristate.cc
  704359710c2d40a58b6646b2da626443  gcc/tristate.h
*************** df6e60fd226c010029982dccb67d2e71  gcc/va
*** 134054,134069 ****
  8e6c00c7b13e3ea0af5115a1da91a388  gcc/valtrack.h
  e904de1854afc7cd34a51dc8be49131d  gcc/value-prof.cc
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
! 94b23ebf78fac3c6088cda5028dd1b89  gcc/value-query.cc
! c559980f2936e62bb80a512b1682d0fd  gcc/value-query.h
  ba27af0208a911fa45b8281e0f0ae4ff  gcc/value-range-pretty-print.cc
  2ac29a8fee451f101da64d0a64eefa26  gcc/value-range-pretty-print.h
  b2347369da35d2378529346b64cf18a9  gcc/value-range-storage.cc
  0c753f49985507bc8fc3b2ed9ec2a8e5  gcc/value-range-storage.h
  e6c68f601ad5aaf8554e54413b7edd04  gcc/value-range.cc
  e08235d49136d61df5ea3414ee846890  gcc/value-range.h
! cf925fc455e2513c7931ffb7eb85953b  gcc/value-relation.cc
! 340a10ca79ad1855bfa479914f030113  gcc/value-relation.h
  6454bc331f2f63645c4661fbd04fec5e  gcc/var-tracking.cc
  abe4064b9258df5b6c87d9394dc9b67c  gcc/varasm.cc
  183473e8cac5bad9279eb1937e4edda9  gcc/varasm.h
--- 134337,134352 ----
  8e6c00c7b13e3ea0af5115a1da91a388  gcc/valtrack.h
  e904de1854afc7cd34a51dc8be49131d  gcc/value-prof.cc
  062dd0b6b7d499b7d7b9a11718fe3ecb  gcc/value-prof.h
! b005966a16636f5b5c4824fc5ca8616e  gcc/value-query.cc
! 085752c48650a30ac26aefddea4089e5  gcc/value-query.h
  ba27af0208a911fa45b8281e0f0ae4ff  gcc/value-range-pretty-print.cc
  2ac29a8fee451f101da64d0a64eefa26  gcc/value-range-pretty-print.h
  b2347369da35d2378529346b64cf18a9  gcc/value-range-storage.cc
  0c753f49985507bc8fc3b2ed9ec2a8e5  gcc/value-range-storage.h
  e6c68f601ad5aaf8554e54413b7edd04  gcc/value-range.cc
  e08235d49136d61df5ea3414ee846890  gcc/value-range.h
! c2492da002cee97faedb60dac56979bc  gcc/value-relation.cc
! a7ec217b8b3198167945ab4f92516082  gcc/value-relation.h
  6454bc331f2f63645c4661fbd04fec5e  gcc/var-tracking.cc
  abe4064b9258df5b6c87d9394dc9b67c  gcc/varasm.cc
  183473e8cac5bad9279eb1937e4edda9  gcc/varasm.h
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 134369,134375 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  c94add0032978604acf65591bb86d2d6  libcody/server.cc
! dec14e87d7e781eb55909329a9114782  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  4f1e80b433907c013fc6e4eaf2b0e8aa  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
--- 134652,134658 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  c94add0032978604acf65591bb86d2d6  libcody/server.cc
! 87ae1d41aca127acd6637d3d733fa64b  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
  4f1e80b433907c013fc6e4eaf2b0e8aa  libcpp/Makefile.in
  b07c7863f0e7ad4e6a0915d66fc9e582  libcpp/aclocal.m4
*************** a1437b4af2ebadc3d027a5323db61b96  libcpp
*** 134392,134398 ****
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
  62fc2bcb89c7159858cf6eb3824b0f42  libcpp/init.cc
  92efe2d2caf7d62e3a01e79c3fd610fc  libcpp/internal.h
! 14612b7b1f257eea5be192cf2447b079  libcpp/lex.cc
  87f0da9fbeaf56c81c993caee314b88d  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9dfdba40f9dde1d3e01f30009e992baf  libcpp/macro.cc
--- 134675,134681 ----
  1e65760d4159f777cf02dedef8a52357  libcpp/include/symtab.h
  62fc2bcb89c7159858cf6eb3824b0f42  libcpp/init.cc
  92efe2d2caf7d62e3a01e79c3fd610fc  libcpp/internal.h
! bd18a4c87f77ac17fb339014a861ec32  libcpp/lex.cc
  87f0da9fbeaf56c81c993caee314b88d  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
  9dfdba40f9dde1d3e01f30009e992baf  libcpp/macro.cc
*************** c861703e5b987a207224e25a42109628  libga6
*** 134954,134960 ****
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  155cefb69ce6e5cbc63301ec31ca4bcb  libga68/sppp.awk
  2fa97828e3e0465a81a613f3f4173bdd  libga68/standard.a68.in
! cad6f36d984feda868fe02fd79d87cf5  libgcc/ChangeLog
  6926dcea143d4f6166d7feff9e8ee35a  libgcc/Makefile.in
  2784b3778636af2fb69b003fd8743e11  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
--- 135237,135243 ----
  095aff369c31681c96b933fbedd8e05f  libga68/posix.a68
  155cefb69ce6e5cbc63301ec31ca4bcb  libga68/sppp.awk
  2fa97828e3e0465a81a613f3f4173bdd  libga68/standard.a68.in
! ee1afce52172575c1bb2dcdd9d7e5951  libgcc/ChangeLog
  6926dcea143d4f6166d7feff9e8ee35a  libgcc/Makefile.in
  2784b3778636af2fb69b003fd8743e11  libgcc/config.host
  46412830a2ee8a02503ccc921912c3cf  libgcc/config.in
*************** b7bdc64c03d62f87f61d3d8a61a75d2d  libgcc
*** 136528,136534 ****
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 8126e40038d2df503409fa4739478180  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
--- 136811,136817 ----
  227525d7193394128a83ce15e7642842  libgcc/vtv_start.c
  23ad2a8d256ba5dca28382d64a20e8f2  libgcc/vtv_start_preinit.c
  e50c29294062dfe571c9c053a8ec217b  libgcobol/.gitignore
! 863186be67c00fab368b012bf940754d  libgcobol/ChangeLog
  bec1e79fc8ada70ed4ac3dc61a33d576  libgcobol/LICENSE
  8b9a5263fc79d367bdafa609a2ac1363  libgcobol/Makefile.am
  d97f1f2b9efb3a8fa8c9db9a04ea78db  libgcobol/Makefile.in
*************** db909eb177d56d8e01ec76d50d4876ff  libgco
*** 136588,136594 ****
  19a12a69d98b1b2b0a80009a9d568a52  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
! 96b721e88c5f79776cedad463373ad78  libgcobol/posix/README.md
  6c13b507d443d1aa5c60a6b8939dd068  libgcobol/posix/bin/Makefile
  de91f2c442f5429dd57a380d4e77abd4  libgcobol/posix/bin/headers
  684a25ba570455c35402148c3b528c13  libgcobol/posix/bin/scrape.awk
--- 136871,136877 ----
  19a12a69d98b1b2b0a80009a9d568a52  libgcobol/libgcobol.h
  469e0f6e21e357ff8b53b9d17373a6c8  libgcobol/libgcobol.spec.in
  88c1134ff3ee63c326541ce3f35f6699  libgcobol/m4/autoconf.m4
! 3c13ce94849ae290e0e9f10c0d2e04de  libgcobol/posix/README.md
  6c13b507d443d1aa5c60a6b8939dd068  libgcobol/posix/bin/Makefile
  de91f2c442f5429dd57a380d4e77abd4  libgcobol/posix/bin/headers
  684a25ba570455c35402148c3b528c13  libgcobol/posix/bin/scrape.awk
*************** c057a9c0bf247b066e7de6f079edb2f6  libgco
*** 136616,136622 ****
  53ea3400302d55a6ef7d425b543e4646  libgcobol/posix/shim/fstat.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
  cd58336ef952882f226b59a93565ff3a  libgcobol/posix/shim/lseek.cc
! 51c9656a8295c396ec0b112f38b8bcb5  libgcobol/posix/shim/open.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
  0627b6b8874b55669b3c13b6a52ef590  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
--- 136899,136905 ----
  53ea3400302d55a6ef7d425b543e4646  libgcobol/posix/shim/fstat.cc
  a7b68930ae7325253870cb373c7849f6  libgcobol/posix/shim/localtime.cc
  cd58336ef952882f226b59a93565ff3a  libgcobol/posix/shim/lseek.cc
! 6a4b828a3d0cd5e461e19eabfecefff4  libgcobol/posix/shim/open.cc
  308a02a974673252b622e5bbca74784d  libgcobol/posix/shim/stat.cc
  0627b6b8874b55669b3c13b6a52ef590  libgcobol/posix/shim/stat.h
  feda976b2ecc3ba909f736aeb43feb48  libgcobol/posix/shim/tm.h
*************** a3a7e9ca6057da9ca42e03e41e1c73f7  libgo/
*** 143240,143246 ****
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! e7dbc46d4b5d9c4fe3c08c90983756f2  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  e1d869816ce58d8fdc05a55313f8c194  libgomp/Makefile.am
  4da024f3aacefa7a1d2396c494ae6526  libgomp/Makefile.in
--- 143523,143529 ----
  dcdf1b680b15b372bdb64cc5107d51b6  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! d407cbea049f22702d91093177fd13a6  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
  e1d869816ce58d8fdc05a55313f8c194  libgomp/Makefile.am
  4da024f3aacefa7a1d2396c494ae6526  libgomp/Makefile.in
*************** c447ed13e1d693f4b983b83ca2478aa8  libgom
*** 143294,143300 ****
  c4edbd7c2c1205e40ebb4fe0f1270559  libgomp/config/gcn/target.c
  55d3b1a161a020a1c6c18b3e41dd9420  libgomp/config/gcn/task.c
  8c261f3d46bea4a014a7dc403f84226a  libgomp/config/gcn/team.c
! 6af7b618f075853ed665f73e73dc8973  libgomp/config/gcn/teams.c
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
  7a0a6a6d5cb567d0de762d9dbe76d9be  libgomp/config/linux/affinity.c
--- 143577,143583 ----
  c4edbd7c2c1205e40ebb4fe0f1270559  libgomp/config/gcn/target.c
  55d3b1a161a020a1c6c18b3e41dd9420  libgomp/config/gcn/task.c
  8c261f3d46bea4a014a7dc403f84226a  libgomp/config/gcn/team.c
! 5e2620cca07f19f5e24424c52c3933df  libgomp/config/gcn/teams.c
  de27fe416c22021c880c3ef4d002aa91  libgomp/config/gcn/time.c
  7bff56f23fd667518b0ce11825f3a66b  libgomp/config/hpux/plugin-suffix.h
  7a0a6a6d5cb567d0de762d9dbe76d9be  libgomp/config/linux/affinity.c
*************** ca14627edee8edaa51ae0d2606f17be4  libgom
*** 143340,143346 ****
  d4ef411ea34a5e21bbc28b10c1f3b9cf  libgomp/config/nvptx/target.c
  1ccc40324f0cdb57674db555b003e81d  libgomp/config/nvptx/task.c
  f3acd222abbaa3769c5ea50494029c42  libgomp/config/nvptx/team.c
! 9f250b42c9a318d63e2e9da4d84142f8  libgomp/config/nvptx/teams.c
  1e82aa2630626e511ff0d1341a76d2fb  libgomp/config/nvptx/time.c
  f71a2c1760df3cace4ad96cbc50e724c  libgomp/config/posix/bar.c
  b72c763edbd3bad13d1a4137ea03cf10  libgomp/config/posix/bar.h
--- 143623,143629 ----
  d4ef411ea34a5e21bbc28b10c1f3b9cf  libgomp/config/nvptx/target.c
  1ccc40324f0cdb57674db555b003e81d  libgomp/config/nvptx/task.c
  f3acd222abbaa3769c5ea50494029c42  libgomp/config/nvptx/team.c
! 90fbf14adcbbe45e99abcdec620a3013  libgomp/config/nvptx/teams.c
  1e82aa2630626e511ff0d1341a76d2fb  libgomp/config/nvptx/time.c
  f71a2c1760df3cace4ad96cbc50e724c  libgomp/config/posix/bar.c
  b72c763edbd3bad13d1a4137ea03cf10  libgomp/config/posix/bar.h
*************** eb820417a149917488e3062fe209a8a9  libgom
*** 143390,143396 ****
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  436a8f8539152cc163fe78400d24bb6f  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
! 73572dbe2e708fef14599e31f3d23676  libgomp/loop.c
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
  806319a3f4077f3dfe6699ec2e9051c9  libgomp/numa.c
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
--- 143673,143679 ----
  1d54928ce4032885323fb921fd1df788  libgomp/libgomp_f.h.in
  436a8f8539152cc163fe78400d24bb6f  libgomp/libgomp_g.h
  26474764313104462f3252f8ce962c10  libgomp/lock.c
! ea93009cc95f13f6bd1f2138281055a3  libgomp/loop.c
  80446fe6cd6193819bea8853c8dcc525  libgomp/loop_ull.c
  806319a3f4077f3dfe6699ec2e9051c9  libgomp/numa.c
  6688bf57d8344fc3ab514e0ca98629a5  libgomp/oacc-async.c
*************** c97c3185977e98ffe0f162dd3abc11a0  libgom
*** 143434,143440 ****
  9423c0473a15a8d13b93375561ef5058  libgomp/task.c
  7f9c7ebe470f1e58806b1136258bd786  libgomp/taskloop.c
  abb5e2202aa84d67c967b7dc176fc937  libgomp/team.c
! d31ee1aed78a9c4a2dd594426f04717e  libgomp/teams.c
  ae0dcb4c08025996b4bf4550cf72832e  libgomp/testsuite/Makefile.am
  2c4f8874086e4e29d9e1638e65b409b3  libgomp/testsuite/Makefile.in
  4f0fd32ecaf8eb341fbaa1f46bfaf2a2  libgomp/testsuite/config/default.exp
--- 143717,143723 ----
  9423c0473a15a8d13b93375561ef5058  libgomp/task.c
  7f9c7ebe470f1e58806b1136258bd786  libgomp/taskloop.c
  abb5e2202aa84d67c967b7dc176fc937  libgomp/team.c
! 52968e00950981292720b2c1257767af  libgomp/teams.c
  ae0dcb4c08025996b4bf4550cf72832e  libgomp/testsuite/Makefile.am
  2c4f8874086e4e29d9e1638e65b409b3  libgomp/testsuite/Makefile.in
  4f0fd32ecaf8eb341fbaa1f46bfaf2a2  libgomp/testsuite/config/default.exp
*************** ee0115a370a5b6a9e6990b3d15bdd431  libgom
*** 143976,143982 ****
  14ac121f9dbf4675cb527a13f401e0c6  libgomp/testsuite/libgomp.c-c++-common/for-9.c
  e9d16978781d5a6bb09d992e31a71f82  libgomp/testsuite/libgomp.c-c++-common/for-static-1.c
  427aec3091596e79a785168dfa374671  libgomp/testsuite/libgomp.c-c++-common/for-static-2.c
! 3cbb6b7c240d89b5497830215688dbbc  libgomp/testsuite/libgomp.c-c++-common/for-static-3.c
  a2dc6aeb34413f354719647b6254bd78  libgomp/testsuite/libgomp.c-c++-common/for-static.h
  38b84120e95c50bcbe995ff760fb2f46  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c
  0a53af92f72022a91eded9bc193bc5c0  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded.c
--- 144259,144265 ----
  14ac121f9dbf4675cb527a13f401e0c6  libgomp/testsuite/libgomp.c-c++-common/for-9.c
  e9d16978781d5a6bb09d992e31a71f82  libgomp/testsuite/libgomp.c-c++-common/for-static-1.c
  427aec3091596e79a785168dfa374671  libgomp/testsuite/libgomp.c-c++-common/for-static-2.c
! 6b7a3c3f7487a9b9465deb85d61a6170  libgomp/testsuite/libgomp.c-c++-common/for-static-3.c
  a2dc6aeb34413f354719647b6254bd78  libgomp/testsuite/libgomp.c-c++-common/for-static.h
  38b84120e95c50bcbe995ff760fb2f46  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c
  0a53af92f72022a91eded9bc193bc5c0  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded.c
*************** e79bc2530648a870e2f0ff4c36e184f2  libgom
*** 146022,146028 ****
  7ec12a5b107bbcc52d745bea79a48720  libgomp/testsuite/libgomp.oacc-fortran/host_data-2.f90
  cf2a27da59d3b7856348e6c1707bc944  libgomp/testsuite/libgomp.oacc-fortran/host_data-3.f
  63d16960cfabb69ecf97cf86440e8178  libgomp/testsuite/libgomp.oacc-fortran/host_data-4.f90
! e206d5fdc2a6366ff1ccbf7d55ab2b7d  libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
  d2542a22538ab361b2100d4ecf933361  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
  9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
  cdbf1f47a43ac76d0e207547465f407f  libgomp/testsuite/libgomp.oacc-fortran/init-1.f90
--- 146305,146311 ----
  7ec12a5b107bbcc52d745bea79a48720  libgomp/testsuite/libgomp.oacc-fortran/host_data-2.f90
  cf2a27da59d3b7856348e6c1707bc944  libgomp/testsuite/libgomp.oacc-fortran/host_data-3.f
  63d16960cfabb69ecf97cf86440e8178  libgomp/testsuite/libgomp.oacc-fortran/host_data-4.f90
! deca4df38b197c88ee65b970ffdcad4a  libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
  d2542a22538ab361b2100d4ecf933361  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
  9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
  cdbf1f47a43ac76d0e207547465f407f  libgomp/testsuite/libgomp.oacc-fortran/init-1.f90
*************** a73d560a3ba317c5ad0a7919d87b4b6d  libssp
*** 148936,148942 ****
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! ef75290b252813e184eb767a494c0aa5  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 149219,149225 ----
  7d75fa0d30318408fe4cd91d9cbe3ac7  libssp/vsnprintf-chk.c
  e9ff0f4bdd1be75a507480ed1267459d  libssp/vsprintf-chk.c
  9e2de2e1f20ab0ffa2201164de02824f  libstdc++-v3/.editorconfig
! 0c0485189f662b2000042967eed6544e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** c0c7c8e43d693e3f89c938bb151b0717  libstd
*** 149099,149105 ****
  f298b616865e5fe00d050bee98304ae2  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
  9bc43ac98a94981e3d0a503f2fb3c582  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
  46756953e7a2d602e3f18f2d1f8efcb8  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 50ef1895327c3f7cc7fe8a06f2d3937c  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
  881fc2091c4266e0e9be93a446c3f35b  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
  7a7880baa568e9b7ffc33bb78ab9efe5  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
  7bc82752164f943480a015890f520e78  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
--- 149382,149388 ----
  f298b616865e5fe00d050bee98304ae2  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
  9bc43ac98a94981e3d0a503f2fb3c582  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
  46756953e7a2d602e3f18f2d1f8efcb8  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 57d5e65ad4f1bc9b96ad56dad0937b3c  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
  881fc2091c4266e0e9be93a446c3f35b  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
  7a7880baa568e9b7ffc33bb78ab9efe5  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
  7bc82752164f943480a015890f520e78  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
*************** a15f9dcf8ee271924862e5e3c21b9bd5  libstd
*** 149636,149642 ****
  57c20bfd264af582740709b6953c165f  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
  8890a18d951d6a850abe7666583a1d50  libstdc++-v3/include/bits/cpyfunc_impl.h
! aa7442d2c3a0b4a7dec18616be5c7a2e  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
  0761a634c5ad798abd93ae68d0f8f1e2  libstdc++-v3/include/bits/erase_if.h
--- 149919,149925 ----
  57c20bfd264af582740709b6953c165f  libstdc++-v3/include/bits/cow_string.h
  97d90498ee103018406f19468a5500ec  libstdc++-v3/include/bits/cpp_type_traits.h
  8890a18d951d6a850abe7666583a1d50  libstdc++-v3/include/bits/cpyfunc_impl.h
! 2706aa6d33f04ea9db2794cb7d390db5  libstdc++-v3/include/bits/deque.tcc
  b3b7f49179a45d11260480d53dd3cf0e  libstdc++-v3/include/bits/elements_of.h
  021c9e8af006934e2df53e05441f3d8c  libstdc++-v3/include/bits/enable_special_members.h
  0761a634c5ad798abd93ae68d0f8f1e2  libstdc++-v3/include/bits/erase_if.h
*************** fa05c4e39f6430965ffaf3e65ed36b7b  libstd
*** 149698,149708 ****
  70fb2f8fab4692fafd8fa11d91d01edd  libstdc++-v3/include/bits/parse_numbers.h
  6a72ede97c52245c80e7794718ee0021  libstdc++-v3/include/bits/postypes.h
  244c55c9dbbe4afb3b877765deccda78  libstdc++-v3/include/bits/predefined_ops.h
! b07bdc6c6cec90e9cf7a74c52af0e9fc  libstdc++-v3/include/bits/print.h
  097b3f6fff8834167e5a5eb29dc9a79c  libstdc++-v3/include/bits/ptr_traits.h
  e9057d3a64660954bf7134e2fb721b51  libstdc++-v3/include/bits/quoted_string.h
! 7f040110ed186d6ef95c737439fa58b3  libstdc++-v3/include/bits/random.h
! 05fafe71cf4a38dcf38e8520116abb8e  libstdc++-v3/include/bits/random.tcc
  4bbb7559472c9a9d579b509d462b9f49  libstdc++-v3/include/bits/range_access.h
  91a3a127b4d8b0d05094dd720c6074ae  libstdc++-v3/include/bits/ranges_algo.h
  2376637350495a1dbd9c27901ed68027  libstdc++-v3/include/bits/ranges_algobase.h
--- 149981,149991 ----
  70fb2f8fab4692fafd8fa11d91d01edd  libstdc++-v3/include/bits/parse_numbers.h
  6a72ede97c52245c80e7794718ee0021  libstdc++-v3/include/bits/postypes.h
  244c55c9dbbe4afb3b877765deccda78  libstdc++-v3/include/bits/predefined_ops.h
! bc61e9d072feef1fd64ba89df95c44fb  libstdc++-v3/include/bits/print.h
  097b3f6fff8834167e5a5eb29dc9a79c  libstdc++-v3/include/bits/ptr_traits.h
  e9057d3a64660954bf7134e2fb721b51  libstdc++-v3/include/bits/quoted_string.h
! eb541990a4ff716083a2fb8bf8fbbd39  libstdc++-v3/include/bits/random.h
! 02cc78ff3b292d0f22a17a5ad741200a  libstdc++-v3/include/bits/random.tcc
  4bbb7559472c9a9d579b509d462b9f49  libstdc++-v3/include/bits/range_access.h
  91a3a127b4d8b0d05094dd720c6074ae  libstdc++-v3/include/bits/ranges_algo.h
  2376637350495a1dbd9c27901ed68027  libstdc++-v3/include/bits/ranges_algobase.h
*************** ddd5324ee251c78325d4a47b8a18cdea  libstd
*** 149740,149746 ****
  71ba840e0efcba9d0844b67d317a8d5e  libstdc++-v3/include/bits/simd_mask_reductions.h
  8764681e55d9cb9e915b0d0fab4f27c6  libstdc++-v3/include/bits/simd_math.h
  fce0564b07dd0ef981a64c683bfadc5a  libstdc++-v3/include/bits/simd_reductions.h
! a8d6c724afcbcf75edbb299b51fa13de  libstdc++-v3/include/bits/simd_vec.h
  d25c8fafcd12b48aa64fb5d49a33f6c2  libstdc++-v3/include/bits/simd_x86.h
  c7864edd44ec162778d0cb89b0129937  libstdc++-v3/include/bits/slice_array.h
  78e195bd62ca638897505b698c3193de  libstdc++-v3/include/bits/specfun.h
--- 150023,150029 ----
  71ba840e0efcba9d0844b67d317a8d5e  libstdc++-v3/include/bits/simd_mask_reductions.h
  8764681e55d9cb9e915b0d0fab4f27c6  libstdc++-v3/include/bits/simd_math.h
  fce0564b07dd0ef981a64c683bfadc5a  libstdc++-v3/include/bits/simd_reductions.h
! b6a61392fad6fea0a6104ad9c9366b0f  libstdc++-v3/include/bits/simd_vec.h
  d25c8fafcd12b48aa64fb5d49a33f6c2  libstdc++-v3/include/bits/simd_x86.h
  c7864edd44ec162778d0cb89b0129937  libstdc++-v3/include/bits/slice_array.h
  78e195bd62ca638897505b698c3193de  libstdc++-v3/include/bits/specfun.h
*************** a9b017ab9e6eb2ad8847aa0ec2b12cff  libstd
*** 149753,149763 ****
  f9e306b8cee74f13390d2c91f994d69f  libstdc++-v3/include/bits/stdexcept_throw.h
  4ebc2f0739aa489c68b54dccba9f2290  libstdc++-v3/include/bits/stdexcept_throwdef.h
  9414705c520a817ae3b22dec29912b18  libstdc++-v3/include/bits/stdexcept_throwfwd.h
! eae71ddcefd0eda0b73f00439edf8ed4  libstdc++-v3/include/bits/stl_algo.h
! 67a3769f143eec167c37d2842987f547  libstdc++-v3/include/bits/stl_algobase.h
  93fb042c4fe4f9ba7e63ccbb7c5f3845  libstdc++-v3/include/bits/stl_bvector.h
  dee57b6a88249dded126c87e67e24d82  libstdc++-v3/include/bits/stl_construct.h
! 799a9817eb24388b9de8e0ee3f07b8f1  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  c0f29373700aa4d52ef22cddc3975b26  libstdc++-v3/include/bits/stl_heap.h
  5bb92c950881ea1e58555eea3f491411  libstdc++-v3/include/bits/stl_iterator.h
--- 150036,150046 ----
  f9e306b8cee74f13390d2c91f994d69f  libstdc++-v3/include/bits/stdexcept_throw.h
  4ebc2f0739aa489c68b54dccba9f2290  libstdc++-v3/include/bits/stdexcept_throwdef.h
  9414705c520a817ae3b22dec29912b18  libstdc++-v3/include/bits/stdexcept_throwfwd.h
! 2e9e206833b7472aa19acf756f2850a3  libstdc++-v3/include/bits/stl_algo.h
! 68be4ab0ded21b28adf606798ce4dcf4  libstdc++-v3/include/bits/stl_algobase.h
  93fb042c4fe4f9ba7e63ccbb7c5f3845  libstdc++-v3/include/bits/stl_bvector.h
  dee57b6a88249dded126c87e67e24d82  libstdc++-v3/include/bits/stl_construct.h
! ae3039bf7841dda3aaada36da6631f2a  libstdc++-v3/include/bits/stl_deque.h
  dad6f36c0bb9a2b5c5cfe42d6904e350  libstdc++-v3/include/bits/stl_function.h
  c0f29373700aa4d52ef22cddc3975b26  libstdc++-v3/include/bits/stl_heap.h
  5bb92c950881ea1e58555eea3f491411  libstdc++-v3/include/bits/stl_iterator.h
*************** fc37d0e099f85ad87857bb0e58413e4e  libstd
*** 149769,149782 ****
  cf92a268e86eb61962fdbf10086b2236  libstdc++-v3/include/bits/stl_multiset.h
  092fe17b6b3890e4eb295f8e06093a51  libstdc++-v3/include/bits/stl_numeric.h
  f2b2f381cae0b54e8fdd0103b44ef7f0  libstdc++-v3/include/bits/stl_pair.h
! a47ffb5012874660669e1eb0432eba50  libstdc++-v3/include/bits/stl_queue.h
  c5fe27c6f3b2737405f15913f248aa5f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  c786caa278e3160f3daa8327ee1002a1  libstdc++-v3/include/bits/stl_relops.h
  3045fc424cd30d4b31742c2fc59e9825  libstdc++-v3/include/bits/stl_set.h
! 2e947ba181d169443bd32dfa77c0e138  libstdc++-v3/include/bits/stl_stack.h
  1c29bd2c226486c0b4016828fd21d761  libstdc++-v3/include/bits/stl_tempbuf.h
  14ac2394f09eced3924bdf86b3305e35  libstdc++-v3/include/bits/stl_tree.h
! 6b5ebf261762096423606222edf5246e  libstdc++-v3/include/bits/stl_uninitialized.h
  5b5fe3133702ab5cc4dc814931795738  libstdc++-v3/include/bits/stl_vector.h
  2c7366439d5d5d987425f6e2434bb9f7  libstdc++-v3/include/bits/stream_iterator.h
  5d9b3cc499e4ec992ba0bb9a3de1d791  libstdc++-v3/include/bits/streambuf.tcc
--- 150052,150065 ----
  cf92a268e86eb61962fdbf10086b2236  libstdc++-v3/include/bits/stl_multiset.h
  092fe17b6b3890e4eb295f8e06093a51  libstdc++-v3/include/bits/stl_numeric.h
  f2b2f381cae0b54e8fdd0103b44ef7f0  libstdc++-v3/include/bits/stl_pair.h
! cfadf1883070620dcb531fdb35cd64d5  libstdc++-v3/include/bits/stl_queue.h
  c5fe27c6f3b2737405f15913f248aa5f  libstdc++-v3/include/bits/stl_raw_storage_iter.h
  c786caa278e3160f3daa8327ee1002a1  libstdc++-v3/include/bits/stl_relops.h
  3045fc424cd30d4b31742c2fc59e9825  libstdc++-v3/include/bits/stl_set.h
! 84758c6068f41d01c4fff80f3f09be26  libstdc++-v3/include/bits/stl_stack.h
  1c29bd2c226486c0b4016828fd21d761  libstdc++-v3/include/bits/stl_tempbuf.h
  14ac2394f09eced3924bdf86b3305e35  libstdc++-v3/include/bits/stl_tree.h
! 9bc95c31552d746895c18f749b450818  libstdc++-v3/include/bits/stl_uninitialized.h
  5b5fe3133702ab5cc4dc814931795738  libstdc++-v3/include/bits/stl_vector.h
  2c7366439d5d5d987425f6e2434bb9f7  libstdc++-v3/include/bits/stream_iterator.h
  5d9b3cc499e4ec992ba0bb9a3de1d791  libstdc++-v3/include/bits/streambuf.tcc
*************** ddd4bdc2fa29f8f2aa3386cead9ebcb2  libstd
*** 149801,149808 ****
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  dce382334795c24946cb8838e6fed9e5  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! 5d9bd5987a4f7017d6f0279fe9b613a9  libstdc++-v3/include/bits/version.def
! 058720e59b09c497a912ee429deee7e4  libstdc++-v3/include/bits/version.h
  07c6aeb4ce2629a1da2d63d08e65c0f8  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
--- 150084,150091 ----
  16c6db3f5b1e7b3e37c3febbf4dc4e8c  libstdc++-v3/include/bits/valarray_before.h
  dce382334795c24946cb8838e6fed9e5  libstdc++-v3/include/bits/vec_ops.h
  fe1be23d00db0d87529a75faf3afb98a  libstdc++-v3/include/bits/vector.tcc
! 1d4256ee65bd2c208669ec5fb6098d04  libstdc++-v3/include/bits/version.def
! 21c7146158a4e44d620e7dde04025ff9  libstdc++-v3/include/bits/version.h
  07c6aeb4ce2629a1da2d63d08e65c0f8  libstdc++-v3/include/bits/version.tpl
  d99b1b69e5f87e5a631c8a881d053766  libstdc++-v3/include/c/cassert
  7f5b12607c4d7cbbcf705b672613447b  libstdc++-v3/include/c/cctype
*************** ddcad2ef48c62d7053209fd20d56de52  libstd
*** 149900,149906 ****
  5b540e2bfb811c882e519b52ea6b37f0  libstdc++-v3/include/debug/assertions.h
  43bc24df168bf241336cb295616ecab5  libstdc++-v3/include/debug/bitset
  5a5120ba442619a34f6f6aba86d39daf  libstdc++-v3/include/debug/debug.h
! bbf43c026e138427d4c2f6fb362f3479  libstdc++-v3/include/debug/deque
  baa7e2585de42c6e51eb820e90b56c63  libstdc++-v3/include/debug/formatter.h
  4199ddb13d757d5a7c46dbd4527c6eda  libstdc++-v3/include/debug/forward_list
  d95660c2645f7e9361491fcf14b38da3  libstdc++-v3/include/debug/functions.h
--- 150183,150189 ----
  5b540e2bfb811c882e519b52ea6b37f0  libstdc++-v3/include/debug/assertions.h
  43bc24df168bf241336cb295616ecab5  libstdc++-v3/include/debug/bitset
  5a5120ba442619a34f6f6aba86d39daf  libstdc++-v3/include/debug/debug.h
! e029349dff87b536b7d8920acf1d90e3  libstdc++-v3/include/debug/deque
  baa7e2585de42c6e51eb820e90b56c63  libstdc++-v3/include/debug/formatter.h
  4199ddb13d757d5a7c46dbd4527c6eda  libstdc++-v3/include/debug/forward_list
  d95660c2645f7e9361491fcf14b38da3  libstdc++-v3/include/debug/functions.h
*************** d3e2058b40263b2287f46d84e583b69f  libstd
*** 149943,149955 ****
  d704100997ba3629701a66deecd602e2  libstdc++-v3/include/experimental/bits/net.h
  dbe674cb44d578c2bf92a2642822492a  libstdc++-v3/include/experimental/bits/numeric_traits.h
  3e7dc5f93256207244c7d476ec8c1437  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 64a2319acf2bcb8d5e653df0b93fb1bc  libstdc++-v3/include/experimental/bits/simd.h
  1f4a21c0d9b74821b1c09fcb534eb6aa  libstdc++-v3/include/experimental/bits/simd_builtin.h
  70bae773fcd870ecb698a726efe86f04  libstdc++-v3/include/experimental/bits/simd_converter.h
  2b373d0b5b603ef24f807e1c98b6b9e5  libstdc++-v3/include/experimental/bits/simd_detail.h
  a21e98ba0227a1b973b88098ceb791f9  libstdc++-v3/include/experimental/bits/simd_fixed_size.h
  342b188963334464644ca7f95fdd2efd  libstdc++-v3/include/experimental/bits/simd_math.h
! ebd19bf2f0ddfba2e4c0f871732bd72e  libstdc++-v3/include/experimental/bits/simd_neon.h
  c6720f0a7f2a3f9397a1d015515a6ca6  libstdc++-v3/include/experimental/bits/simd_ppc.h
  0662d0d55ec4b23de175ab4f20cff996  libstdc++-v3/include/experimental/bits/simd_scalar.h
  82cf5cd853fbb734d4d3834ef245bf9a  libstdc++-v3/include/experimental/bits/simd_sve.h
--- 150226,150238 ----
  d704100997ba3629701a66deecd602e2  libstdc++-v3/include/experimental/bits/net.h
  dbe674cb44d578c2bf92a2642822492a  libstdc++-v3/include/experimental/bits/numeric_traits.h
  3e7dc5f93256207244c7d476ec8c1437  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 5e108cbf3546488e71b5872f6d6a8735  libstdc++-v3/include/experimental/bits/simd.h
  1f4a21c0d9b74821b1c09fcb534eb6aa  libstdc++-v3/include/experimental/bits/simd_builtin.h
  70bae773fcd870ecb698a726efe86f04  libstdc++-v3/include/experimental/bits/simd_converter.h
  2b373d0b5b603ef24f807e1c98b6b9e5  libstdc++-v3/include/experimental/bits/simd_detail.h
  a21e98ba0227a1b973b88098ceb791f9  libstdc++-v3/include/experimental/bits/simd_fixed_size.h
  342b188963334464644ca7f95fdd2efd  libstdc++-v3/include/experimental/bits/simd_math.h
! 58c0a57e8924f46073a717e8b8f008d2  libstdc++-v3/include/experimental/bits/simd_neon.h
  c6720f0a7f2a3f9397a1d015515a6ca6  libstdc++-v3/include/experimental/bits/simd_ppc.h
  0662d0d55ec4b23de175ab4f20cff996  libstdc++-v3/include/experimental/bits/simd_scalar.h
  82cf5cd853fbb734d4d3834ef245bf9a  libstdc++-v3/include/experimental/bits/simd_sve.h
*************** f1c08a4c9a736109edfd3c39c60c1669  libstd
*** 150353,150362 ****
  9800a1b3fa32f7d061b22c20e4613e56  libstdc++-v3/include/std/array
  296bd89909b318bdabaa47ea5703c2b3  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
! 085ec2d298f0be079b303330b81b05d1  libstdc++-v3/include/std/bit
  8def829b781a39346d0da630d247e7ee  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
! 14b6d91c13fb07b8ce2bdcf49753a183  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
  841a79fbef033cbe8ca8c554dc66d5b9  libstdc++-v3/include/std/complex
  48a40100ca3cd85337d3b2f0c27e0862  libstdc++-v3/include/std/concepts
--- 150636,150645 ----
  9800a1b3fa32f7d061b22c20e4613e56  libstdc++-v3/include/std/array
  296bd89909b318bdabaa47ea5703c2b3  libstdc++-v3/include/std/atomic
  43d5b40ea90d5c416339579b4b867b3f  libstdc++-v3/include/std/barrier
! 4bf92a370bdfc4ddd107aae31e1c43ab  libstdc++-v3/include/std/bit
  8def829b781a39346d0da630d247e7ee  libstdc++-v3/include/std/bitset
  221c225c0ffb7ac1a214c4da510bfdcc  libstdc++-v3/include/std/charconv
! 53de189132dd71db0c37e52196022bcd  libstdc++-v3/include/std/chrono
  6250fdc57cc9fcf4c5cc699808a8871f  libstdc++-v3/include/std/codecvt
  841a79fbef033cbe8ca8c554dc66d5b9  libstdc++-v3/include/std/complex
  48a40100ca3cd85337d3b2f0c27e0862  libstdc++-v3/include/std/concepts
*************** f1c08a4c9a736109edfd3c39c60c1669  libstd
*** 150364,150376 ****
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
  56366b751e21bc8d1f80704719551b51  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! a505b55fe4f9b1f72b2b10fb26d67920  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
  c64ab520b4f6639a904aff1b2898fe5d  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
  9ef4000b3bd1e58b7d86929dd53ca576  libstdc++-v3/include/std/flat_map
  c3b66598ccd8ea2009de9b04433b7dcf  libstdc++-v3/include/std/flat_set
! 0f2369161c709b3490f86f1816177779  libstdc++-v3/include/std/format
  821d1dff1ce8d861767808c7c5eab838  libstdc++-v3/include/std/forward_list
  10ba06a4268328778f0feab5e3778f91  libstdc++-v3/include/std/fstream
  5907213253b81e40fd9101e5d092fc82  libstdc++-v3/include/std/functional
--- 150647,150659 ----
  687bcecfb8a35508f2a7025bad9ddade  libstdc++-v3/include/std/contracts
  56366b751e21bc8d1f80704719551b51  libstdc++-v3/include/std/coroutine
  f945d16289e71c13744e7d9177de9ccc  libstdc++-v3/include/std/debugging
! 8acae3e96350698745796c0d8a890377  libstdc++-v3/include/std/deque
  649d9183a0fa35d50371bb1bce3f70c2  libstdc++-v3/include/std/execution
  c64ab520b4f6639a904aff1b2898fe5d  libstdc++-v3/include/std/expected
  d1dc8325fc8c069a07bab71a935bced3  libstdc++-v3/include/std/filesystem
  9ef4000b3bd1e58b7d86929dd53ca576  libstdc++-v3/include/std/flat_map
  c3b66598ccd8ea2009de9b04433b7dcf  libstdc++-v3/include/std/flat_set
! 04a344ef6dfda50688f0e62a8798aaa2  libstdc++-v3/include/std/format
  821d1dff1ce8d861767808c7c5eab838  libstdc++-v3/include/std/forward_list
  10ba06a4268328778f0feab5e3778f91  libstdc++-v3/include/std/fstream
  5907213253b81e40fd9101e5d092fc82  libstdc++-v3/include/std/functional
*************** ac2295459d5771dfc8ae3d83c5e860bc  libstd
*** 150393,150404 ****
  ea0d67f29f1a73f1ccdade0115646a1c  libstdc++-v3/include/std/memory_resource
  f431aa799cd5cc175e6d5af7130ac487  libstdc++-v3/include/std/meta
  6042ceb95043702de02a8354f2507317  libstdc++-v3/include/std/mutex
! 98a3e25011c5fb2383b3824b1c349d43  libstdc++-v3/include/std/numbers
  6a44514a47e24df75405dc1d397afc69  libstdc++-v3/include/std/numeric
  fe7a6e270c022ad901db09ccea37802d  libstdc++-v3/include/std/optional
  bcf1c0b79e2efd9cd34763d368f40966  libstdc++-v3/include/std/ostream
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
! 879fbfbd4d520dc45943e6e1c095a2e7  libstdc++-v3/include/std/queue
  3f2ecc03a66eecb18b68d4fdbf35e268  libstdc++-v3/include/std/random
  7bd00d56a13d5262e05796d317754dbe  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
--- 150676,150687 ----
  ea0d67f29f1a73f1ccdade0115646a1c  libstdc++-v3/include/std/memory_resource
  f431aa799cd5cc175e6d5af7130ac487  libstdc++-v3/include/std/meta
  6042ceb95043702de02a8354f2507317  libstdc++-v3/include/std/mutex
! 7235332847d63e07816e2413bfeb06b0  libstdc++-v3/include/std/numbers
  6a44514a47e24df75405dc1d397afc69  libstdc++-v3/include/std/numeric
  fe7a6e270c022ad901db09ccea37802d  libstdc++-v3/include/std/optional
  bcf1c0b79e2efd9cd34763d368f40966  libstdc++-v3/include/std/ostream
  e24e6fab84ab94b060b3c31ebc39b264  libstdc++-v3/include/std/print
! f21d4fb805e3d8adee59a573e5e0e306  libstdc++-v3/include/std/queue
  3f2ecc03a66eecb18b68d4fdbf35e268  libstdc++-v3/include/std/random
  7bd00d56a13d5262e05796d317754dbe  libstdc++-v3/include/std/ranges
  ee576f89ae347224177df91fe86d905d  libstdc++-v3/include/std/ratio
*************** b3171714703fcfc5d8fe69ffe22d9cc8  libstd
*** 150412,150418 ****
  e691e3e1c795a2e57f49580a98fc2058  libstdc++-v3/include/std/span
  b3f5400b3e99e8767f9ec53ef2385b67  libstdc++-v3/include/std/spanstream
  622e32cb4f822b51d4c1c6a9a6e5dc31  libstdc++-v3/include/std/sstream
! f5a5ebc7b6133572f8f361cde93ec52f  libstdc++-v3/include/std/stack
  88bb9b1fd74e5e06e1aeef52917d3612  libstdc++-v3/include/std/stacktrace
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
--- 150695,150701 ----
  e691e3e1c795a2e57f49580a98fc2058  libstdc++-v3/include/std/span
  b3f5400b3e99e8767f9ec53ef2385b67  libstdc++-v3/include/std/spanstream
  622e32cb4f822b51d4c1c6a9a6e5dc31  libstdc++-v3/include/std/sstream
! b6722fe0aede85ed4a17876751fe8b59  libstdc++-v3/include/std/stack
  88bb9b1fd74e5e06e1aeef52917d3612  libstdc++-v3/include/std/stacktrace
  5a01cfa5d80dcfd00d0912607effe056  libstdc++-v3/include/std/stdexcept
  1172bfca0fe1fdb144e0d95b173239d1  libstdc++-v3/include/std/stdfloat
*************** ff36824a29ea5b43834acdcc395dabf0  libstd
*** 150432,150438 ****
  3dafc052e829f49f947b61291c35680f  libstdc++-v3/include/std/utility
  67682e0eb96e54c43eabbf242b9b76ec  libstdc++-v3/include/std/valarray
  fc66d67dd6e0ec0c9d1d7a713449fc95  libstdc++-v3/include/std/variant
! 3bc614c8d83d3085cdb3c15f7bafea3b  libstdc++-v3/include/std/vector
  ecd0f316fc872dc19b88a6c834438315  libstdc++-v3/include/std/version
  7874ef3c97c791ad66b9def816d95363  libstdc++-v3/include/tr1/array
  9af6bc6d76f3358773a73a3bf07565a6  libstdc++-v3/include/tr1/bessel_function.tcc
--- 150715,150721 ----
  3dafc052e829f49f947b61291c35680f  libstdc++-v3/include/std/utility
  67682e0eb96e54c43eabbf242b9b76ec  libstdc++-v3/include/std/valarray
  fc66d67dd6e0ec0c9d1d7a713449fc95  libstdc++-v3/include/std/variant
! 57a481e323346578e59cdf08e94a5721  libstdc++-v3/include/std/vector
  ecd0f316fc872dc19b88a6c834438315  libstdc++-v3/include/std/version
  7874ef3c97c791ad66b9def816d95363  libstdc++-v3/include/tr1/array
  9af6bc6d76f3358773a73a3bf07565a6  libstdc++-v3/include/tr1/bessel_function.tcc
*************** b543e8338c70f9c51d69b22f6e57859e  libstd
*** 150602,150608 ****
  b3ea1f84132184ec27216953f93e9678  libstdc++-v3/python/libstdcxx/v6/printers.py
  bbd304c6c3f96d550228583e74e330d3  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
! 87c30a72c1d3ec2a203894ac24d78005  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  d964b7c0886aae16013b2d9f5bfceb50  libstdc++-v3/scripts/create_testsuite_files
  7cfd42ac792406b7426e6c0b40eb18a5  libstdc++-v3/scripts/extract_symvers.in
--- 150885,150891 ----
  b3ea1f84132184ec27216953f93e9678  libstdc++-v3/python/libstdcxx/v6/printers.py
  bbd304c6c3f96d550228583e74e330d3  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
! ac5f41fa0c68f2a22f57a5a89ec66a69  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  d964b7c0886aae16013b2d9f5bfceb50  libstdc++-v3/scripts/create_testsuite_files
  7cfd42ac792406b7426e6c0b40eb18a5  libstdc++-v3/scripts/extract_symvers.in
*************** c3455b8d87dcefd65c7fdcd24e4ce3a4  libstd
*** 150617,150624 ****
  bd81737521cde091f96cadb5e3de6b6f  libstdc++-v3/scripts/run_doxygen
  8237637ba2756b818d215e38c3e69e19  libstdc++-v3/scripts/testsuite_flags.in
  6e3445b3780c05b37f42c740c90e740d  libstdc++-v3/scripts/update_release_branch.sh
! bf01f7a9ee664355385ee8835f81ea67  libstdc++-v3/src/Makefile.am
! c6775fdaeaae5806cc843848278c660d  libstdc++-v3/src/Makefile.in
  1db8eb15f1727781feffe391e20932e2  libstdc++-v3/src/c++11/Makefile.am
  3ea8e5edc8c8af41c26f5b1dadb82964  libstdc++-v3/src/c++11/Makefile.in
  4b1e2d0d6f66715f093727ffc92a4879  libstdc++-v3/src/c++11/assert_fail.cc
--- 150900,150907 ----
  bd81737521cde091f96cadb5e3de6b6f  libstdc++-v3/scripts/run_doxygen
  8237637ba2756b818d215e38c3e69e19  libstdc++-v3/scripts/testsuite_flags.in
  6e3445b3780c05b37f42c740c90e740d  libstdc++-v3/scripts/update_release_branch.sh
! 9bf4827f8ce2f679c2f69cad82cadc2a  libstdc++-v3/src/Makefile.am
! b0b642f67ff075b33bbc34ce835c3feb  libstdc++-v3/src/Makefile.in
  1db8eb15f1727781feffe391e20932e2  libstdc++-v3/src/c++11/Makefile.am
  3ea8e5edc8c8af41c26f5b1dadb82964  libstdc++-v3/src/c++11/Makefile.in
  4b1e2d0d6f66715f093727ffc92a4879  libstdc++-v3/src/c++11/assert_fail.cc
*************** a270ee65b1040ddec3d1ccf46a1d71d3  libstd
*** 150735,150742 ****
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
  b0f3e9515e49ea6826dd6aa75c8dd057  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
! 863fc49f52a3a3665416a7c88fc4f3e7  libstdc++-v3/src/c++23/Makefile.am
! 0d7332606e5b7973ac0d4398f18cfd17  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
  9d2dc72c1a96e4af02d5f86278cb705b  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
--- 151018,151025 ----
  0dfa4a770289b4e926b8281770732d5a  libstdc++-v3/src/c++20/tzdata.zi
  b0f3e9515e49ea6826dd6aa75c8dd057  libstdc++-v3/src/c++20/tzdb.cc
  ac7b7a080d5f7aa8fe6a26188631fc18  libstdc++-v3/src/c++20/windows_zones-map.h
! f5e1e9704d6f3d356622774831b83e80  libstdc++-v3/src/c++23/Makefile.am
! 0c345dbda3ed85d407f5334532049106  libstdc++-v3/src/c++23/Makefile.in
  3c95970ad4fd23117b63a99dd3241ebe  libstdc++-v3/src/c++23/libstdc++.modules.json.in
  9d2dc72c1a96e4af02d5f86278cb705b  libstdc++-v3/src/c++23/print.cc
  15f6b28b71ad24bc5b6d33c21048e59a  libstdc++-v3/src/c++23/stacktrace.cc
*************** cb9f0ce7b6b1204a1709a4edd6e2c581  libstd
*** 150787,150793 ****
  d3f0cc2cabf7299b55620ca9aa06a57a  libstdc++-v3/src/c++98/strstream.cc
  78352ac8023edf853e7108794fbee149  libstdc++-v3/src/c++98/tree.cc
  067c47f2f42913b2b6f5f68837afe9f7  libstdc++-v3/src/c++98/valarray.cc
! 7d0a1c9e233e4f04bd2af43f94422ae6  libstdc++-v3/src/experimental/Makefile.am
  e6a13537ccd33424af067aab2dbe6313  libstdc++-v3/src/experimental/Makefile.in
  92e60cd249975451ed5b40d57a045cb7  libstdc++-v3/src/experimental/contract26.cc
  b6eb8bb1cd9be8390c8051e209be07bb  libstdc++-v3/src/filesystem/Makefile.am
--- 151070,151076 ----
  d3f0cc2cabf7299b55620ca9aa06a57a  libstdc++-v3/src/c++98/strstream.cc
  78352ac8023edf853e7108794fbee149  libstdc++-v3/src/c++98/tree.cc
  067c47f2f42913b2b6f5f68837afe9f7  libstdc++-v3/src/c++98/valarray.cc
! 53a6451a3db85a75cd0bf7a747bab1b6  libstdc++-v3/src/experimental/Makefile.am
  e6a13537ccd33424af067aab2dbe6313  libstdc++-v3/src/experimental/Makefile.in
  92e60cd249975451ed5b40d57a045cb7  libstdc++-v3/src/experimental/contract26.cc
  b6eb8bb1cd9be8390c8051e209be07bb  libstdc++-v3/src/filesystem/Makefile.am
*************** e0b231e5efb21d299051e34d9fc98e8c  libstd
*** 153962,153967 ****
--- 154245,154251 ----
  3dc02e3e066c455fe3d9f2f36cad998d  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
  a203f94952bfbe9bf6732a7360d841bc  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
  4005b98cc42a77c489b7042a8b325860  libstdc++-v3/testsuite/23_containers/deque/cons/self_move.cc
+ 2c4317f79d35ac4bc315ae8fa9435ea1  libstdc++-v3/testsuite/23_containers/deque/constexpr.cc
  a92a0a1bee80dd9ac1c41d5c0ab6c96a  libstdc++-v3/testsuite/23_containers/deque/debug/90102.cc
  0ced2bfa65db397984379005b99c7a5b  libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
  4edcdba9d2ede92cfa45ea588a430826  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
*************** a511ecd2b9ce59a9375025ce48fc25c2  libstd
*** 154169,154181 ****
  327987d73bca44793b1be53cd179a8f7  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
  1f989bd4fe44c3ed5563eec35aaa8600  libstdc++-v3/testsuite/23_containers/forward_list/version.cc
  65d55b8f8d9e3cb46cd6f89179a4a314  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 83b451d6991157da7ec29297cc58b337  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
  7f266d8bd1a14ad7cd731ef735b2568f  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
  fdf9d99d80357809da23b7adbbf7740e  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
  d0ab6d967f059ef96d5a85a21961da0e  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 3af9f3049999ad03c9c49fcac6058648  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
  4dad6818c375c772012c0cb432dce195  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! 77cd69de35ec7c09876aeb68719db7ca  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
  eba3cd13015fe27bf5fd2d1c607845c8  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
  c346d495e5c65b130dc6e361de6fd3ed  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
  7bb48f17586b410849874f3383b78517  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
--- 154453,154465 ----
  327987d73bca44793b1be53cd179a8f7  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
  1f989bd4fe44c3ed5563eec35aaa8600  libstdc++-v3/testsuite/23_containers/forward_list/version.cc
  65d55b8f8d9e3cb46cd6f89179a4a314  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 09125cec1a92ba5c940f545cac8f6dd5  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
  7f266d8bd1a14ad7cd731ef735b2568f  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
  fdf9d99d80357809da23b7adbbf7740e  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
  d0ab6d967f059ef96d5a85a21961da0e  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 455068afc55fa4628330b705225fa482  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
  4dad6818c375c772012c0cb432dce195  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! 8038d4e2b25bb8762135abd0dc7771a7  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
  eba3cd13015fe27bf5fd2d1c607845c8  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
  c346d495e5c65b130dc6e361de6fd3ed  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
  7bb48f17586b410849874f3383b78517  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
*************** ea1a2f61fac46b6b55b9ff2c52289540  libstd
*** 154512,154524 ****
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  09daa3c75fb04a81cfa9ee45e1e6c9f7  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  c70a46b7a870b0d7ac9e94fd9d9077b6  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
! 490297a4a90a084a51d7dfe6eb3a0f72  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
  54d31e86115d0b93699f33eca2e16852  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  7c38e4eb25d42df685055b1921b50240  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride_neg.cc
  083b2e8397805cfb105e7a8f99e725ca  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  d0948adb8d08e1ed90f5223c0e45676b  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
! c27c291ecb32ad3eccc01987f563a8b4  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
  0d809aabcc502f57321097810eb58061  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice.cc
  ba61b09cc597008ca51cf543bf72683e  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc
  75dcf76383a9e8f1226c23f8af9a325b  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/generic.cc
--- 154796,154808 ----
  afe443cccc07fbd59aff2af0edd955ce  libstdc++-v3/testsuite/23_containers/mdspan/layouts/empty.cc
  09daa3c75fb04a81cfa9ee45e1e6c9f7  libstdc++-v3/testsuite/23_containers/mdspan/layouts/mapping.cc
  c70a46b7a870b0d7ac9e94fd9d9077b6  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded.cc
! 1630f33bbf9bdaf39bc8564221536a12  libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
  54d31e86115d0b93699f33eca2e16852  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride.cc
  7c38e4eb25d42df685055b1921b50240  libstdc++-v3/testsuite/23_containers/mdspan/layouts/stride_neg.cc
  083b2e8397805cfb105e7a8f99e725ca  libstdc++-v3/testsuite/23_containers/mdspan/mdspan.cc
  4b1a50b4d361b155b60027f1bdc566e7  libstdc++-v3/testsuite/23_containers/mdspan/out_of_bounds_neg.cc
  d0948adb8d08e1ed90f5223c0e45676b  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc
! d9d4024113f91c0470b12394b7f44f10  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
  0d809aabcc502f57321097810eb58061  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice.cc
  ba61b09cc597008ca51cf543bf72683e  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/extent_slice_neg.cc
  75dcf76383a9e8f1226c23f8af9a325b  libstdc++-v3/testsuite/23_containers/mdspan/submdspan/generic.cc
*************** c2def03f80594fdacabf96a3fe28473a  libstd
*** 154703,154709 ****
  f95b540cb16ae5c8140d1176ba7abe7f  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
  0b887155f47fb0624742255fe2cbebb9  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
  3b183dd93ee947a513bf68c877e9bf62  libstdc++-v3/testsuite/23_containers/priority_queue/cons_from_range.cc
! 6066e979da45e64d0bc4ffc5c4b949d5  libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
  7854bb88f3eeae212b5ebf531089e7fa  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
  b973914ffc3f0fb17c99a7c8943f58b3  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  d28290e2547d3a24b7652041265d30c0  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3506.cc
--- 154987,154993 ----
  f95b540cb16ae5c8140d1176ba7abe7f  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
  0b887155f47fb0624742255fe2cbebb9  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
  3b183dd93ee947a513bf68c877e9bf62  libstdc++-v3/testsuite/23_containers/priority_queue/cons_from_range.cc
! 476bdfa2727ba6a0237adad8c254054c  libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
  7854bb88f3eeae212b5ebf531089e7fa  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
  b973914ffc3f0fb17c99a7c8943f58b3  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  d28290e2547d3a24b7652041265d30c0  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3506.cc
*************** fe18547aa6f9203640219742abfbf414  libstd
*** 154722,154727 ****
--- 155006,155012 ----
  2957d4435850a38f3a0dfbae6c651b6e  libstdc++-v3/testsuite/23_containers/queue/cmp_c++20.cc
  74a3d55e3dbf0bc1cd72e1a2ad0f7851  libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
  dc7631b4b7f464f3e69220e4b2fc9b3c  libstdc++-v3/testsuite/23_containers/queue/cons_from_range.cc
+ 488529d8e32062bc118c895e6f32b199  libstdc++-v3/testsuite/23_containers/queue/constexpr.cc
  1bbcd1b507d2c220827b12f021c85b03  libstdc++-v3/testsuite/23_containers/queue/deduction.cc
  eb7b9c8e203a790b99bf72a3a81fec15  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
  87e234f747fe5735219d938259c9b7a8  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
*************** eec834164102eb888849d185398cf9e7  libstd
*** 154873,154878 ****
--- 155158,155164 ----
  6b4c98ed6cfefeab5e5e85c567237e19  libstdc++-v3/testsuite/23_containers/stack/cmp_c++20.cc
  6a5ca5880d5f5bc24e0664542bd514b6  libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
  c81962f05580816062aa40e502ff7fbb  libstdc++-v3/testsuite/23_containers/stack/cons_from_range.cc
+ 061b386c59e5191b154595fa314bd419  libstdc++-v3/testsuite/23_containers/stack/constexpr.cc
  7f6771bf9dc079b3787f28f39e813887  libstdc++-v3/testsuite/23_containers/stack/deduction.cc
  6c00a6937d272bd9333b423a9affb6f8  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
  b0f34983c7cfce28758d7fc56230ba9d  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
*************** d00afebc2f16d01121a57a893a2639fa  libstd
*** 155430,155436 ****
  cbc20ed4a734956b0114e35076144b6f  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
  9bba5ce3ba0483f8ef7cb5a64b90bd8f  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
  61dccf009d507fd3f577a5aeacafcbf6  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_rvalue.cc
! cb42bd09fec663b8765f509efef67c1a  libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
  e484988268b8df62c62fc0c3f47b087e  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
  eca238eeba09d0cfc1a4e6a1f38ff867  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
  708694025e6f683e8d9aa5d94095b397  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
--- 155716,155722 ----
  cbc20ed4a734956b0114e35076144b6f  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
  9bba5ce3ba0483f8ef7cb5a64b90bd8f  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
  61dccf009d507fd3f577a5aeacafcbf6  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_rvalue.cc
! f40170745814f8bb2e75022c7e6f2738  libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
  e484988268b8df62c62fc0c3f47b087e  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
  eca238eeba09d0cfc1a4e6a1f38ff867  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
  708694025e6f683e8d9aa5d94095b397  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
*************** d1265fa86fa3f51c1a8c48f6ce054cec  libstd
*** 158364,158370 ****
  884f9924d63cda85d563691777b17daf  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
  bedb4787180de48850b9d3e93b069289  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 5287f54b660701b297007a450fe90a0e  libstdc++-v3/testsuite/27_io/print/1.cc
  9c2660083dff6f608d234afc2cc30a2c  libstdc++-v3/testsuite/27_io/print/2.cc
  27010f8f7a676423b32ae923639155f4  libstdc++-v3/testsuite/27_io/print/3.cc
  1fcb896c44256929a07977ca21fe5196  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
--- 158650,158656 ----
  884f9924d63cda85d563691777b17daf  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
  bedb4787180de48850b9d3e93b069289  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! babc984473ac742cba4e40b7ca0044a5  libstdc++-v3/testsuite/27_io/print/1.cc
  9c2660083dff6f608d234afc2cc30a2c  libstdc++-v3/testsuite/27_io/print/2.cc
  27010f8f7a676423b32ae923639155f4  libstdc++-v3/testsuite/27_io/print/3.cc
  1fcb896c44256929a07977ca21fe5196  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
*************** ab09b2da7335847dccf2fd63d8b8fd89  libstd
*** 160082,160087 ****
--- 160368,160374 ----
  ca58042c5d0d351eef830e7cf64e202b  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
  d8ba1d87796bcb1e6ae0185360f4aa7b  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
  fd0c135ced59e5fd157469d4f0c5556a  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
+ 93ec0652bd1c0df5ffdcd3a4edc87ce6  libstdc++-v3/testsuite/performance/25_algorithms/for_each.cc
  39cc59b2ac81abe888254149f2f8a2b8  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
  eb410b98119ac070470e6433a3950716  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
  aa728ce1c1273166175f6586c94ecac8  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
*************** b5726319c3426ce133608077cf867e28  libstd
*** 160284,160290 ****
  45280a2212e6fb520cb8b7465d640540  libstdc++-v3/testsuite/std/format/formatter/120625.cc
  6dfab89727d04a1035aba73afcf4d6a8  libstdc++-v3/testsuite/std/format/formatter/basic.cc
  ded8934ce957f586a60f8704fba49c77  libstdc++-v3/testsuite/std/format/formatter/concept.cc
! 43cc21b94d247227b33bbccce8e28b07  libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
  e7d2a20ce851bd6197787606fcea68bd  libstdc++-v3/testsuite/std/format/formatter/lwg3944.cc
  11f82ceaf331c2e9766021ff63ac7ac5  libstdc++-v3/testsuite/std/format/formatter/nonlocking.cc
  9da8b451d80f7ce437c2c7f6cfcee138  libstdc++-v3/testsuite/std/format/formatter/requirements.cc
--- 160571,160577 ----
  45280a2212e6fb520cb8b7465d640540  libstdc++-v3/testsuite/std/format/formatter/120625.cc
  6dfab89727d04a1035aba73afcf4d6a8  libstdc++-v3/testsuite/std/format/formatter/basic.cc
  ded8934ce957f586a60f8704fba49c77  libstdc++-v3/testsuite/std/format/formatter/concept.cc
! 531302025ace30ade332f68708a43843  libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
  e7d2a20ce851bd6197787606fcea68bd  libstdc++-v3/testsuite/std/format/formatter/lwg3944.cc
  11f82ceaf331c2e9766021ff63ac7ac5  libstdc++-v3/testsuite/std/format/formatter/nonlocking.cc
  9da8b451d80f7ce437c2c7f6cfcee138  libstdc++-v3/testsuite/std/format/formatter/requirements.cc
*************** d08981ff1545699b09e5c189fcfffaf0  libstd
*** 160300,160306 ****
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  1b3b368898e00e27fc4de00e410402a1  libstdc++-v3/testsuite/std/format/pr121765.cc
! adc36fa767db69881dc741e3677594b2  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  7a91fafe7a6e4f06e74dd985e80df5c0  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
--- 160587,160593 ----
  341fd71f544307f85453dfa5d899e9df  libstdc++-v3/testsuite/std/format/parse_ctx.cc
  98a750919025b1a6b7cbab28d1aba84a  libstdc++-v3/testsuite/std/format/parse_ctx_neg.cc
  1b3b368898e00e27fc4de00e410402a1  libstdc++-v3/testsuite/std/format/pr121765.cc
! 07dc0b60325a9207a3231c71e863d026  libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
  857552c77c29e3b58e4847f84fc27778  libstdc++-v3/testsuite/std/format/ranges/feature_test.cc
  7a91fafe7a6e4f06e74dd985e80df5c0  libstdc++-v3/testsuite/std/format/ranges/format_kind.cc
  3eb8e2fa183f344414482633d44531bb  libstdc++-v3/testsuite/std/format/ranges/format_kind_neg.cc
*************** d6862fc2c353bee6fd5c6a2912279384  libstd
*** 160473,160479 ****
  d020ffeed3a700de700dcd8ab75dcc70  libstdc++-v3/testsuite/std/simd/stores_expensive.cc
  3b4b1f97188ecc8a55060b770c41e319  libstdc++-v3/testsuite/std/simd/test_setup.h
  479bdc7882b6f9306204b51bd787900a  libstdc++-v3/testsuite/std/simd/traits_common.cc
! 38831dc3c2b84949b761e52214f0538f  libstdc++-v3/testsuite/std/simd/traits_impl.cc
  b9fbe2181e3faf5bba7943f5a46a4f00  libstdc++-v3/testsuite/std/simd/traits_math.cc
  a0efc42f3d3e1e881d69063fe7f2c586  libstdc++-v3/testsuite/std/text_encoding/cons.cc
  bfa6a93e5c5cd2d11c1eddd5572fd5de  libstdc++-v3/testsuite/std/text_encoding/members.cc
--- 160760,160766 ----
  d020ffeed3a700de700dcd8ab75dcc70  libstdc++-v3/testsuite/std/simd/stores_expensive.cc
  3b4b1f97188ecc8a55060b770c41e319  libstdc++-v3/testsuite/std/simd/test_setup.h
  479bdc7882b6f9306204b51bd787900a  libstdc++-v3/testsuite/std/simd/traits_common.cc
! f7c3e0dc4cefdc98dec9ee2f7d32fd85  libstdc++-v3/testsuite/std/simd/traits_impl.cc
  b9fbe2181e3faf5bba7943f5a46a4f00  libstdc++-v3/testsuite/std/simd/traits_math.cc
  a0efc42f3d3e1e881d69063fe7f2c586  libstdc++-v3/testsuite/std/text_encoding/cons.cc
  bfa6a93e5c5cd2d11c1eddd5572fd5de  libstdc++-v3/testsuite/std/text_encoding/members.cc
*************** b3cda48993495a5d2ff69f7f1ad2c695  libstd
*** 160489,160495 ****
  a87e1152f6bc2804b93ce070a51eeb54  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
  33b0f61f2113641c61ba5cd53d9a52a3  libstdc++-v3/testsuite/std/time/clock/utc/1.cc
  91c1a13a9f62d24541dc87bd44c15db4  libstdc++-v3/testsuite/std/time/clock/utc/io.cc
! 16860b826f6b737af0061c60ff7736ee  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
  01f8f5b7e0644716179c7a0f95af5d9d  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info.cc
  225275a54c046285affc36a80ea7383b  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
--- 160776,160782 ----
  a87e1152f6bc2804b93ce070a51eeb54  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
  33b0f61f2113641c61ba5cd53d9a52a3  libstdc++-v3/testsuite/std/time/clock/utc/1.cc
  91c1a13a9f62d24541dc87bd44c15db4  libstdc++-v3/testsuite/std/time/clock/utc/io.cc
! 5d05e7fa959a2ba1457bbf7e17e0c050  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
  01f8f5b7e0644716179c7a0f95af5d9d  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info.cc
  225275a54c046285affc36a80ea7383b  libstdc++-v3/testsuite/std/time/day/1.cc
  9b5b79c912b11d4f48e1fb35fb111742  libstdc++-v3/testsuite/std/time/day/io.cc
*************** f7de6422235c4c37b193a071a8cee11b  libstd
*** 161225,161238 ****
  dbb7e4191bd53179aede58843909cce0  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
  2270daf0c0c385929e6be1c26c023417  libstdc++-v3/testsuite/util/io/xml.hpp
  a5f5a51cd266e196ec4cc59754d0761d  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! 2beecc43c0cc72783963fb184992b923  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! cfdc1859da38e94d31aed9ecce9adef7  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! 9bfd34d78958ebada495db041c39a24a  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
  83330844d57ce898abedcc9a8dadf467  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! d3c3a81faea37b058b107835b6af809e  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! d97cf371b5f2675d4abc1ff7800a9563  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
  37285746547c7cf5abb4faa9718b7400  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! 2505e15bbbff77769d180fefe6203021  libstdc++-v3/testsuite/util/native_type/native_set.hpp
  82dc410393c069b3394e18897bc75f30  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
  2d91512a495454dccce55f2c89866c52  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
  9c10551ba9b5693a881ef0e8ce535e12  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
--- 161512,161525 ----
  dbb7e4191bd53179aede58843909cce0  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
  2270daf0c0c385929e6be1c26c023417  libstdc++-v3/testsuite/util/io/xml.hpp
  a5f5a51cd266e196ec4cc59754d0761d  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! c480fcc37282ae6fdb8c2ed8a71ab111  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! 34d0ec7b1244dc05c6c40fb55d5146e6  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! 5bc6ef3565d3d0c9cefd4f1559a9ab29  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
  83330844d57ce898abedcc9a8dadf467  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! ec6e61ff33310997154230833d1e5a39  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! d4cdc715b2c5a51e37e2cdc5285dfc56  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
  37285746547c7cf5abb4faa9718b7400  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! c1311a6074821c30d0cc9499546193f1  libstdc++-v3/testsuite/util/native_type/native_set.hpp
  82dc410393c069b3394e18897bc75f30  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
  2d91512a495454dccce55f2c89866c52  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
  9c10551ba9b5693a881ef0e8ce535e12  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
*************** fbe2467afef81c41c166173adeb0ee20  mkdep
*** 161428,161433 ****
--- 161715,161721 ----
  82b7b70a9845ee61a01f20b29dd2df2c  mkinstalldirs
  21b967372b521f607c0a119f425931ec  move-if-change
  35b0310839b35b3405a9a6ea5a6e40e3  multilib.am
+ 77831a8a6a5bc8eb59da2ccb9ba313ad  pyproject.toml
  d04558295b99a88449ce099b34342bc5  symlink-tree
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
diff -Nrcpad gcc-17-20260816/Makefile.def gcc-17-20260823/Makefile.def
*** gcc-17-20260816/Makefile.def	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/Makefile.def	Sun Aug 23 22:32:05 2026
*************** dependencies = { module=configure-target
*** 679,685 ****
  dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
  dependencies = { module=all-target-libphobos; on=all-target-zlib; };
  dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
- dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
  dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
  dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
  dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; };
--- 679,684 ----
diff -Nrcpad gcc-17-20260816/Makefile.in gcc-17-20260823/Makefile.in
*** gcc-17-20260816/Makefile.in	Sun Aug 16 22:32:19 2026
--- gcc-17-20260823/Makefile.in	Sun Aug 23 22:32:24 2026
*************** all-stagetrain-target-libphobos: maybe-a
*** 69768,69783 ****
  all-stagefeedback-target-libphobos: maybe-all-stagefeedback-target-libatomic
  all-stageautoprofile-target-libphobos: maybe-all-stageautoprofile-target-libatomic
  all-stageautofeedback-target-libphobos: maybe-all-stageautofeedback-target-libatomic
- configure-target-libstdc++-v3: maybe-configure-target-libgomp
- configure-stage1-target-libstdc++-v3: maybe-configure-stage1-target-libgomp
- configure-stage2-target-libstdc++-v3: maybe-configure-stage2-target-libgomp
- configure-stage3-target-libstdc++-v3: maybe-configure-stage3-target-libgomp
- configure-stage4-target-libstdc++-v3: maybe-configure-stage4-target-libgomp
- configure-stageprofile-target-libstdc++-v3: maybe-configure-stageprofile-target-libgomp
- configure-stagetrain-target-libstdc++-v3: maybe-configure-stagetrain-target-libgomp
- configure-stagefeedback-target-libstdc++-v3: maybe-configure-stagefeedback-target-libgomp
- configure-stageautoprofile-target-libstdc++-v3: maybe-configure-stageautoprofile-target-libgomp
- configure-stageautofeedback-target-libstdc++-v3: maybe-configure-stageautofeedback-target-libgomp
  configure-target-libsanitizer: maybe-all-target-libstdc++-v3
  configure-stage1-target-libsanitizer: maybe-all-stage1-target-libstdc++-v3
  configure-stage2-target-libsanitizer: maybe-all-stage2-target-libstdc++-v3
--- 69768,69773 ----
diff -Nrcpad gcc-17-20260816/contrib/ChangeLog gcc-17-20260823/contrib/ChangeLog
*** gcc-17-20260816/contrib/ChangeLog	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/contrib/ChangeLog	Sun Aug 23 22:32:05 2026
***************
*** 1,3 ****
--- 1,21 ----
+ 2026-08-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* add-write-after.py (getuserdata): Also capture an optional
+ 	forge ID.
+ 
+ 2026-08-18  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* forge_teams.py: New file.
+ 
+ 2026-08-18  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* maintainer_utils.py (schema): Permit 'forgeid' on users
+ 	entries and 'teams' on subsystem entries.
+ 
+ 2026-08-18  Claudio Bantaloukas  <claudio.bantaloukas@arm.com>
+ 
+ 	* maintainer_utils.py: Add inactive_email property.
+ 
  2026-08-06  Jakub Jelinek  <jakub@redhat.com>
  
  	* unicode/README: Add another argument to makeucnid
diff -Nrcpad gcc-17-20260816/contrib/add-write-after.py gcc-17-20260823/contrib/add-write-after.py
*** gcc-17-20260816/contrib/add-write-after.py	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/contrib/add-write-after.py	Sun Aug 23 22:32:05 2026
*************** def getuserdata():
*** 82,87 ****
--- 82,89 ----
      newuser['sn'] = ask("Your surname (only used for sorting entries)",
                          get_surname(newuser['cn']))
      account = ask("Your sourceware account", user.pw_name)
+     forgeid = ask("Your sourceware forge ID (if you have one)", None,
+                   required=False)
      while True:
          e = ask("Primary email address", None)
          if email_valid(e):
*************** def getuserdata():
*** 101,106 ****
--- 103,110 ----
      newuser['roles'] = list()
      newuser['roles'].append('WriteAfter')
      newuser['account'] = account
+     if forgeid:
+         newuser['forgeid'] = forgeid
      print("If you are using a Developer Certificate of Origin (DCO)")
      print("you can add appropriate email addresses here")
      while (e := ask("DCO email (return to stop)", None, required=False)):
diff -Nrcpad gcc-17-20260816/contrib/forge_teams.py gcc-17-20260823/contrib/forge_teams.py
*** gcc-17-20260816/contrib/forge_teams.py	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/contrib/forge_teams.py	Sun Aug 23 22:32:05 2026
***************
*** 0 ****
--- 1,418 ----
+ #!/usr/bin/env python3
+ 
+ # Manage maintainer teams on the forge
+ 
+ # Copyright (C) 2026 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This script is used to syncronize the data in the MAINTAINERS.yml
+ # file with the teams used by the forge for notifications.
+ 
+ # The script is set up with all defaults for the sourceware forge
+ # except for an API token.  The token's minimum permissions are
+ #   write:organization
+ # but only owners of the 'gcc' organization will be able to generate
+ # useable write tokens.
+ # You can enter the API token either via the environment variable
+ # APIKEY, or when requested.
+ 
+ 
+ import getpass
+ import json
+ import math
+ import os
+ import pprint
+ import sys
+ 
+ import urllib.parse
+ import urllib.request
+ import http.client
+ 
+ from optparse import OptionParser
+ 
+ import maintainer_utils as maintutils
+ 
+ defaults = {
+     "PROJECT": "gcc",
+     "REPO": "gcc",
+     "FORGE": "https://forge.sourceware.org/api/v1",
+ }
+ 
+ # These are teams in the forge that this script will not attempt to manage
+ # because the relevant data is not part of MAINTAINERS.yml
+ unmanaged_teams = [
+     'Automation',
+     'Collaborators',
+     'Maintainers.Global',   # Remove once fully implemented
+     'Owners',
+     'Release.Managers',
+     'Reviewers',            # Remove once fully implemented
+     'Write.After.Approval', # Remove once fully implemented
+ ]
+ 
+ opts = None
+ error_count = 0
+ 
+ 
+ def verbose(msg) -> None:
+     if opts.verbose:
+         print(msg)
+     return
+ 
+ 
+ class Forge:
+     def __init__(self):
+         self._setup()
+ 
+     def _setup(self) -> None:
+         self.project = os.getenv("PROJECT", defaults['PROJECT'])
+         self.repo = os.getenv("REPO", defaults['REPO'])
+         self.forge = os.getenv("FORGE", defaults['FORGE'])
+         self.apikey = os.getenv("APIKEY") or getpass.getpass(
+             prompt="API key: "
+         )
+         verbose(f"Accessing {self.forge}/ for org {self.project}.")
+         return
+ 
+     def _send_request(
+         self,
+         url,
+         method='GET',
+     ) -> http.client.HTTPResponse:
+         # For safety while developing.
+         if method == 'GET' or not opts.dry_run:
+             headers = {
+                 'Authorization': f"token {self.apikey}",
+                 'accept': 'application/json',
+                 'Content-Type': 'application/json',
+             }
+             request = urllib.request.Request(
+                 url,
+                 headers=headers,
+                 method=method,
+             )
+             return urllib.request.urlopen(request)
+         return None
+ 
+     # The rest API does not guarantee to return all the data with a
+     # single request.  We support fetching by pages of up to limit.
+     # Note that the server may return less than this if increased too
+     # far. 50 seems a reasonable size; we don't expect there to be
+     # more than a couple of pages at that size.
+     def _get_teams_page(self, page=1, limit=50) -> tuple[
+         list,
+         int,
+     ]:
+         fetch = urllib.parse.urlencode(
+             {
+                 "page": page,
+                 "limit": limit,
+             }
+         )
+         url = f"{self.forge}/orgs/{self.project}/teams?{fetch}"
+         verbose(f"Requesting {url}")
+         reply = self._send_request(url)
+         item_count = int(reply.headers.get("X-Total-Count", -1))
+         pages = math.ceil(item_count / limit) if item_count > 0 else 1
+         return json.load(reply), pages
+ 
+     def _get_team_members_page(self, id, page=1, limit=50) -> tuple[
+         list,
+         int,
+     ]:
+         fetch = urllib.parse.urlencode(
+             {
+                 "page": page,
+                 "limit": limit,
+             }
+         )
+         url = f"{self.forge}/teams/{id}/members?{fetch}"
+         verbose(f"GET {url}")
+         reply = self._send_request(url)
+         item_count = int(reply.headers.get("X-Total-Count", -1))
+         pages = math.ceil(item_count / limit) if item_count > 0 else 1
+         return json.load(reply), pages
+ 
+     def fetch_teams(self) -> list:
+         teams, pages = self._get_teams_page()
+         if pages == 1:
+             return teams
+         for page in range(2, pages + 1):
+             teams_page, _ = self._get_teams_page(page=page)
+             teams.extend(teams_page)
+         return teams
+ 
+     def fetch_team_members(self, id) -> list:
+         members, pages = self._get_team_members_page(id)
+         if pages == 1:
+             return members
+         for page in range(2, pages + 1):
+             members_page, _ = self._get_team_members_page(id, page=page)
+             members.extend(members_page)
+         return members
+ 
+     def manage_team_member(self, id, login, remove=False) -> None:
+         url = f"{self.forge}/teams/{id}/members/{login}"
+         action = 'DELETE' if remove else 'PUT'
+         verbose(f"{action} {url}")
+         reply = self._send_request(url, method=action)
+ 
+ 
+ class DesiredTeam:
+     def __init__(
+         self,
+         teamname,
+         role_filter,
+         user_data,
+         subsystem=None,
+     ) -> None:
+         self.name = teamname
+         self.members = []
+         self.accounts = set()
+         self.role_filter = role_filter
+         self.add_users(subsystem, user_data)
+ 
+     @staticmethod
+     def subsystem_filter(subsystem_name, roles) -> bool:
+         return any(
+             isinstance(role, dict)
+             and (
+                 role.get('Maintainer') == subsystem_name
+                 or role.get('Reviewer') == subsystem_name
+             )
+             for role in roles
+         )
+ 
+     @staticmethod
+     def maintainers_filter(subsystem_name, roles) -> bool:
+         return any(
+             role == 'Global'
+             or (isinstance(role, dict) and 'Maintainer' in role)
+             for role in roles
+         )
+ 
+     @staticmethod
+     def global_reviewers_filter(subsystem_name, roles) -> bool:
+         return any(
+             role == 'Global'
+             for role in roles
+         )
+ 
+     @staticmethod
+     def reviewers_filter(subsystem_name, roles) -> bool:
+         return any(
+             isinstance(role, dict) and 'Reviewer' in role
+             for role in roles
+         )
+ 
+     @staticmethod
+     def write_after_filter(subsystem_name, roles) -> bool:
+         return any(
+             role == "WriteAfter"
+             for role in roles
+         )
+ 
+     def add_users(self, subsystem_name, user_data) -> None:
+         new_members = [
+             u
+             for u in user_data
+             if (forgeid := u.get("forgeid")) is not None
+             and forgeid not in self.accounts
+             and self.role_filter(subsystem_name, u['roles'])
+         ]
+         self.members.extend(new_members)
+         self.accounts.update(u["forgeid"] for u in new_members)
+ 
+ 
+ class DesiredTeamList:
+     def __init__(self, data) -> None:
+         # Start with the static teams that are not based on specific
+         # subsytems.
+         self.teams = {
+             'Maintainers.Global': DesiredTeam(
+                 "Maintainers.Global",
+                 DesiredTeam.global_reviewers_filter,
+                 data['users'],
+             ),
+             'Maintainers': DesiredTeam(
+                 "Maintainers", DesiredTeam.maintainers_filter, data['users']
+             ),
+             'Reviewers': DesiredTeam(
+                 "Reviewers", DesiredTeam.reviewers_filter, data['users']
+             ),
+             'Write.After.Approval': DesiredTeam(
+                 "Write.After.Approval",
+                 DesiredTeam.write_after_filter,
+                 data['users'],
+             ),
+         }
+         # Now add teams for subsystems where a forge team has been
+         # set up.  This is a many<->many mapping: some subsystems
+         # will impact multiple teams and some teams my cover multiple
+         # subsystems and there may be overlaps in team membership.
+         for subsystem in filter(
+                 lambda s: 'teams' in s,
+                 data['subsystems']
+         ):
+             for t in subsystem['teams']:
+                 if t in self.teams:
+                     self.teams[t].add_users(
+                         subsystem['name'],
+                         data['users'],
+                     )
+                 else:
+                     self.teams[t] = DesiredTeam(
+                         t,
+                         DesiredTeam.subsystem_filter,
+                         data['users'],
+                         subsystem=subsystem['name'],
+                     )
+ 
+     def get_by_name(self, name) -> DesiredTeam:
+         return self.teams.get(name)
+ 
+ 
+ class ExistingTeam:
+     def __init__(self, forge, team) -> None:
+         self._forge = forge
+         self._team = team
+         self._members = {
+             m['login']: m
+             for m in forge.fetch_team_members(team['id'])
+         }
+ 
+     def get_member_names(self) -> list:
+         return self._members.keys()
+ 
+     def has_member(self, name) -> bool:
+         return self._members.get(name) != None
+ 
+     def add_member(self, name) -> None:
+         self._forge.manage_team_member(self._team['id'], name)
+ 
+     def remove_member(self, name) -> None:
+         self._forge.manage_team_member(self._team['id'], name, remove=True)
+ 
+ 
+ class ExistingMaintainers:
+     def __init__(self, forge):
+         self._forge = forge
+         self._teams = {
+             t['name']: ExistingTeam(forge, t)
+             for t in forge.fetch_teams()
+             if not t['name'] in unmanaged_teams
+         }
+ 
+     def get_by_name(self, name) -> ExistingTeam:
+         return self._teams.get(name)
+ 
+     def get_team_names(self) -> list:
+         return self._teams.keys()
+ 
+ 
+ def update_teams(forge, needed_teams, existing_teams) -> None:
+     global error_count
+     for name, team in needed_teams.teams.items():
+         # Skip any teams we don't manage
+         if name in unmanaged_teams:
+             continue
+         existing = existing_teams.get_by_name(name)
+         if existing:
+             verbose(f"Checking membership of {name}")
+             # First add any missing members; while doing this, build up
+             # a set of forgeids in the team so that we can quickly search
+             # the team list for pass 2
+             member_names = set()
+             for member in team.members:
+                 member_names.add(member['forgeid'])
+                 if not existing.has_member(member['forgeid']):
+                     # Add new member
+                     verbose(
+                         f"  missing: {member['cn']} ({member['forgeid']})"
+                     )
+                     existing.add_member(member['forgeid'])
+                 else:
+                     verbose(f"  OK: {member['cn']} ({member['forgeid']})")
+             # Secondly, remove any excess members
+             for member in existing.get_member_names():
+                 if not member in member_names:
+                     verbose(f"  remove: {member}")
+                     existing.remove_member(member)
+         else:
+             error_count += 1
+             print(f"Team '{name}' does not exist on the forge")
+     # Scan the existing teams and report any that do not exist in
+     # either MAINTAINERS.yml or in the ignore list.
+     for existing in existing_teams.get_team_names():
+         if (
+             not needed_teams.get_by_name(existing)
+             and existing not in unmanaged_teams
+         ):
+             error_count += 1
+             if len(existing_teams.get_by_name(existing).get_member_names()):
+                 print(f"Unexpected team '{existing}' found on forge")
+             else:
+                 print(
+                     f"Forge team '{existing}' has no members and can be removed"
+                 )
+ 
+ 
+ def main() -> int:
+     global opts
+     optp = OptionParser("Usage: %prog [<options>] <maintainers.yml>")
+     optp.add_option(
+         "-v", "--verbose",
+         action="store_true",
+         dest="verbose",
+         default=False,
+     )
+     optp.add_option(
+         "-n", "--dry-run",
+         action="store_true",
+         dest="dry_run",
+         default=False,
+     )
+     opts, args = optp.parse_args()
+     if len(args) != 1:
+         optp.print_help()
+         return 1
+ 
+     maint_data = maintutils.load(args[0])
+     maintutils.validate(maint_data)
+     needed_teams = DesiredTeamList(maint_data)
+     forge = Forge()
+     existing_teams = ExistingMaintainers(forge)
+     update_teams(forge, needed_teams, existing_teams)
+     if opts.verbose:
+         print("Existing managed teams and members:")
+         for team in existing_teams.get_team_names():
+             print(team)
+             for m in existing_teams.get_by_name(team).get_member_names():
+                 print(f"  {m}")
+         print("\nDesired teams and members:")
+         for name, team in needed_teams.teams.items():
+             unmanaged = " (unmanaged)" if name in unmanaged_teams else ""
+             print(f"{name}{unmanaged}")
+             for m in team.members:
+                 print(f"  {m['forgeid']}")
+     return 0 if not error_count else 1
+ 
+ 
+ if __name__ == "__main__":
+     sys.exit(main())
diff -Nrcpad gcc-17-20260816/contrib/maintainer_utils.py gcc-17-20260823/contrib/maintainer_utils.py
*** gcc-17-20260816/contrib/maintainer_utils.py	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/contrib/maintainer_utils.py	Sun Aug 23 22:32:05 2026
*************** maintainer_schema = {
*** 60,65 ****
--- 60,72 ----
                              'format': 'email',
                          },
                      },
+                     'inactive_email': {
+                         'type': 'array',
+                         'items': {
+                             'type': 'string',
+                             'format': 'email',
+                         },
+                     },
                      'roles': {
                          'type': 'array',
                          'items': {
*************** maintainer_schema = {
*** 111,116 ****
--- 118,127 ----
                          'minlength': 1,
                          'pattern': '[a-zA-Z][a-zA-Z0-9]*',
                      },
+                     'forgeid': {
+                         'type': 'string',
+                         'minlength': 1,
+                     },
                      'aliases': {
                          'type': 'array',
                          'minlength': 1,
*************** maintainer_schema = {
*** 150,157 ****
--- 161,177 ----
                              'pattern': label_pattern,
                          },
                      },
+                     'teams': {
+                         'type': 'array',
+                         'minlength': 1,
+                         'items': {
+                             'type': 'string',
+                             'minlength': 3,
+                         },
+                     },
                  },
                  'additionalProperties': False,
+                 # Todo, add 'team' once the data is fully populated.
                  'required': ['name', 'labels'],
              },
          },
diff -Nrcpad gcc-17-20260816/gcc/ChangeLog gcc-17-20260823/gcc/ChangeLog
*** gcc-17-20260816/gcc/ChangeLog	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/gcc/ChangeLog	Sun Aug 23 22:32:05 2026
***************
*** 1,3 ****
--- 1,1048 ----
+ 2026-08-22  Luke Zhuang  <luke.zhuang@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.md: Restrict slliw shifted bitfield split
+ 	to extractions starting at bit 0, and require the outer mask to
+ 	match slliw sign-extension.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (struct long_mul_summand): Change
+ 	hilo{0,1,2} into an array.
+ 	(long_mul_set_summand): Use a copy loop instead of written out.
+ 	(long_mul_check_consistency): Use the array directly instead
+ 	of a local copy of the loop for the range for loop.
+ 	(match_long_mul_phi): Replace `hilo0` with `hilo[0]`.
+ 	Replace `hilo1` with `hilo[1]`. Replace `hilo2` with `hilo[2]`.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* match.pd (mul_carry_low_sum): Remove @1 from
+ 	the result captures. Rename @0 to @shift0.
+ 	(mul_low_accum): Likewise.
+ 	(mul_ladder_sum1): Likewise.
+ 	(mul_ladder_sum2): Likewise.
+ 	(mul_ladder_sum3): Likewise.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* match.pd (mul_carry_cross_sum): Use wi::to_wide instead
+ 	of tree_to_uhwi.
+ 	(long_mul_high_chain): Likewise and use `% 4`.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* match.pd (mul_hilo): Remove INTEGER_CST check on the operands.
+ 	(mul_lolo): Likewise.
+ 	(mul_hihi): Likewise.
+ 	(mul_low_accum): Likewise.
+ 	(mul_ladder_sum1): Likewise.
+ 	(mul_ladder_sum2): Likewise.
+ 	(mul_ladder_sum3): Likewise.
+ 	(mul_carry_low_sum): Likewise.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* match.pd (mul_cross_sum): Remove the `:c` from the plus.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* tree-ssa-forwprop.cc (match_long_mul_phi): Swap the shift
+ 	amount check with gimple_mul_low_sum/gimple_mul_cross_sum
+ 	checks.
+ 
+ 2026-08-22  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	* match.pd (cond_carry_add_neg): Rename to
+ 	cond_carry_add.
+ 	* tree-ssa-forwprop.cc (gimple_cond_carry_add_neg): Remove.
+ 	(match_long_mul_phi): Don't call gimple_cond_carry_add_neg.
+ 
+ 2026-08-21  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126958
+ 	* match.pd (mul_hi): Use wi::to_wide instead of
+ 	tree_fits_uhwi_p/tree_to_uhwi.
+ 	(mul_lo): Likewise.
+ 
+ 2026-08-21  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126957
+ 	* match.pd (mul_carry_low_sum): Remove `?` from convert.
+ 	(mul_carry_cross_sum): Likewise.
+ 
+ 2026-08-21  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126956
+ 	* match.pd (cond_carry_add): Use `:c` instead of manually
+ 	swapping the comparison and operands.
+ 	(cond_carry_add_neg): Likewise.
+ 
+ 2026-08-21  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR middle-end/126955
+ 	* match.pd: Remove extra `#if GIMPLE`/`#endif` pair.
+ 
+ 2026-08-21  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126954
+ 	* match.pd (mul_ladder_sum1): Change over to match syntax
+ 	instead of doing it manually.
+ 
+ 2026-08-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* value-query.cc (range_query::get_tree_range): Add bitmask back to
+ 	VARYING case.
+ 
+ 2026-08-21  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	PR target/126873
+ 	* config/riscv/autovec.md (vec_set<mode>): Zero-extend a
+ 	sub-Pmode index to Pmode.
+ 	(vec_extract<mode><vel>): Likewise.
+ 
+ 2026-08-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_poly_int_indeterminate_bound): New.
+ 	(TARGET_POLY_INT_INDETERMINATE_BOUND): Implement hook using it.
+ 
+ 2026-08-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* target.def (poly_int_indeterminate_bound): New.
+ 	* doc/tm.texi.in: Document it.
+ 	* doc/tm.texi: Regenerate.
+ 	* value-query.cc (range_query::get_tree_range): Use it.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/iterators.md (vnarrowq): Delete.
+ 	* config/aarch64/aarch64-simd.md
+ 	(<sat_trunc_op>trunc<mode><vnarrowq>2): Rename to...
+ 	(<sat_trunc_op>trunc<mode><Vnarrowq>2): ... this.
+ 
+ 2026-08-21  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_hard_regno_nregs,
+ 	aarch64_class_max_nregs): Handle `FP_HI_REGS`.
+ 	* config/aarch64/aarch64-acle-builtins.h (mop4_base,
+ 	mop4_b16b16, mop4_f8f16, mop4_f8f32, mop4_f64f64,
+ 	mop4_i16i64): New type arrays.
+ 	* config/aarch64/aarch64.h (reg_class::FP_HI_REGS): New enum member.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc (struct mop4_def): New function shape.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.h: New function shape.
+ 	* config/aarch64/aarch64-sve-builtins-sme.def (DEF_SME_FUNCTION):
+ 	Unconditionally define in terms of `DEF_SME_FUNCTION_GS`.
+ 	(DEF_SME_ZA_FUNCTION_GS): Unconditionally define in terms of `DEF_SME_ZA_FUNCTION_GS_FPM`.
+ 	(DEF_SME_ZA_FUNCTION): Unconditionally define in terms of `DEF_SME_ZA_FUNCTION_GS`.
+ 	(svmop4a, svmop4s): New function groups.
+ 	(DEF_SME_ZA_FUNCTION_GS, DEF_SME_ZA_FUNCTION_GS_FPM): New
+ 	macros.
+ 	* config/aarch64/aarch64-sve-builtins.def (1x1, 1x2, 2x1, 2x2):
+ 	New SVE function modes.
+ 	* config/aarch64/constraints.md (z, Ux2, Uxz): New register
+ 	constraints.
+ 	* config/aarch64/aarch64-sme.md (@aarch64_mop4_): New insns.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h (class sme_mop4): New function base.
+ 	* config/aarch64/aarch64-sve-builtins-sme.cc (svmop4a_za,
+ 	svmop4s_za): New functions.
+ 	* config/aarch64/aarch64-sve-builtins-sme.h (svmop4a_za,
+ 	svmop4s_za): New function bases.
+ 	* config/aarch64/iterators.md: New mode iterators.
+ 	(UNSPEC_SME_FMOP4A, UNSPEC_SME_FMOP4S, UNSPEC_SME_UMOP4A,
+ 	UNSPEC_SME_UMOP4S, UNSPEC_SME_SMOP4A, UNSPEC_SME_SMOP4S,
+ 	UNSPEC_SME_SUMOP4A, UNSPEC_SME_SUMOP4S, UNSPEC_SME_USMOP4A,
+ 	UNSPEC_SME_USMOP4S): New unspecs.
+ 	(SME_FP_MOP4, SME_FP8_MOP4, SME_INT_MOP4): New int iterators.
+ 
+ 2026-08-21  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* doc/invoke.texi: Document new extension flags.
+ 	* config/aarch64/aarch64.h (TARGET_SME_MOP4): New target macro.
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
+ 	`__ARM_FEATURE_SME_MOP4` macros when the relevant extension is enabled.
+ 
+ 2026-08-21  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* config/aarch64/constraints.md: Fix comments.
+ 
+ 2026-08-21  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/126856
+ 	* value-relation.cc (dom_oracle::dom_oracle): Create m_block_list.
+ 	(dom_oracle::~dom_oracle): Free m_block_list.
+ 	(relation_chain_head::clear): Decrease the number of relations.
+ 	(dom_oracle::clear): Walk the block_list looking for relations.
+ 	(dom_oracle::record_relation_block): New.
+ 	(dom_oracle::create_relation_in_bb): call record_relation_block.
+ 	* value-relation.h (dom_oracle::m_block_list): New.
+ 	(record_relation_block): Declare.
+ 
+ 2026-08-21  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/126856
+ 	* value-relation.cc (equiv_oracle::equiv_oracle): Adjust for
+ 	rename from m_self_equiv to m_name_info.
+ 	(equiv_oracle::~equiv_oracle): Likewise.
+ 	(equiv_oracle::register_equiv_block): New.
+ 	(equiv_oracle::equiv_set): Adjust for rename.
+ 	(equiv_oracle::register_equiv): Call register_equiv_block.
+ 	(equiv_oracle::clear): Process just the required blocks.
+ 	(equiv_oracle::add_equiv_to_block): Call register_equiv_block.
+ 	* value-relation.h (class name_info): New.
+ 	(equiv_oracle::m_self_equiv): Change type and Rename to m_name_info.
+ 	(register_equiv_block): Declare.
+ 
+ 2026-08-21  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/126856
+ 	* gimple-range-infer.cc (exit_range::name_link): New.
+ 	(infer_range_manager::infer_range_manager): Adjust for rename
+ 	from m_nonzero to m_name_info.
+ 	(infer_range_manager::~infer_range_manager): Likewise.
+ 	(infer_range_manager::get_nonzero): Likewise
+ 	(infer_range_manager::add_range): Add to name_link list.
+ 	(infer_range_manager::clear): Walk name_link list.
+ 	* gimple-range-infer.h (class ssa_name_link): New vec.
+ 	(infer_range_manager::m_nonzero): Retype and rename to m_name_info.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gimple-fold.cc (gimple_fold_builtin_fwrite): New function.
+ 	(gimple_fold_builtin): Call it for BUILT_IN_FWRITE and
+ 	BUILT_IN_FWRITE_UNLOCKED.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR sanitizer/88109
+ 	* tree.h (TYPE_OVERFLOW_SANITIZED): Use ANY_INTEGRAL_TYPE_P.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126979
+ 	* tree-vect-slp-patterns.cc (compatible_complex_nodes_p):
+ 	Special case VEC_PERM nodes.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126965
+ 	* tree-ssa-pre.cc (find_or_generate_expression): Limit
+ 	recursion depth.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (_slp_tree::max_nunits): Remove.
+ 	(vect_update_max_nunits): Likewise.
+ 	* tree-vect-slp.cc (_slp_tree::_slp_tree): Adjust.
+ 	(vect_record_max_nunits): Rename to ...
+ 	(vect_record_vectype): ... this and adjust.
+ 	(vect_build_slp_tree_1): Drop max_nunits argument and adjust.
+ 	(vect_build_slp_tree_2): Likewise.
+ 	(vect_build_slp_tree): Likewise.
+ 	(vect_build_slp_store_interleaving): Likewise.
+ 	(vect_print_slp_tree): Adjust.
+ 	(optimize_load_redistribution_1): Likewise.
+ 	(vect_build_slp_instance): Likewise.
+ 	(vect_analyze_slp_reduc_chain): Likewise.
+ 	(vect_analyze_slp_reduction): Likewise.
+ 	(vect_analyze_slp_reduction_group): Likewise.
+ 	(vect_analyze_slp_instance): Likewise.
+ 	(vect_lower_load_permutations): Likewise.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_update_slp_vf_for_node): Compute
+ 	VF based on SLP_TREE_VECTYPE only.
+ 	(vect_get_num_copies_for_invariant): New.
+ 	(vect_prologue_cost_for_slp): Take nvectors as argument.
+ 	(vect_slp_analyze_node_operations): Verify that we can
+ 	div_away_from_zero for vect_prologue_cost_for_slp.
+ 	(vect_create_constant_vectors): Use vect_get_num_copies_for_invariant.
+ 	* tree-vect-stmts.cc (vect_create_vectorized_promotion_stmts):
+ 	Support creating half of the promoted results.
+ 	(vectorizable_conversion): When we have excess input elements
+ 	request half of the promoted results.
+ 
+ 2026-08-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/126686
+ 	* avoid-store-forwarding.cc
+ 	(store_forwarding_analyzer::avoid_store_forwarding): Reject
+ 	BLKmode stores and loads as forwarding candidates.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.cc (get_or_alloc_expr_for_nary): Assert we
+ 	do not try to encode a SSA name or a constant as NARY.
+ 	(phi_translate_1): Save the translated NARY so we can
+ 	restore it if we want to reject a simplification to a
+ 	SSA name.
+ 
+ 2026-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/126959
+ 	* config/i386/i386.cc (ix86_preferred_reload_class): Allow
+ 	minus ones for MASK register and standard SSE constants for
+ 	SSE register.
+ 
+ 2026-08-21  Jojo R  <rjiejie@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_optab_supported_p): New function.
+ 	(TARGET_OPTAB_SUPPORTED_P): Define.
+ 
+ 2026-08-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_pass_aggregate_in_vr): Return
+ 	NULL_RTX for an aggregate with no field.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_slp_node_weight): Add comment
+ 	indicating bbs[0] fallback is imprecise.
+ 	(vect_optimize_slp_pass::containing_loop): Likewise.
+ 
+ 2026-08-21  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv-fusion.cc (riscv_fuse_cache_aligned_std):
+ 	Remove.
+ 	(riscv_fusion_table): Remove its entry.
+ 	* config/riscv/riscv-protos.h (enum riscv_fusion_pairs): Remove
+ 	RISCV_FUSE_CACHE_ALIGNED_STD.
+ 
+ 2026-08-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* tree-profile.cc (split_update_decision_counter): New.
+ 	(instrument_decisions): Use counter_update to determine which
+ 	atomic operations are available.  Use
+ 	split_update_decision_counter() if 64-bit atomic operations can
+ 	be split up into two 32-bit atomic operations.
+ 
+ 2026-08-21  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* cgraph.cc (cgraph_node::scale_profile_to): Apply the computed scale.
+ 
+ 2026-08-21  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* auto-profile.cc (afdo_calculate_branch_prob): Set a zero entry
+ 	block count to half a scaled sample after adjusting guessed profiles.
+ 
+ 2026-08-20  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	* doc/analyzer.texi (Region Model): Use malloc (n) in the
+ 	example to match the dump; fix the frame for the result_4
+ 	cluster; correct the heap region number; note that heap region
+ 	numbering depends on traversal order.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_splice): New function.
+ 	(aarch64_expand_vec_perm_const_1): Use it.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* tree-vect-patterns.cc (vect_recog_widen_sum_pattern): Try wider
+ 	intermediate input types.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Revert:
+ 	2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* tree-vect-patterns.cc (vect_recog_widen_sum_pattern): Try wider
+ 	intermediate input types.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* tree-vect-patterns.cc (vect_recog_widen_sum_pattern): Try wider
+ 	intermediate input types.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (bitreverse<mode>2): New expander
+ 	for VDQHS.
+ 	(ctz<mode>2): Replace the VB and VS expanders with one for
+ 	VDQ_BHSI.
+ 
+ 2026-08-20  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/126961
+ 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Fix remainder use
+ 	and add signedness check.
+ 
+ 2026-08-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/126801
+ 	* opts.cc (finish_options): Don't set flag_var_tracking_uninit to
+ 	flag_var_tracking by default.  Instead, set flag_var_tracking to
+ 	flag_var_tracking_uninit if the latter was explicitly set.
+ 	* config/darwin.cc (darwin_override_options): Only set
+ 	flag_var_tracking_uninit if it wasn't explicitly set and set it to
+ 	1 rather than flag_var_tracking.  Formatting fix.
+ 
+ 2026-08-20  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* common.opt (fopenmp-ompt): Turn into an alias for
+ 	-fopenmp-ompt=basic.
+ 	(fopenmp-ompt=): New option, replacing fopenmp-ompt{,-detailed}.
+ 	* common.opt.urls: Regenerate.
+ 	* doc/invoke.texi (-fopenmp-ompt): Document the new levels and
+ 	drop -fopenmp-ompt-detailed.
+ 	* flag-types.h (enum omp_ompt_level): New.
+ 	* omp-expand.cc (expand_omp_for_static_nochunk,
+ 	expand_omp_for_static_chunk): Check flag_openmp_ompt against
+ 	OMP_OMPT_LEVEL_EXTENDED instead of flag_openmp_ompt_detailed.
+ 	* opts.cc (finish_options): Adjust diagnostic for the removal of
+ 	-fopenmp-ompt-detailed.
+ 
+ 2026-08-20  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr-log.cc (INCLUDE_ALGORITHM): Define for std::min.
+ 	(avr_log_operands, avr_log_operand): New static functions.
+ 	(avr_log_node): Support ADDR_EXPR, POINTER_PLUS_EXPR,
+ 	POINTER_DIFF_EXPR, ADDR_SPACE_CONVERT_EXPR, CONVERT_EXPR,
+ 	NOP_EXPR, MEM_REF, CONSTRUCTOR.
+ 
+ 2026-08-20  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/126775
+ 	* match.pd (0.0 - x -> -x): Use new real_negzerop function.
+ 	* tree.cc (real_negzerop): New predicate function to test if
+ 	a tree expression is -0.0 or equivalent (like real_zerop).
+ 	* tree.h (real_negzerop): Prototype here.
+ 
+ 2026-08-20  Shivam Gupta  <shivam98.tkg@gmail.com>
+ 
+ 	* match.pd: Add simplifications for XORs and boolean
+ 	comparisons of zero_one_valued comparisons against zero.
+ 
+ 2026-08-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.cc (tree_nop_conversion_p): Special case two BLKmode
+ 	types.
+ 
+ 2026-08-20  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/112104
+ 	* tree-scalar-evolution.cc (analyze_and_compute_bitop_with_inv_effect):
+ 	Handle BIT_XOR_EXPR with a variable trip count.
+ 
+ 2026-08-20  Manjunath Matti  <mmatti@linux.ibm.com>
+ 
+ 	PR middle-end/126939
+ 	* gimple-lower-bitint.cc (bitint_large_huge::finish_arith_overflow):
+ 	Take the address of the memmove source operand.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	PR tree-optimization/126642
+ 	* match.pd (long_mul_high_chain): New atom for the emitted high-part chain.
+ 	* tree-ssa-forwprop.cc (long_mul_classify_match): Gate the
+ 	HIGH_PART wide-chain emit on optimize_widening_mul_active_p
+ 	rather than on the target having a 2N multiply.
+ 	* tree-ssa-math-opts.cc (can_widen_to_narrow_p): New.
+ 	(build_long_mul_partials): New; emits the four partial products
+ 	using widening or plain multiplies.
+ 	(emit_long_mul_highpart): New; the high N bits of an N-bit
+ 	product, as a longhand over (N/2)-bit partials.
+ 	(combine_long_mul_halves): New; the high N bits of a product of
+ 	two 2N-bit values given as N-bit halves.
+ 	(long_mul_op_fits_p): New; true when an operand is provably
+ 	representable in narrow_prec unsigned bits.
+ 	(long_mul_split_operand): New; splits an operand into N-bit
+ 	halves using only N-bit operations.
+ 	(struct long_mul_halves): New; the halves an operand PHI was
+ 	split into.
+ 	(struct long_mul_arg_split): New; an argument of an operand PHI
+ 	with the statements that split it.
+ 	(long_mul_split_phi): New; splits an operand PHI by splitting its
+ 	arguments and merging the halves with two new PHIs. Record the
+ 	halves and reuse them for the next consumer of the same PHI.
+ 	(long_mul_high_half_uses): New; collects the `>> N' uses forming
+ 	a product's high half.
+ 	(long_mul_only_low_half_used_p): New.
+ 	(unexpandable_long_mul_p): New; true for a 2N multiply in a mode
+ 	the target cannot multiply.
+ 	(narrow_long_mul_low_half): New; narrow a 2N low-half-only mult
+ 	the target cannot expand to an N-bit mult.
+ 	(narrow_long_mul_operands): New; recurse into chained wide
+ 	products after a narrowing/lowering.
+ 	(finish_long_mul_low_half): New; narrows or removes a 2N mult
+ 	whose high half is synthesized elsewhere.
+ 	(narrow_long_mul_halves): New; rewrites a 2N multiply into the
+ 	N-bit halves its uses read.
+ 	(gimple_long_mul_high_chain): Declare.
+ 	(lower_long_mul_high_chain): New; lowers the high-part chain to a
+ 	longhand at narrow precision. Split each operand into N-bit
+ 	halves and combine, handling an operand wider than narrow_prec
+ 	instead of rejecting it. Narrow or drop the residual 2N mult via
+ 	the helpers and recurse into its operands.
+ 	(optimize_widening_mul_active_p): New; shared gate used by
+ 	pass_optimize_widening_mul::gate and by the forwprop long-multiply
+ 	recognizer. Return false when optimize_debug.
+ 	(math_opts_dom_walker::after_dom_children): Dispatch to
+ 	lower_long_mul_high_chain on the outer convert. Run
+ 	narrow_long_mul_low_half on MULT_EXPR before the widen/fma
+ 	conversion attempts.
+ 	(pass_optimize_widening_mul::execute): Sweep the function for
+ 	multiplies left in a mode the target cannot expand. Scope the
+ 	record of split operand PHIs to one run of the pass.
+ 	* tree-ssa-math-opts.h (optimize_widening_mul_active_p): Declare.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* match.pd: Add cond_carry_add and cond_carry_add_neg match
+ 	recognizers for the 2-arg PHI form PHI<base + pow2, base>,
+ 	one per gcond polarity.
+ 	* tree-ssa-forwprop.cc (gimple_cond_carry_add): Declare.
+ 	(gimple_cond_carry_add_neg): Likewise.
+ 	(long_mul_check_low_plus_defer): Note that the PHI entry commits
+ 	only to HIGH_PART rows.
+ 	(long_mul_classify_match): Take the candidate statement for the
+ 	per-row checks.
+ 	(long_mul_classify_chain): Take an optional pre-classified extra
+ 	summand, for the carry the PHI entry synthesizes.
+ 	(match_long_mul): Adjust.
+ 	(match_long_mul_phi): New PHI-driven entry; recognizes a
+ 	cond_carry_add(_neg) PHI and folds the long-multiply
+ 	when the rest of the high-part chain matches.
+ 	(pass_forwprop::execute): Call match_long_mul_phi on each
+ 	PHI in the degenerate-PHI walk.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* tree-ssa-forwprop.cc (long_mul_check_low_plus_defer): New
+ 	helper, defers the fold when any GT/LT/GE/LE use shares an
+ 	operand with the PLUS; gates the LOW_PART PLUS_EXPR row added
+ 	to long_mul_table.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* match.pd: Add mul_ladder_sum1, mul_ladder_sum2,
+ 	mul_ladder_sum3 and mul_ladder_part_sum atom recognizers.
+ 	* tree-ssa-forwprop.cc (gimple_mul_ladder_sum1): Declare.
+ 	(gimple_mul_ladder_sum2): Likewise.
+ 	(gimple_mul_ladder_sum3): Likewise.
+ 	(gimple_mul_ladder_part_sum): Likewise.
+ 	(enum long_mul_kind): Add LMK_LADDER_SUM1 / LMK_LADDER_SUM2
+ 	/ LMK_LADDER_SUM3 / LMK_LADDER_PART_SUM, with the
+ 	long_mul_table HIGH_PART and LOW_PART rows for each ladder
+ 	form.
+ 	(long_mul_set_summand): Handle the new kinds.
+ 	(long_mul_classify_carry): Update the specificity note above
+ 	long_mul_classify_plus_kinds.
+ 	(long_mul_classify_plus_kinds): Try mul_ladder_sum3 and
+ 	mul_ladder_sum1 before mul_low_sum (more-constrained
+ 	first); add mul_ladder_sum2.
+ 	(long_mul_classify_hi_extract): Add mul_ladder_part_sum
+ 	branch.
+ 	(long_mul_classify_lo_extract): Adjust.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* match.pd: Add mul_carry_low atom recognizer.
+ 	* tree-ssa-forwprop.cc (gimple_mul_carry_low): Declare.
+ 	(enum long_mul_kind): Add LMK_CARRY_LOW.
+ 	(struct long_mul_summand): Add carry_a / carry_b for the
+ 	LMK_CARRY_LOW summand's two operands.
+ 	(long_mul_set_summand): Handle LMK_CARRY_LOW.
+ 	(long_mul_classify_carry): Try mul_carry_low after the
+ 	more-constrained mul_carry_low_sum / mul_carry_cross_sum.
+ 	(long_mul_find_summand): New helper, find the first summand
+ 	with a given kind.
+ 	(long_mul_check_two_carries): New extra check, validates the
+ 	LMK_CARRY_LOW summand's operands against the canonical
+ 	(op0, op1); gates the two-carry HIGH_PART row added to
+ 	long_mul_table.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* match.pd: Add mul_low_sum and mul_carry_low_sum atom
+ 	recognizers.
+ 	* tree-ssa-forwprop.cc (gimple_mul_low_sum): Declare.
+ 	(gimple_mul_carry_low_sum): Likewise.
+ 	(create_mul_low_seq): Update the widest-atom note above
+ 	LONG_MUL_MAX_CAPTURES to mul_carry_low_sum (7 captures).
+ 	(enum long_mul_kind): Add LMK_LOW_SUM and LMK_CARRY_LOW_SUM,
+ 	with the long_mul_table HIGH_PART and LOW_PART rows that
+ 	consume them.
+ 	(long_mul_set_summand): Handle the new kinds.
+ 	(long_mul_classify_carry): Try mul_carry_low_sum before
+ 	mul_carry_cross_sum (most-specific first).
+ 	(long_mul_classify_plus_kinds): Try mul_low_sum after
+ 	mul_low_accum (mul_low_sum's first arm is any plus and
+ 	mul_low_accum constrains both arms).
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* match.pd: Add atom match recognizers for long-multiply
+ 	(mul_hi, mul_lo, mul_hilo, mul_lolo, mul_hihi, mul_cross_sum,
+ 	mul_low_accum, mul_carry_cross_sum).
+ 	* tree-ssa-forwprop.cc (gimple_mul_hi): Declare.
+ 	(gimple_mul_lo): Likewise.
+ 	(gimple_mul_hilo): Likewise.
+ 	(gimple_mul_lolo): Likewise.
+ 	(gimple_mul_hihi): Likewise.
+ 	(gimple_mul_cross_sum): Likewise.
+ 	(gimple_mul_low_accum): Likewise.
+ 	(gimple_mul_carry_cross_sum): Likewise.
+ 	(build_mul_high_seq): New, emits (N)(((2N) op1 * (2N) op2) >> N)
+ 	into a caller-supplied destination.
+ 	(long_mul_apply_extras): New, combines the preserved addends back
+ 	on top of the folded multiply.
+ 	(create_mul_high_seq): New, replaces the statement with the
+ 	high-part multiply plus any extras.
+ 	(create_mul_low_seq): New, likewise for the low part.
+ 	(enum long_mul_kind): New.
+ 	(enum long_mul_extract): New.
+ 	(struct long_mul_summand): New.
+ 	(long_mul_linearize_chain): New, walks the outer add/ior chain
+ 	into a multiset of leaves.
+ 	(long_mul_is_lshift_def): New.
+ 	(long_mul_set_summand): New.
+ 	(long_mul_classify_carry): New.
+ 	(long_mul_classify_plus_kinds): New.
+ 	(long_mul_classify_hi_extract): New.
+ 	(long_mul_classify_lo_extract): New.
+ 	(long_mul_classify_shl_extract): New.
+ 	(long_mul_classify_bare): New.
+ 	(long_mul_classify_summand): New, classify each summand via the
+ 	match.pd atoms.
+ 	(long_mul_summand_compare): New.
+ 	(struct long_mul_row): New.
+ 	(long_mul_same_ops): New.
+ 	(long_mul_is_cross_half): New.
+ 	(long_mul_hilo_orientation): New, orientation of a mul_hilo
+ 	capture relative to (op0, op1).
+ 	(long_mul_canonical_ops): New.
+ 	(long_mul_check_consistency): New, cross-summand consistency
+ 	check (operand pairing, half-width shifts, hilo cross-half).
+ 	(long_mul_signature_matches): New.
+ 	(long_mul_hint_shared_intermediate): New, dump-file hint
+ 	pointing at a shared inner addition.
+ 	(long_mul_classify_match): New, looks a summand multiset up in
+ 	long_mul_table and runs the per-row checks.
+ 	(long_mul_classify_chain): New, linearize plus classify plus
+ 	table lookup; sets aside leaves that classify as no summand.
+ 	(match_long_mul): New, top-level entry: starts only at a chain
+ 	end, classifies the chain, and dispatches to create_mul_high_seq
+ 	/ create_mul_low_seq with any preserved addends.
+ 	(pass_forwprop::execute): Call match_long_mul on PLUS_EXPR and
+ 	BIT_IOR_EXPR statements.
+ 
+ 2026-08-19  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126934
+ 	* range-op.cc (operator_div::op1_op2_relation_effect): Fix
+ 	for ops range being negative with VREL_LT.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/iterators.md (vnarrowq): New mode attribute.
+ 	(sat_trunc_op): New code attribute.
+ 	* config/aarch64/aarch64-simd.md (<sat_trunc_op>trunc<mode><vnarrowq>2):
+ 	New expander.
+ 
+ 2026-08-19  Alice Carlotti  <alice.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-sys-regs.def: Sync from Binutils.
+ 
+ 2026-08-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (LINK_COMMAND_SPEC_A): Synchronise the
+ 	options for coverage with gcc/gcc.cc.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_cm<optab>di): Accept a
+ 	zero second operand in the general register alternative.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125557
+ 	* ifcvt.cc (average_cost): Scale a nonnegative cost difference using
+ 	the probability of the more expensive arm.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* profile-count.h (profile_probability::apply): Scale an unsigned
+ 	magnitude with safe_scale_64bit.
+ 	* profile-count.cc (test_profile_probability_apply): New.
+ 	(profile_count_cc_tests): New.
+ 	* selftest.h (profile_count_cc_tests): Declare.
+ 	* selftest-run-tests.cc (selftest::run_tests): Run it.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_build_slp_instance): Remove dead code.
+ 	(vect_analyze_slp_instance): Likewise.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_print_slp_tree): Dump the scheduling
+ 	point, if set.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_optimize_slp_pass::containing_loop):
+ 	For nodes w/o representative use the region entry block
+ 	to indicate the containing loop.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126936
+ 	* tree-vect-slp.cc (vect_bb_slp_mark_live_stmts): Exclude
+ 	use_stmt from dominance check.
+ 	(vect_schedule_slp): Likewise for root.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_slp_build_two_operator_nodes):
+ 	Set SLP_TREE_REPRESENTATIVE to NULL for the permute nodes.
+ 	(vect_build_slp_tree_2): Likewise.
+ 	(vect_build_slp_store_interleaving): Likewise.
+ 	(vect_lower_load_permutations): Likewise.
+ 	(vect_optimize_slp_pass::get_result_with_layout): Likewise.
+ 	(vect_cse_slp_node_parts): Deal with NULL SLP_TREE_REPRESENTATIVE
+ 	for VEC_PERM nodes.
+ 	(vect_slp_analyze_node_operations_1): Assert permute nodes
+ 	do not have SLP_TREE_REPRESENTATIVE set.
+ 	* tree-vect-slp-patterns.cc (complex_pattern::build): Adjust.
+ 	(vect_build_swap_evenodd_node): Do not set SLP_TREE_REPRESENTATIVE.
+ 	(vect_build_combine_node): Likewise.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_slp_node_weight): Get vinfo as
+ 	context.  For nodes without representative use the
+ 	region entry block.
+ 	(vect_optimize_slp_pass::start_choosing_layouts): Always
+ 	assign vertex weight.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/126597
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vec_perm_const_1): Swap
+ 	zero_op0_p and zero_op1_p along with the operands.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/126930
+ 	* tree-ssa-alias.cc (ptr_deref_may_alias_global_p): Guard
+ 	against non-pointers.
+ 	(ptr_deref_may_alias_auto_p): Likewise.
+ 
+ 2026-08-18  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/126856
+ 	* gimple-range-cache.cc (block_range_cache::clear): New.
+ 	(ranger_cache::reset_range_info): New.
+ 	* gimple-range-cache.h (block_range_cache::clear): Declare.
+ 	(ranger_cache::reset_range_info): Declare.
+ 	* gimple-range-gori.cc (range_def_chain::clear): New.
+ 	* gimple-range-gori.h (range_def_chain::clear): Declare.
+ 	* gimple-range-infer.cc (infer_range_manager::clear): New.
+ 	* gimple-range-infer.h (infer_oracle::clear): New virtual function.
+ 	(infer_range_manager::clear): Override.
+ 	* gimple-range.cc (gimple_ranger::reset_range_info): New.
+ 	* gimple-range.h (gimple_ranger::reset_range_info): Declare.
+ 	* tree-ssa-dce.cc (simple_dce_from_worklist): Reset flow-sensitive
+ 	information when replacing a definition.
+ 	* tree-ssanames.cc (reset_flow_sensitive_info): Reset information
+ 	maintained by the current range query.
+ 	* value-query.cc (range_query::reset_range_info): New.
+ 	* value-query.h (range_query::reset_range_info): Declare.
+ 	* value-relation.cc (equiv_oracle::clear): New.
+ 	(relation_chain_head::clear): New.
+ 	(dom_oracle::clear): New.
+ 	(path_oracle::clear): New.
+ 	* value-relation.h (relation_oracle::clear): New virtual function.
+ 	(equiv_oracle::clear): Override.
+ 	(relation_chain_head::clear): Declare.
+ 	(dom_oracle::clear): Override.
+ 	(path_oracle::clear): Override.
+ 
+ 2026-08-18  Kugan Vivekanandarajah  <kvivekananda@nvidia.com>
+ 
+ 	* auto-profile.cc (function_instance::match): Walk predecessor edges
+ 	for PHI arguments.
+ 
+ 2026-08-18  Dylan Rees  <dylan.rees@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: fold method
+ 	created for 'svbrk_unary_impl'. Cases added for folding into
+ 	'ptrue' and 'pfalse' where appropriate and not folding where
+ 	unnecessary. Expand method of 'svpfirst_svpnext_impl' extended
+ 	to handle specific case where 'ptrue' should be emitted but in
+ 	a form where it can be recognised as a flag setting operation.
+ 
+ 2026-08-18  Léo Hardt  <leom.hardt@inf.ufrgs.br>
+ 
+ 	* final.cc (notice_source_line): Remove dead condition
+ 	for override_filename.
+ 
+ 2026-08-18  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* doc/extend.texi (Coverage Pragmas): Fix a typo.
+ 	(Size of an asm): Fix a typo.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* config/alpha/alpha.cc (alpha_option_override): Set alpha_fprm to
+ 	ALPHA_FPRM_DYN when flag_rounding_math is set, -mfp-rounding-mode
+ 	was not given explicitly and -mfloat-vax is not in effect.
+ 	* doc/invoke.texi (Alpha Options): Document the default rounding
+ 	mode and its interaction with -frounding-math.
+ 
+ 2026-08-18  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* Makefile.in ($(lang_checks_parallelized)): Only merge summaries
+ 	from instances that produced one, and warn about the others.  Write
+ 	the merged files through a temporary and fail if the merge fails.
+ 
+ 2026-08-18  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* config/aarch64/iterators.md (optab): Map UNSPEC_COND_FRINTN to
+ 	roundeven.
+ 
+ 2026-08-18  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* doc/invoke.texi (AVR Options): Sort alphabetically.
+ 
+ 2026-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vectorizer.h (struct _slp_tree): Amend documentation.
+ 
+ 2026-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126926
+ 	* tree-vect-slp.cc (vectorize_slp_instance_root_stmt): Only
+ 	replace the RHS of the vector constructing scalar stmt.
+ 
+ 2026-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126925
+ 	* tree-ssa-loop-ivopts.cc (create_new_iv): Avoid crashing
+ 	if the use IV is invariant.
+ 
+ 2026-08-18  Dominic P  <gcc@gcc.dp11.uk>
+ 
+ 	* match.pd ((X & C1) cmp 0 op (X & C2) cmp 0): Combine pairs of
+ 	single-bit tests of the same operand into a single compare of
+ 	the union mask.
+ 
+ 2026-08-18  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	PR tree-optimization/126876
+ 	* gimple-range-path.cc
+ 	(path_range_query::internal_range_of_expr): Only call
+ 	range_defined_in_block at the current path position.
+ 	(path_range_query::range_defined_in_block): Assert the current
+ 	path position.
+ 
+ 2026-08-18  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/126784
+ 	* match.pd ((type) minmax ((wide_type) a, (wide_type) b)): Changed
+ 	to ...
+ 	(minmax ((wide_type) a, (wide_type) b)): This.
+ 
+ 2026-08-18  Dominic P  <gcc@gcc.dp11.uk>
+ 
+ 	* match.pd ((t * u) % u -> 0): New simplification.
+ 
+ 2026-08-18  Shivam Gupta  <shivam98.tkg@gmail.com>
+ 
+ 	PR tree-optimization/112533
+ 	* match.pd: Canonicalize boolean comparisons of masked pow2
+ 	bits into xor-mask tests.
+ 
+ 2026-08-18  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	* ipa-prop.cc (ipa_compute_jump_functions_for_edge): Remove
+ 	dead if statement checking for internal calls.
+ 
+ 2026-08-18  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	PR tree-optimization/126906
+ 	* tree-ssa-threadupdate.h
+ 	(back_jt_path_registry::duplicate_thread_path): Add failure_reason
+ 	argument.
+ 	* tree-ssa-threadupdate.cc
+ 	(back_jt_path_registry::duplicate_thread_path): Set
+ 	FAILURE_REASON on the two failing exits.
+ 	(back_jt_path_registry::update_cfg): Cancel the path with the
+ 	reason when duplicate_thread_path fails.
+ 
+ 2026-08-17  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.opt.urls: Add mstrict-addr-space-subsets.
+ 
+ 2026-08-17  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.opt (-mstrict-addr-space-subsets): New
+ 	target option.
+ 	* config/avr/avr.cc (avr_addr_space_subset_p): Use it.
+ 	* doc/invoke.texi (AVR Options): Document it.
+ 
+ 2026-08-17  Dipesh Sharma  <Dipesh.Sharma@amd.com>
+ 	    Venkataramanan Kumar  <Venkataramanan.Kumar@amd.com>
+ 	    Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/avx10v2auxintrin.h (_mm_cvtss_epi32_epi8): New intrin.
+ 	(_mm_mask_cvtss_epi32_epi8): Ditto.
+ 	(_mm_maskz_cvtss_epi32_epi8): Ditto.
+ 	(_mm_mask_cvtss_epi32_storeu_epi8): Ditto.
+ 	(_mm256_cvtss_epi32_epi8): Ditto.
+ 	(_mm256_mask_cvtss_epi32_epi8): Ditto.
+ 	(_mm256_maskz_cvtss_epi32_epi8): Ditto.
+ 	(_mm256_mask_cvtss_epi32_storeu_epi8): Ditto.
+ 	(_mm512_cvtss_epi32_epi8): Ditto.
+ 	(_mm512_mask_cvtss_epi32_epi8): Ditto.
+ 	(_mm512_maskz_cvtss_epi32_epi8): Ditto.
+ 	(_mm512_mask_cvtss_epi32_storeu_epi8): Ditto.
+ 	(_mm_unpack_epi8): Ditto.
+ 	(_mm_mask_unpack_epi8): Ditto.
+ 	(_mm_maskz_unpack_epi8): Ditto.
+ 	(_mm256_unpack_epi8): Ditto.
+ 	(_mm256_mask_unpack_epi8): Ditto.
+ 	(_mm256_maskz_unpack_epi8): Ditto.
+ 	(_mm512_unpack_epi8): Ditto.
+ 	(_mm512_mask_unpack_epi8): Ditto.
+ 	(_mm512_maskz_unpack_epi8): Ditto.
+ 	* config/i386/i386-builtin-types.def: New function types.
+ 	* config/i386/i386-builtin.def (BDESC): New builtins.
+ 	* config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle new function types
+ 	and reserved immediate check.
+ 	* config/i386/sse.md (vunpackb<mode><mask_name>): New.
+ 	(avx10v2aux_sym_truncatev4siv4qi2): Ditto.
+ 	(*avx10v2aux_sym_truncatev4siv4qi2): Ditto.
+ 	(avx10v2aux_sym_truncatev8siv8qi2): Ditto.
+ 	(*avx10v2aux_sym_truncatev8siv8qi2): Ditto.
+ 	(avx10v2aux_sym_truncatev4siv4qi2_mask): Ditto.
+ 	(*avx10v2aux_sym_truncatev4siv4qi2_mask): Ditto.
+ 	(avx10v2aux_sym_truncatev8siv8qi2_mask): Ditto.
+ 	(*avx10v2aux_sym_truncatev8siv8qi2_mask): Ditto.
+ 	(*avx10v2aux_sym_truncatev16siv16qi2): Ditto.
+ 	(avx10v2aux_sym_truncatev16siv16qi2_mask): Ditto.
+ 	(avx10v2aux_sym_truncatev16siv16qi2_mask_store): Ditto.
+ 	(*avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_store_1): Ditto.
+ 	(*avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_store_2): Ditto.
+ 	(avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_mask_store_1): Ditto.
+ 	(avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_mask_store_2): Ditto.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/86937
+ 	* fold-const-call.cc (fold_const_call): fold
+ 	CFN_BUILT_IN_STRNLEN calls.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126743
+ 	* range-op-mixed.h: declare.
+ 	* range-op.cc (operator_bitwise_or::op1_op2_relation_effect):
+ 	add op1 NE op2 relation range for op1 | op2 as nonzero.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126748
+ 	* range-op.cc (class operator_div): declarations.
+ 	(operator_div::op1_op2_relation_effect): add op1/op2 relation
+ 	range equal zero for op1/op2 if op1 < op2 and both op1 and op2
+ 	are positives.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/124667
+ 	* match.pd(`(A & BIT) EQ|NE 0 ? A | BIT : A`): New
+ 	pattern.
+ 	(`(A & BIT) EQ|NE 0 ? A : A | BIT`): New pattern.
+ 	(`(A & MASK) EQ|NE MASK ? A : A | MASK`): New pattern.
+ 	(`(A & MASK) EQ|NE MASK ? A | MASK : A`): New pattern.
+ 	(`A | (((A >> N) & 1) << N)`): New pattern.
+ 
+ 2026-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/126788
+ 	* optabs-tree.cc (supportable_convert_operation): For same
+ 	modes allow NOP_EXPR and VIEW_CONVERT_EXPR.
+ 	* tree-ssa-forwprop.cc (simplify_vector_constructor): Avoid
+ 	converting the vector to be used for blending into the
+ 	result to the type of the permutation.
+ 	* tree-vect-stmts.cc (vectorizable_conversion): Leave
+ 	nop-conversions to vectorizable_assignment.
+ 
+ 2026-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126887
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+ 	Allow to search past a loop header in case we are threading a
+ 	loop exit test.
+ 	* tree-ssa-threadupdate.cc
+ 	(back_jt_path_registry::duplicate_thread_path): Properly
+ 	detect when a entered subloop is dissolved by threading,
+ 	but avoid creating new entries into the original loop.
+ 	(jt_path_registry::cancel_invalid_paths): Do not allow
+ 	peeling loops.
+ 
+ 2026-08-17  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc (svabal): Define.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.def (svabal): New
+ 	function.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.h (svabal): Declare.
+ 	* config/aarch64/iterators.md (UNSPEC_SABAL, UNSPEC_UABAL): New
+ 	unspecs.
+ 	(SVE2_INT_BINARY_LONG, SVE2_INT_ADD_BINARY_LONG): Add
+ 	UNSPEC_SABAL and UNSPEC_UABAL.
+ 	(sve_int_op, sve_int_add_op, sve_type_unspec): Handle them.
+ 
+ 2026-08-17  Josef Melcr  <josef.melcr@suse.com>
+ 
+ 	* gimple-low.cc (lower_assumption): Unset stdarg after
+ 	determining the body function's arguments.
+ 
+ 2026-08-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* config/riscv/vector.md: Leverage Wvr constraint.
+ 
+ 2026-08-16  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/avr.cc: Fix typos in comments.
+ 	* config/avr/avr.md: Same.
+ 	* config/avr/avr-passes.cc: Same.
+ 	* config/avr/genmultilib.awk: Same.
+ 
+ 2026-08-16  Léo Hardt  <leom.hardt@inf.ufrgs.br>
+ 
+ 	* sel-sched-ir.cc (copy_data_sets): Removed dead code.
+ 	* sel-sched-ir.h (_XLIST_X): Likewise.
+ 	(_XLIST_NEXT): Likewise.
+ 	(_xlist_add): Likewise.
+ 	(_xlist_remove): Likewise.
+ 	(_xlist_clear): Likewise.
+ 	(_xlist_is_in_p): Likewise.
+ 	(_list_iter_cond_x): Likewise.
+ 	(_xlist_iter_remove): Likewise.
+ 	(_FOR_EACH_X): Likewise.
+ 	(_FOR_EACH_X_1): Likewise.
+ 	(sel_save_haifa_priorities): Likewise.
+ 	(insn_eligible_for_subst_p): Likewise.
+ 	(sel_init_invalid_data_sets): Likewise.
+ 	(insn_at_boundary_p): Likewise.
+ 	(copy_data_sets): Likewise.
+ 
  2026-08-15  Georg-Johann Lay  <avr@gjlay.de>
  
  	* config/avr/avr.cc (avr_out_perm_compare_eqne): New static func.
diff -Nrcpad gcc-17-20260816/gcc/DATESTAMP gcc-17-20260823/gcc/DATESTAMP
*** gcc-17-20260816/gcc/DATESTAMP	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/gcc/DATESTAMP	Sun Aug 23 22:32:06 2026
***************
*** 1 ****
! 20260816
--- 1 ----
! 20260823
diff -Nrcpad gcc-17-20260816/gcc/Makefile.in gcc-17-20260823/gcc/Makefile.in
*** gcc-17-20260816/gcc/Makefile.in	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/gcc/Makefile.in	Sun Aug 23 22:32:06 2026
*************** $(lang_checks_parallelized): check-% : s
*** 4794,4812 ****
  	    EXPECT=$(EXPECT) \
  	    check-parallel-$* \
  	    $(patsubst %,check-parallel-$*_%, $(check_p_subdirs)); \
! 	  sums= ; logs= ; \
  	  for dir in $(TESTSUITEDIR)/$* \
  		     $(patsubst %,$(TESTSUITEDIR)/$*%,$(check_p_subdirs));\
  	  do \
  	    if [ -d $$dir ]; then \
! 	      mv -f $$dir/$*.sum $$dir/$*.sum.sep; mv -f $$dir/$*.log $$dir/$*.log.sep; \
! 	      sums="$$sums $$dir/$*.sum.sep"; logs="$$logs $$dir/$*.log.sep"; \
  	    fi; \
  	  done; \
  	  $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh $$sums \
! 	    > $(TESTSUITEDIR)/$*/$*.sum; \
  	  $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh -L $$logs \
! 	    > $(TESTSUITEDIR)/$*/$*.log; \
  	  rm -rf $(TESTSUITEDIR)/$*-parallel || true; \
  	else \
  	  $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \
--- 4794,4821 ----
  	    EXPECT=$(EXPECT) \
  	    check-parallel-$* \
  	    $(patsubst %,check-parallel-$*_%, $(check_p_subdirs)); \
! 	  sums= ; logs= ; lost= ; \
  	  for dir in $(TESTSUITEDIR)/$* \
  		     $(patsubst %,$(TESTSUITEDIR)/$*%,$(check_p_subdirs));\
  	  do \
  	    if [ -d $$dir ]; then \
! 	      if [ -f $$dir/$*.sum ]; then \
! 		mv -f $$dir/$*.sum $$dir/$*.sum.sep; mv -f $$dir/$*.log $$dir/$*.log.sep; \
! 		sums="$$sums $$dir/$*.sum.sep"; logs="$$logs $$dir/$*.log.sep"; \
! 	      else \
! 		lost="$$lost $$dir"; \
! 	      fi; \
  	    fi; \
  	  done; \
+ 	  if [ -n "$$lost" ]; then \
+ 	    echo "warning: $*: these runtest instances produced no results:$$lost" >&2; \
+ 	  fi; \
  	  $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh $$sums \
! 	    > $(TESTSUITEDIR)/$*/$*.sum.tmp || exit 1; \
  	  $(SHELL) $(srcdir)/../contrib/dg-extract-results.sh -L $$logs \
! 	    > $(TESTSUITEDIR)/$*/$*.log.tmp || exit 1; \
! 	  mv -f $(TESTSUITEDIR)/$*/$*.sum.tmp $(TESTSUITEDIR)/$*/$*.sum; \
! 	  mv -f $(TESTSUITEDIR)/$*/$*.log.tmp $(TESTSUITEDIR)/$*/$*.log; \
  	  rm -rf $(TESTSUITEDIR)/$*-parallel || true; \
  	else \
  	  $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \
diff -Nrcpad gcc-17-20260816/gcc/ada/ChangeLog gcc-17-20260823/gcc/ada/ChangeLog
*** gcc-17-20260816/gcc/ada/ChangeLog	Sun Aug 16 22:32:05 2026
--- gcc-17-20260823/gcc/ada/ChangeLog	Sun Aug 23 22:32:06 2026
***************
*** 1,3 ****
--- 1,17 ----
+ 2026-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/126928
+ 	* sem_ch12.adb (In_Local_Package_Of_Formal_Package): New predicate.
+ 	(Analyze_Package_Instantiation): Do not register the instantiation
+ 	of the body if it is present in the local package of a formal one.
+ 	(Need_Subprogram_Instance_Body): Likewise.
+ 
+ 2026-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/126907
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Reduce>: Do not call
+ 	Relocate_Node on nodes of the original unanalyzed tree.
+ 
  2026-08-01  Eric Botcazou  <ebotcazou@adacore.com>
  
  	PR ada/126553
diff -Nrcpad gcc-17-20260816/gcc/ada/sem_attr.adb gcc-17-20260823/gcc/ada/sem_attr.adb
*** gcc-17-20260816/gcc/ada/sem_attr.adb	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/ada/sem_attr.adb	Sun Aug 23 22:32:06 2026
*************** package body Sem_Attr is
*** 13326,13332 ****
                    Copy_Reducer_N : constant Node_Id :=
                                       Copy_Separate_Tree (Reducer_N);
  
!                   Copy_Aggr_Expr : Node_Id;
                    Loop_Var       : Entity_Id;
                    Reducer_Call   : Node_Id;
  
--- 13326,13332 ----
                    Copy_Reducer_N : constant Node_Id :=
                                       Copy_Separate_Tree (Reducer_N);
  
!                   Expr           : Node_Id;
                    Loop_Var       : Entity_Id;
                    Reducer_Call   : Node_Id;
  
*************** package body Sem_Attr is
*** 13377,13383 ****
                       Init_Var : constant Entity_Id :=
                                    Make_Temporary (Loc, 'B');
  
-                      Aggr_Expr  : Node_Id;
                       Dummy_Loop : Node_Id;
                       Init_Nam   : Node_Id;
                       Iter_Spec  : Node_Id;
--- 13377,13382 ----
*************** package body Sem_Attr is
*** 13398,13436 ****
  
                       if Nkind (P) = N_Aggregate then
                          declare
!                            Stream, Stream_It : Node_Id;
                          begin
!                            Stream := First (Component_Associations (P));
!                            Stream_It := Iterator_Specification (Stream);
!                            Aggr_Expr := Expression (Stream);
  
!                            --  Case [for I of It => Aggr_Expr]
  
!                            if Nkind (Stream) = N_Iterated_Component_Association
!                              and then Present (Stream_It)
!                              and then Of_Present (Stream_It)
                             then
                                Iter_Spec :=
                                  Make_Iteration_Scheme (Loc,
                                    Iterator_Specification =>
!                                     Relocate_Node (Stream_It));
                                Loop_Var :=
                                  Defining_Identifier
                                    (Iterator_Specification (Iter_Spec));
  
!                            --  Case [for I in Range => Aggr_Expr]
  
                             else
                                Iter_Spec :=
                                  Make_Iteration_Scheme (Loc,
                                    Loop_Parameter_Specification =>
                                      Make_Loop_Parameter_Specification  (Loc,
                                        Defining_Identifier =>
!                                         Defining_Identifier
!                                           (Copy_Separate_Tree (Stream)),
                                        Discrete_Subtype_Definition =>
!                                         Relocate_Node (First (Discrete_Choices
!                                                                (Stream)))));
                                Loop_Var :=
                                  Defining_Identifier
                                    (Loop_Parameter_Specification (Iter_Spec));
--- 13397,13436 ----
  
                       if Nkind (P) = N_Aggregate then
                          declare
!                            Assoc, Spec : Node_Id;
! 
                          begin
!                            Assoc := First (Component_Associations (P));
!                            Spec := Iterator_Specification (Assoc);
!                            Expr := Copy_Separate_Tree (Expression (Assoc));
  
!                            --  Case [for I of It => Expr]
  
!                            if Nkind (Assoc) = N_Iterated_Component_Association
!                              and then Present (Spec)
!                              and then Of_Present (Spec)
                             then
                                Iter_Spec :=
                                  Make_Iteration_Scheme (Loc,
                                    Iterator_Specification =>
!                                     Copy_Separate_Tree (Spec));
                                Loop_Var :=
                                  Defining_Identifier
                                    (Iterator_Specification (Iter_Spec));
  
!                            --  Case [for I in Range => Expr]
  
                             else
+                               Assoc := Copy_Separate_Tree (Assoc);
                                Iter_Spec :=
                                  Make_Iteration_Scheme (Loc,
                                    Loop_Parameter_Specification =>
                                      Make_Loop_Parameter_Specification  (Loc,
                                        Defining_Identifier =>
!                                         Defining_Identifier (Assoc),
                                        Discrete_Subtype_Definition =>
!                                         Relocate_Node
!                                           (First (Discrete_Choices (Assoc)))));
                                Loop_Var :=
                                  Defining_Identifier
                                    (Loop_Parameter_Specification (Iter_Spec));
*************** package body Sem_Attr is
*** 13441,13447 ****
  
                       else
                          Loop_Var := Make_Temporary (Loc, 'I');
!                         Aggr_Expr := Make_Identifier (Loc, Chars (Loop_Var));
                          Iter_Spec := Make_Iteration_Scheme (Loc,
                            Iterator_Specification =>
                              Make_Iterator_Specification (Loc,
--- 13441,13447 ----
  
                       else
                          Loop_Var := Make_Temporary (Loc, 'I');
!                         Expr := Make_Identifier (Loc, Chars (Loop_Var));
                          Iter_Spec := Make_Iteration_Scheme (Loc,
                            Iterator_Specification =>
                              Make_Iterator_Specification (Loc,
*************** package body Sem_Attr is
*** 13465,13486 ****
                       pragma Assert (Present (Etype (Loop_Var)));
                       pragma Assert (Etype (Loop_Var) /= Any_Type);
  
-                      Copy_Aggr_Expr := Copy_Separate_Tree (Aggr_Expr);
- 
                       case Reducer_Call_Statement_Kind is
                          when E_Procedure =>
                             Reducer_Call :=
                               Make_Procedure_Call_Statement (Sloc (Reducer_N),
                                 Name => Copy_Reducer_N,
                                 Parameter_Associations =>
!                                  New_List (Init_Nam, Copy_Aggr_Expr));
  
                          when E_Function | E_Operator =>
                             Reducer_Call :=
                               Make_Function_Call (Sloc (Reducer_N),
                                 Name => Copy_Reducer_N,
                                 Parameter_Associations =>
!                                  New_List (Init_Nam, Copy_Aggr_Expr));
                             Set_Etype (Reducer_Call, Accum_Typ);
  
                          when others =>
--- 13465,13484 ----
                       pragma Assert (Present (Etype (Loop_Var)));
                       pragma Assert (Etype (Loop_Var) /= Any_Type);
  
                       case Reducer_Call_Statement_Kind is
                          when E_Procedure =>
                             Reducer_Call :=
                               Make_Procedure_Call_Statement (Sloc (Reducer_N),
                                 Name => Copy_Reducer_N,
                                 Parameter_Associations =>
!                                  New_List (Init_Nam, Expr));
  
                          when E_Function | E_Operator =>
                             Reducer_Call :=
                               Make_Function_Call (Sloc (Reducer_N),
                                 Name => Copy_Reducer_N,
                                 Parameter_Associations =>
!                                  New_List (Init_Nam, Expr));
                             Set_Etype (Reducer_Call, Accum_Typ);
  
                          when others =>
*************** package body Sem_Attr is
*** 13520,13532 ****
  
                    elsif not Is_Overloaded (Reducer_Call) then
                       pragma Assert (Present (Entity (Copy_Reducer_N)));
!                      pragma Assert (Present (Etype (Copy_Aggr_Expr)));
  
                       --  Set the correct reducer entity and then return the
                       --  value subtype.
  
                       Set_Entity (Reducer_N, Entity (Copy_Reducer_N));
!                      return Etype (Copy_Aggr_Expr);
                    end if;
  
                    return Empty;
--- 13518,13530 ----
  
                    elsif not Is_Overloaded (Reducer_Call) then
                       pragma Assert (Present (Entity (Copy_Reducer_N)));
!                      pragma Assert (Present (Etype (Expr)));
  
                       --  Set the correct reducer entity and then return the
                       --  value subtype.
  
                       Set_Entity (Reducer_N, Entity (Copy_Reducer_N));
!                      return Etype (Expr);
                    end if;
  
                    return Empty;
diff -Nrcpad gcc-17-20260816/gcc/ada/sem_ch12.adb gcc-17-20260823/gcc/ada/sem_ch12.adb
*** gcc-17-20260816/gcc/ada/sem_ch12.adb	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/ada/sem_ch12.adb	Sun Aug 23 22:32:06 2026
*************** package body Sem_Ch12 is
*** 776,781 ****
--- 776,786 ----
     --  not done for the instantiation of the bodies, which only require the
     --  instances of the generic parents to be in scope.
  
+    function In_Local_Package_Of_Formal_Package (N : Node_Id) return Boolean;
+    --  Return whether N is present in the local package created during the
+    --  analysis of a formal package (see Analyze_Formal_Package_Declaration).
+    --  Used to avoid instantiating generic bodies in such a local package.
+ 
     function In_Main_Context (E : Entity_Id) return Boolean;
     --  Check whether an instantiation is in the context of the main unit.
     --  Used to determine whether its body should be elaborated to allow
*************** package body Sem_Ch12 is
*** 5438,5443 ****
--- 5443,5449 ----
                 and then Needs_Body_Instantiated (Gen_Unit)
                 and then not Is_Abbrev
                 and then not Inline_Now
+                and then not In_Local_Package_Of_Formal_Package (N)
                 and then (Operating_Mode = Generate_Code
                            or else (Operating_Mode = Check_Semantics
                                      and then GNATprove_Mode));
*************** package body Sem_Ch12 is
*** 6592,6597 ****
--- 6598,6607 ----
          and then (not Is_Generic_Unit (Cunit_Entity (Main_Unit))
                     or else Parent (N) = Aux_Decls_Node (Cunit (Main_Unit)))
  
+         --  Likewise in the local package built for formal packages
+ 
+         and then not In_Local_Package_Of_Formal_Package (N)
+ 
          --  Must be generating code or analyzing code in GNATprove mode
  
          and then (Operating_Mode = Generate_Code
*************** package body Sem_Ch12 is
*** 11285,11290 ****
--- 11295,11320 ----
          (Current_Scope, Current_Scope, Assoc_Null);
     end Init_Env;
  
+    ----------------------------------------
+    -- In_Local_Package_Of_Formal_Package --
+    ----------------------------------------
+ 
+    function In_Local_Package_Of_Formal_Package (N : Node_Id) return Boolean is
+       Par : Node_Id;
+ 
+    begin
+       Par := Parent (N);
+       while Present (Par) and then Nkind (Par) /= N_Compilation_Unit loop
+          if Nkind (Original_Node (Par)) = N_Formal_Package_Declaration then
+             return True;
+          end if;
+ 
+          Par := Parent (Par);
+       end loop;
+ 
+       return False;
+    end In_Local_Package_Of_Formal_Package;
+ 
     ---------------------
     -- In_Main_Context --
     ---------------------
diff -Nrcpad gcc-17-20260816/gcc/analyzer/ChangeLog gcc-17-20260823/gcc/analyzer/ChangeLog
*** gcc-17-20260816/gcc/analyzer/ChangeLog	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/ChangeLog	Sun Aug 23 22:32:06 2026
***************
*** 1,3 ****
--- 1,30 ----
+ 2026-08-18  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	PR analyzer/110578
+ 	* kf-lang-cp.cc: Include "cgraph.h" and "ipa-utils.h".
+ 	(struct dyncast_subobject): New struct.
+ 	(get_type_from_tinfo_arg): New function.
+ 	(lookup_binfo_at_same_offset): New function.
+ 	(lookup_subobject_matches): New function.
+ 	(evaluate_dyncast): New function.
+ 	(class kf_dynamic_cast): New class.
+ 	(register_known_functions_lang_cp): Register "__dynamic_cast".
+ 	* region-model.cc (region_model::get_vtable_from_obj): New function,
+ 	factored out of...
+ 	(region_model::get_fndecl_for_virtual_call): ...here.  Call it.
+ 	Update comment.
+ 	* region-model.h (region_model::get_vtable_from_obj): New decl.
+ 
+ 2026-08-18  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	* analyzer.cc (is_fndecl_in_toplevel_namespace_p): New function,
+ 	factored out of...
+ 	(is_std_function_p): ...here.  Call it.
+ 	(is_cxxabi_function_p): New function.
+ 	* common.h (is_cxxabi_function_p): New decl.
+ 	* known-function-manager.cc (known_function_manager::get_match):
+ 	Also match functions declared in namespace __cxxabiv1.
+ 
  2026-08-06  Aldy Hernandez  <aldy@quesejoda.com>
  
  	* region-model.cc (region_model::eval_condition): Likewise.
diff -Nrcpad gcc-17-20260816/gcc/analyzer/analyzer.cc gcc-17-20260823/gcc/analyzer/analyzer.cc
*** gcc-17-20260816/gcc/analyzer/analyzer.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/analyzer.cc	Sun Aug 23 22:32:06 2026
*************** is_named_call_p (const_tree fndecl, cons
*** 349,375 ****
    return 0 == strcmp (tname, funcname);
  }
  
! /* Return true if FNDECL is within the namespace "std".
     Compare with cp/typeck.cc: decl_in_std_namespace_p, but this doesn't
     rely on being the C++ FE (or handle inline namespaces inside of std).  */
  
  bool
! is_std_function_p (const_tree fndecl)
  {
    tree name_decl = DECL_NAME (fndecl);
    if (!name_decl)
      return false;
    if (!DECL_CONTEXT (fndecl))
      return false;
    if (TREE_CODE (DECL_CONTEXT (fndecl)) != NAMESPACE_DECL)
      return false;
    tree ns = DECL_CONTEXT (fndecl);
    if (!(DECL_CONTEXT (ns) == NULL_TREE
  	|| TREE_CODE (DECL_CONTEXT (ns)) == TRANSLATION_UNIT_DECL))
      return false;
    if (!DECL_NAME (ns))
      return false;
!   return id_equal ("std", DECL_NAME (ns));
  }
  
  /* Like is_named_call_p, but look for std::FUNCNAME.  */
--- 349,395 ----
    return 0 == strcmp (tname, funcname);
  }
  
! /* Return true if FNDECL is declared directly within a top-level
!    namespace named NS_NAME (e.g. "std" or "__cxxabiv1").
     Compare with cp/typeck.cc: decl_in_std_namespace_p, but this doesn't
     rely on being the C++ FE (or handle inline namespaces inside of std).  */
  
  bool
! is_fndecl_in_toplevel_namespace_p (const_tree fndecl, const char *ns_name)
  {
    tree name_decl = DECL_NAME (fndecl);
    if (!name_decl)
      return false;
+ 
    if (!DECL_CONTEXT (fndecl))
      return false;
    if (TREE_CODE (DECL_CONTEXT (fndecl)) != NAMESPACE_DECL)
      return false;
    tree ns = DECL_CONTEXT (fndecl);
+   /* Require the namespace itself to be at top level.  */
    if (!(DECL_CONTEXT (ns) == NULL_TREE
  	|| TREE_CODE (DECL_CONTEXT (ns)) == TRANSLATION_UNIT_DECL))
      return false;
    if (!DECL_NAME (ns))
      return false;
! 
!   return id_equal (ns_name, DECL_NAME (ns));
! }
! 
! /* Return true if FNDECL is within the namespace "std".  */
! 
! bool
! is_std_function_p (const_tree fndecl)
! {
!   return is_fndecl_in_toplevel_namespace_p (fndecl, "std");
! }
! 
! /* Return true if FNDECL is within the namespace "__cxxabiv1".  */
! 
! bool
! is_cxxabi_function_p (const_tree fndecl)
! {
!   return is_fndecl_in_toplevel_namespace_p (fndecl, "__cxxabiv1");
  }
  
  /* Like is_named_call_p, but look for std::FUNCNAME.  */
diff -Nrcpad gcc-17-20260816/gcc/analyzer/common.h gcc-17-20260823/gcc/analyzer/common.h
*** gcc-17-20260816/gcc/analyzer/common.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/common.h	Sun Aug 23 22:32:07 2026
*************** extern bool is_named_call_p (const_tree
*** 544,549 ****
--- 544,550 ----
  extern bool is_named_call_p (const_tree fndecl, const char *funcname,
  			     const gcall &call, unsigned int num_args);
  extern bool is_std_function_p (const_tree fndecl);
+ extern bool is_cxxabi_function_p (const_tree fndecl);
  extern bool is_std_named_call_p (const_tree fndecl, const char *funcname);
  extern bool is_std_named_call_p (const_tree fndecl, const char *funcname,
  				 const gcall &call, unsigned int num_args);
diff -Nrcpad gcc-17-20260816/gcc/analyzer/kf-lang-cp.cc gcc-17-20260823/gcc/analyzer/kf-lang-cp.cc
*** gcc-17-20260816/gcc/analyzer/kf-lang-cp.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/kf-lang-cp.cc	Sun Aug 23 22:32:07 2026
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,26 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "analyzer/common.h"
+ #include "cgraph.h"
+ #include "ipa-utils.h"
  
  #include "diagnostic.h"
  
*************** namespace ana {
*** 63,68 ****
--- 65,356 ----
  
  /* Implementations of specific functions.  */
  
+ /* Handler for __dynamic_cast.  */
+ 
+ /* A candidate TYPE subobject found on one inheritance path.  */
+ 
+ struct dyncast_subobject
+ {
+   dyncast_subobject () : binfo (NULL_TREE), accessible (false) {}
+   dyncast_subobject (tree binfo, bool accessible)
+     : binfo (binfo), accessible (accessible)
+   {}
+ 
+   tree binfo;	   /* the BINFO that represents our subobject.
+ 		      NULL_TREE if failed.  */
+   bool accessible; /* Every edge from the root was public.  */
+ };
+ 
+ /* Recover the class type from a type_info argument of __dynamic_cast, expected
+    to be &_ZTIxxx.  The C++ FE sets TREE_TYPE on the tinfo decl's DECL_NAME
+    identifier.  __dynamic_cast is callable directly, so a runtime tinfo pointer
+    (an SSA name) can exist.  Return NULL_TREE on any shape mismatch.  */
+ 
+ static tree
+ get_type_from_tinfo_arg (tree arg)
+ {
+   if (!arg || TREE_CODE (arg) != ADDR_EXPR)
+     return NULL_TREE;
+   tree tinfo_decl = TREE_OPERAND (arg, 0);
+   if (!DECL_P (tinfo_decl) || !DECL_NAME (tinfo_decl))
+     return NULL_TREE;
+   tree type = TREE_TYPE (DECL_NAME (tinfo_decl));
+   if (!type || !RECORD_OR_UNION_TYPE_P (type))
+     return NULL_TREE;
+   return TYPE_MAIN_VARIANT (type);
+ }
+ 
+ /* Find the sub-BINFO of BINFO that has type TARGET_TYPE and sits at the same
+    address as BINFO itself (i.e. at relative offset 0) by descending through
+    every base at that same (absolute) offset.  */
+ 
+ static tree
+ lookup_binfo_at_same_offset (tree binfo, tree target_type)
+ {
+   if (types_same_for_odr (BINFO_TYPE (binfo), target_type))
+     return binfo;
+ 
+   tree offset = BINFO_OFFSET (binfo);
+   tree base_binfo;
+   for (unsigned i = 0; BINFO_BASE_ITERATE (binfo, i, base_binfo); i++)
+     if (tree_int_cst_equal (BINFO_OFFSET (base_binfo), offset))
+       if (tree found = lookup_binfo_at_same_offset (base_binfo, target_type))
+ 	return found;
+   return NULL_TREE;
+ }
+ 
+ /* Look recursively for a BINFO that matches our DST_TYPE.  This method might
+    find multiple matches. If none is found, matches won't be changed.
+ 
+    Even if one path is private, it is still ambiguous according to the
+    definition, so that case still counts as having multiple matches.  That
+    means we ignore access specifiers when searching bases.
+ 
+    Morally virtual matches of the same type under different virtual ancestors
+    are distinct subobjects, i.e:
+ 
+ 			 class B0 {};
+ 	class V1 : B0 {};            class V2 : B0 {};
+     class B2 : virtual V1 {};    class B4 : virtual V2 {};
+ 		     class MD : B2, B3 {};
+ 
+    Here, each B0 is a different subobject, so we must account for this case
+    when checking virtual inheritance.  We compare the BINFO_OFFSET of all the
+    BINFOs that match (the offset is relative to our most-derived object) to
+    decide if they belong to the same suboject.  Note that if it is at the same
+    BINFO_OFFSET and has the same TREE_TYPE, it must necessarily be the same
+    subobject.  */
+ 
+ static void
+ lookup_subobject_matches (const_tree target_type, const dyncast_subobject match,
+ 			  auto_vec<dyncast_subobject> &matches)
+ {
+   if (types_same_for_odr (BINFO_TYPE (match.binfo), target_type))
+     {
+       /* Check if we had already found this particular subobject.  */
+       tree match_offset = BINFO_OFFSET (match.binfo);
+       for (auto &subobject : matches)
+ 	if (tree_int_cst_equal (BINFO_OFFSET (subobject.binfo), match_offset))
+ 	  {
+ 	    subobject.accessible |= match.accessible;
+ 	    return; /* We are adding the same subobject, so skip it.  */
+ 	  }
+       matches.safe_push (match);
+       return;
+     }
+   tree parent_binfo = match.binfo;
+   tree base_binfo;
+   for (unsigned i = 0; BINFO_BASE_ITERATE (parent_binfo, i, base_binfo); i++)
+     {
+       dyncast_subobject child = match;
+       child.binfo = base_binfo;
+       /* If BINFO_BASE_ACCESSES is not present, public access is implied.  */
+       child.accessible
+ 	&= !BINFO_BASE_ACCESSES (parent_binfo)
+ 	   || BINFO_BASE_ACCESS (parent_binfo, i) == access_public_node;
+       /* Check if the next binfo might be our DST_TYPE binfo recursively.  */
+       lookup_subobject_matches (target_type, child, matches);
+     }
+ }
+ 
+ /* We implement the runtime check rules as per [expr.dynamic.cast]9.
+    As a general overview, those rules state:
+      [expr.dynamic.cast]/9.1: Does SRC_OBJ point to a public base subobject of
+        a DST_TYPE object?  And is there only one DST_TYPE object derived from
+        SRC_OBJ?
+        We expect the hierarchy to be something like:
+        SRC_TYPE -> ... -> DST_TYPE -> ... -> MD_TYPE.
+ 
+      [expr.dynamic.cast]/9.2: Otherwise, does SRC_OBJ point to a public base
+        subobject of a MDTYPE object?  And is DST_TYPE an unambiguous and public
+        base of MDTYPE?
+        We expect the hierarchy to be something like:
+        MD_TYPE -> ... -> DST_TYPE
+ 
+      [expr.dynamic.cast]/9.3: Otherwise, the runtime check fails.  */
+ 
+ static dyncast_subobject
+ evaluate_dyncast (tree dst_type, tree md_binfo, tree src_binfo)
+ {
+   dyncast_subobject no_base_match;
+ 
+   /* Start by assuming the path will be public.  */
+   auto_vec<dyncast_subobject> dst_matches;
+   dyncast_subobject md_subobject = {md_binfo, /* accessible = */ true};
+   lookup_subobject_matches (dst_type, md_subobject, dst_matches);
+ 
+   /* Per [expr.dynamic.cast]/9.1:
+      Only one object of DST_TYPE can be derived from this SRC_OBJ and
+      The path from DST -> SRC must be public.  */
+   tree src_offset = BINFO_OFFSET (src_binfo);
+   tree src_type = BINFO_TYPE (src_binfo);
+ 
+   auto_vec<dyncast_subobject> clause1_matches;
+   for (const auto &dst_subobj : dst_matches)
+     {
+       auto_vec<dyncast_subobject> src_matches;
+       dyncast_subobject from_dst = {dst_subobj.binfo, /* accessible = */ true};
+       lookup_subobject_matches (src_type, from_dst, src_matches);
+       /* Only keep matches that derive from this src subobject.  */
+       for (const auto &src_subobj : src_matches)
+ 	if (tree_int_cst_equal (BINFO_OFFSET (src_subobj.binfo), src_offset))
+ 	  /* Keep dst BINFO but save whether SRC is a public base of DST.  */
+ 	  clause1_matches.safe_push ({dst_subobj.binfo, src_subobj.accessible});
+     }
+   if (clause1_matches.length () == 1 && clause1_matches[0].accessible)
+     return clause1_matches[0]; /* No ambiguity, only one public match.  */
+ 
+   /* No match or the match we found was private.  Try clause 2.  */
+ 
+   /* Otherwise, per [expr.dynamic.cast]/9.2:
+       Require a public path from MD_OBJ -> SRC_OBJ and
+       Require that DST_TYPE is an unambiguous and public base of MD_TYPE.  */
+   if (dst_matches.length () == 1 && dst_matches[0].accessible)
+     {
+       auto_vec<dyncast_subobject> src_matches;
+       lookup_subobject_matches (src_type, md_subobject, src_matches);
+       /* Find any public path from MD_OBJ -> SRC_OBJ.  */
+       for (const auto &src_subobj : src_matches)
+ 	if (src_subobj.accessible)
+ 	  return dst_matches[0]; /* Found a public match.  */
+     }
+   return no_base_match; /* No match or the match we found was private.  */
+ }
+ 
+ class kf_dynamic_cast : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     /* A call will look something like:
+        Derived *d;
+        d = __dynamic_cast ((Base*) b, &_ZTI1Base, &_ZTI1Derived, 8);  */
+     return (cd.num_args () == 4 && POINTER_TYPE_P (cd.get_arg_type (0))
+ 	    && POINTER_TYPE_P (cd.get_arg_type (1))
+ 	    && POINTER_TYPE_P (cd.get_arg_type (2))
+ 	    && INTEGRAL_TYPE_P (cd.get_arg_type (3)));
+   }
+   void impl_call_post (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     region_model_manager *mgr = cd.get_manager ();
+ 
+     cd.set_any_lhs_with_defaults ();
+ 
+     tree dst_ptr_type = cd.get_lhs_type ();
+     if (!dst_ptr_type)
+       return;
+ 
+     /* Recover the class types from the tinfo args.  */
+     tree src_type = get_type_from_tinfo_arg (cd.get_arg_tree (1));
+     tree dst_type = get_type_from_tinfo_arg (cd.get_arg_tree (2));
+     if (!src_type || !dst_type)
+       return;
+ 
+     /* Read the vptr binding of the object; VPTR_OFF selects the
+        sub-vtable within the vtable decl, so it identifies which subobject's
+        vptr we read.  */
+     tree src_obj = cd.get_arg_tree (0);
+     unsigned HOST_WIDE_INT vptr_off;
+     tree vtable
+       = model->get_vtable_from_obj (src_obj, src_type, mgr, nullptr, &vptr_off);
+     /* The class the vtable belongs to is the dynamic (most-derived) type of
+        the object.  VTABLE is whatever decl the vptr slot happened to point at,
+        so check it really is a vtable.  */
+     if (!vtable || !VAR_P (vtable) || !DECL_VIRTUAL_P (vtable))
+       return;
+     tree mdtype = DECL_CONTEXT (vtable);
+     if (!mdtype || !RECORD_OR_UNION_TYPE_P (mdtype))
+       return;
+     tree md_binfo = TYPE_BINFO (mdtype);
+     if (!md_binfo)
+       return;
+ 
+     /* Given the value stored to SRC_OBJ's vtpr field (&_ZTV* + offset), find
+        which subobject of this hierarchy would have this value written into its
+        vptr.  */
+     tree vtable_binfo
+       = subbinfo_with_vtable_at_offset (md_binfo, vptr_off, vtable);
+     if (!vtable_binfo)
+       return;
+     /* With a shared primary-base vtable the owning binfo may be an enclosing
+        type.  Consider:
+ 	 class A {};
+ 	 class B {};
+ 	 class C : B {};
+ 	 class D : A, C {};
+        Here the vptr value stored in the B-subobject's slot is owned by the C
+        binfo (C's sub-vtable group), and a lookup with B's vptr value returns
+        the C binfo, not B's (BINFO_VTABLE is only set on the owner, cf.
+        ipa-devirt.cc:61).  In this case, the src subobject sits on its primary
+        chain (relative offset 0), which lookup_binfo_at_same_offset finds.  */
+     tree src_binfo = lookup_binfo_at_same_offset (vtable_binfo, src_type);
+     if (!src_binfo)
+       return;
+ 
+     dyncast_subobject dst_match
+       = evaluate_dyncast (dst_type, md_binfo, src_binfo);
+ 
+     if (!dst_match.binfo)
+       { /* [expr.dynamic.cast]/9.3: Otherwise, the runtime check failed.  */
+ 	cd.maybe_set_lhs (mgr->get_or_create_null_ptr (dst_ptr_type));
+ 	return;
+       }
+ 
+     /* Build a pointer to the dst subobject.  Work in byte offsets relative to
+        SRC_REG's base region; we never need a region for the mdtype object
+        itself, only its start offset, recovered from where the src subobject
+        sits within MDTYPE.  */
+     const region *src_reg = cd.deref_ptr_arg (0);
+     region_offset off = src_reg->get_offset (mgr);
+     if (!off.concrete_p ())
+       return; /* Bail, leave lhs conjured.  */
+     byte_offset_t src_obj_start;
+     if (!off.get_concrete_byte_offset (&src_obj_start))
+       return;
+ 
+     HOST_WIDE_INT src_off_in_md = tree_to_shwi (BINFO_OFFSET (src_binfo));
+     HOST_WIDE_INT dst_off_in_md = tree_to_shwi (BINFO_OFFSET (dst_match.binfo));
+     HOST_WIDE_INT md_start_in_base = src_obj_start.to_shwi () - src_off_in_md;
+     if (md_start_in_base < 0)
+       return; /* Layout disagreement between the store and the binfo data;
+ 		 bail rather than build a negative-offset region.  */
+     HOST_WIDE_INT dst_off_in_base = md_start_in_base + dst_off_in_md;
+ 
+     /* BASE_REG is the outermost region, not necessarily the mdtype
+        object (it might sit at a nonzero offset inside BASE_REG, e.g. as an
+        array element or a member subobject).  The store binds values by byte
+        ranges within a base region, so a concrete offset_region aliases the
+        FE's field-path accesses to the same bytes.  */
+     const region *base_reg = off.get_base_region ();
+     const svalue *dst_off_sval
+       = mgr->get_or_create_int_cst (size_type_node, dst_off_in_base);
+     const region *dst_reg
+       = mgr->get_offset_region (base_reg, dst_type, dst_off_sval);
+     cd.maybe_set_lhs (mgr->get_ptr_svalue (dst_ptr_type, dst_reg));
+   }
+ };
+ 
  /* Handler for "operator new" and "operator new []".  */
  
  class kf_operator_new : public known_function
*************** register_known_functions_lang_cp (known_
*** 371,376 ****
--- 659,669 ----
    kfm.add ("__cxa_end_catch", std::make_unique<kf_cxa_end_catch> ());
    kfm.add ("__cxa_call_unexpected",
  	   std::make_unique<kf_cxa_call_unexpected> ());
+ 
+   /* Itanium C++ ABI's "The dynamic_cast Algorithm"
+      https://itanium-cxx-abi.github.io/cxx-abi/abi.html#dynamic_cast-algorithm
+    */
+   kfm.add ("__dynamic_cast", std::make_unique<kf_dynamic_cast> ());
  }
  
  } // namespace ana
diff -Nrcpad gcc-17-20260816/gcc/analyzer/known-function-manager.cc gcc-17-20260823/gcc/analyzer/known-function-manager.cc
*** gcc-17-20260816/gcc/analyzer/known-function-manager.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/known-function-manager.cc	Sun Aug 23 22:32:07 2026
*************** known_function_manager::get_match (tree
*** 120,128 ****
        return nullptr;
      }
  
!   if (DECL_CONTEXT (fndecl)
!       && TREE_CODE (DECL_CONTEXT (fndecl)) != TRANSLATION_UNIT_DECL)
!     return nullptr;
    if (tree identifier = DECL_NAME (fndecl))
      if (const known_function *candidate = get_by_identifier (identifier))
        if (candidate->matches_call_types_p (cd))
--- 120,132 ----
        return nullptr;
      }
  
!   /* Only match functions declared at global scope, or within namespace
!      __cxxabiv1 (e.g. __dynamic_cast).  */
!   if (!is_cxxabi_function_p (fndecl))
!     if (DECL_CONTEXT (fndecl)
! 	&& TREE_CODE (DECL_CONTEXT (fndecl)) != TRANSLATION_UNIT_DECL)
!       return nullptr;
! 
    if (tree identifier = DECL_NAME (fndecl))
      if (const known_function *candidate = get_by_identifier (identifier))
        if (candidate->matches_call_types_p (cd))
diff -Nrcpad gcc-17-20260816/gcc/analyzer/region-model.cc gcc-17-20260823/gcc/analyzer/region-model.cc
*** gcc-17-20260816/gcc/analyzer/region-model.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/region-model.cc	Sun Aug 23 22:32:07 2026
*************** region_model::can_merge_with_p (const re
*** 6490,6514 ****
    return true;
  }
  
! /* Attempt to get the fndecl for a virtual call via OBJ_TYPE_REF, or
!    NULL_TREE if it can't be resolved.
! 
!    Reads the value bound to the object's vptr field (OBJ_TYPE_REF_OBJECT's
!    vfield).
!    If that value has the form "&vtable_decl + constant" (a region_svalue for a
!    _ZTV* decl plus a byte offset), recover the vtable decl and offset and use
!    gimple_get_virt_method_for_vtable, together with OBJ_TYPE_REF_TOKEN, to look
!    up the concrete fndecl in the vtable's initializer.
  
!    Relies on the store having bound the vptr field to the _ZTV* instance, so no
!    separate modeling of the object's dynamic type is needed.  */
  
  tree
! region_model::get_fndecl_for_virtual_call (const_tree obj_type_ref,
! 					   region_model_context *ctxt)
  {
-   tree obj = OBJ_TYPE_REF_OBJECT (obj_type_ref);
-   tree obj_type = obj_type_ref_class (obj_type_ref);
    if (!obj_type)
      return NULL_TREE;
    tree vfield = TYPE_VFIELD (obj_type);
--- 6490,6512 ----
    return true;
  }
  
! /* Recover the vtable OBJ's vptr (for OBJ_TYPE) actually points to, plus the
!    byte offset into it, so callers can recover the most-derived type from the
!    vtable's DECL_CONTEXT and BINFO.
  
!    Only recognizes the shape we model for a vptr store, "vptr_field =
!    &vtable_decl + offset", i.e. a POINTER_PLUS_EXPR binop_svalue of a
!    region_svalue for the _ZTV* decl and a constant offset.  The offset is
!    nonzero when this vptr slot belongs to a non-primary base's own sub-vtable
!    group within the same decl; we return it via OUT for callers that need to
!    index into the vtable (e.g. gimple_get_virt_method_for_vtable).  */
  
  tree
! region_model::get_vtable_from_obj (tree obj, tree obj_type,
! 				   region_model_manager *mgr,
! 				   region_model_context *ctxt,
! 				   unsigned HOST_WIDE_INT *out) const
  {
    if (!obj_type)
      return NULL_TREE;
    tree vfield = TYPE_VFIELD (obj_type);
*************** region_model::get_fndecl_for_virtual_cal
*** 6517,6523 ****
  
    const svalue *obj_sval = get_rvalue (obj, ctxt);
    const region *obj_reg = deref_rvalue (obj_sval, obj, ctxt);
!   const region *vptr_reg = m_mgr->get_field_region (obj_reg, vfield);
  
    const svalue *vptr_sval = get_store_value (vptr_reg, ctxt);
    while (const svalue *cast = vptr_sval->maybe_undo_cast ())
--- 6515,6521 ----
  
    const svalue *obj_sval = get_rvalue (obj, ctxt);
    const region *obj_reg = deref_rvalue (obj_sval, obj, ctxt);
!   const region *vptr_reg = mgr->get_field_region (obj_reg, vfield);
  
    const svalue *vptr_sval = get_store_value (vptr_reg, ctxt);
    while (const svalue *cast = vptr_sval->maybe_undo_cast ())
*************** region_model::get_fndecl_for_virtual_cal
*** 6527,6546 ****
    if (!b || b->get_op () != POINTER_PLUS_EXPR)
      return NULL_TREE;
  
-   vptr_sval = b->get_arg0 ();
    const svalue *offset_sval = b->get_arg1 ();
- 
    tree offset_const = offset_sval->maybe_get_constant ();
    if (!offset_const || TREE_CODE (offset_const) != INTEGER_CST)
      return NULL_TREE;
!   unsigned HOST_WIDE_INT offset = tree_to_uhwi (offset_const);
  
    const region_svalue *vptr = vptr_sval->dyn_cast_region_svalue ();
    /* Give up if we have a conjured vptr.  */
    if (!vptr)
      return NULL_TREE;
  
    tree vtable = vptr->get_pointee ()->maybe_get_decl ();
    if (!vtable)
      return NULL_TREE;
  
--- 6525,6577 ----
    if (!b || b->get_op () != POINTER_PLUS_EXPR)
      return NULL_TREE;
  
    const svalue *offset_sval = b->get_arg1 ();
    tree offset_const = offset_sval->maybe_get_constant ();
    if (!offset_const || TREE_CODE (offset_const) != INTEGER_CST)
      return NULL_TREE;
!   if (out)
!     *out = tree_to_uhwi (offset_const);
  
+   vptr_sval = b->get_arg0 ();
    const region_svalue *vptr = vptr_sval->dyn_cast_region_svalue ();
    /* Give up if we have a conjured vptr.  */
    if (!vptr)
      return NULL_TREE;
  
    tree vtable = vptr->get_pointee ()->maybe_get_decl ();
+   return vtable;
+ }
+ 
+ /* Attempt to get the fndecl for a virtual call via OBJ_TYPE_REF, or
+    NULL_TREE if it can't be resolved.
+ 
+    A virtual call's callee is a GIMPLE OBJ_TYPE_REF:
+      OBJ_TYPE_REF(EXPR; (TYPE)OBJECT->TOKEN)
+    EXPR is the function pointer actually loaded and called; OBJECT, TYPE and
+    TOKEN are devirtualization metadata, not needed to perform the call itself.
+    OBJECT is the "this" pointer, TYPE its static type, TOKEN the vtable slot
+    index.  We ignore EXPR and instead resolve TOKEN against OBJECT's modeled
+    dynamic type rather than its static TYPE.
+ 
+    Reads the value bound to the object's vptr field (OBJ_TYPE_REF_OBJECT's
+    vfield).
+    If that value has the form "&vtable_decl + constant" (a region_svalue for a
+    _ZTV* decl plus a byte offset), recover the vtable decl and offset and use
+    gimple_get_virt_method_for_vtable, together with OBJ_TYPE_REF_TOKEN, to look
+    up the concrete fndecl in the vtable's initializer.
+ 
+    Relies on the store having bound the vptr field to the _ZTV* instance, so no
+    separate modeling of the object's dynamic type is needed.  */
+ 
+ tree
+ region_model::get_fndecl_for_virtual_call (const_tree obj_type_ref,
+ 					   region_model_context *ctxt)
+ {
+   tree obj = OBJ_TYPE_REF_OBJECT (obj_type_ref);
+   tree obj_type = obj_type_ref_class (obj_type_ref);
+ 
+   unsigned HOST_WIDE_INT offset;
+   tree vtable = get_vtable_from_obj (obj, obj_type, m_mgr, ctxt, &offset);
    if (!vtable)
      return NULL_TREE;
  
diff -Nrcpad gcc-17-20260816/gcc/analyzer/region-model.h gcc-17-20260823/gcc/analyzer/region-model.h
*** gcc-17-20260816/gcc/analyzer/region-model.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/analyzer/region-model.h	Sun Aug 23 22:32:07 2026
*************** class region_model
*** 512,517 ****
--- 512,521 ----
    tree get_fndecl_for_virtual_call (const_tree fn_ptr,
  				    region_model_context *ctxt);
  
+   tree get_vtable_from_obj (tree obj, tree obj_type, region_model_manager *mgr,
+ 			    region_model_context *ctxt,
+ 			    unsigned HOST_WIDE_INT *out = nullptr) const;
+ 
    void get_regions_for_current_frame (auto_vec<const decl_region *> *out) const;
    static void append_regions_cb (const region *base_reg,
  				 struct append_regions_cb_data *data);
diff -Nrcpad gcc-17-20260816/gcc/auto-profile.cc gcc-17-20260823/gcc/auto-profile.cc
*** gcc-17-20260816/gcc/auto-profile.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/auto-profile.cc	Sun Aug 23 22:32:07 2026
*************** function_instance::match (cgraph_node *n
*** 1764,1770 ****
  	  gcc_assert (!info);
  	  dump_stmt (phi, info, NULL, stack);
  	  counts.add (info);
! 	  for (edge e : bb->succs)
  	    {
  	      location_t phi_loc
  		= gimple_phi_arg_location_from_edge (phi, e);
--- 1764,1771 ----
  	  gcc_assert (!info);
  	  dump_stmt (phi, info, NULL, stack);
  	  counts.add (info);
! 	  /* PHI arguments are indexed by incoming (predecessor) edges.  */
! 	  for (edge e : bb->preds)
  	    {
  	      location_t phi_loc
  		= gimple_phi_arg_location_from_edge (phi, e);
*************** afdo_calculate_branch_prob (bb_set *anno
*** 4420,4425 ****
--- 4421,4431 ----
  	    }
        }
    afdo_adjust_guessed_profile (annotated_bb);
+   /* Avoid scaling with a zero entry count during IPA profile merging.  */
+   basic_block entry = ENTRY_BLOCK_PTR_FOR_FN (cfun);
+   if (!entry->count.nonzero_p ())
+     entry->count = profile_count::from_gcov_type
+       (MAX ((gcov_type) 1, autofdo::afdo_count_scale / 2)).afdo ();
    FOR_ALL_BB_FN (bb, cfun)
      {
        bb->aux = NULL;
diff -Nrcpad gcc-17-20260816/gcc/avoid-store-forwarding.cc gcc-17-20260823/gcc/avoid-store-forwarding.cc
*** gcc-17-20260816/gcc/avoid-store-forwarding.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/avoid-store-forwarding.cc	Sun Aug 23 22:32:07 2026
*************** store_forwarding_analyzer::avoid_store_f
*** 565,574 ****
        /* The mem RTX if INSN is a store, NULL_RTX otherwise.  */
        rtx store_mem = MEM_P (SET_DEST (set)) ? SET_DEST (set) : NULL_RTX;
  
!       /* We cannot analyze memory RTXs that have unknown size.	*/
!       if ((store_mem && (!MEM_SIZE_KNOWN_P (store_mem)
  			 || !MEM_SIZE (store_mem).is_constant ()))
! 	  || (load_mem && (!MEM_SIZE_KNOWN_P (load_mem)
  			   || !MEM_SIZE (load_mem).is_constant ())))
  	{
  	  store_exprs.truncate (0);
--- 565,578 ----
        /* The mem RTX if INSN is a store, NULL_RTX otherwise.  */
        rtx store_mem = MEM_P (SET_DEST (set)) ? SET_DEST (set) : NULL_RTX;
  
!       /* We cannot analyze memory RTXs that have unknown size.  BLKmode
! 	 memory is rejected as well, as there is no mode for the forwarded
! 	 value, even when its size is known.  */
!       if ((store_mem && (GET_MODE (store_mem) == BLKmode
! 			 || !MEM_SIZE_KNOWN_P (store_mem)
  			 || !MEM_SIZE (store_mem).is_constant ()))
! 	  || (load_mem && (GET_MODE (load_mem) == BLKmode
! 			   || !MEM_SIZE_KNOWN_P (load_mem)
  			   || !MEM_SIZE (load_mem).is_constant ())))
  	{
  	  store_exprs.truncate (0);
diff -Nrcpad gcc-17-20260816/gcc/cgraph.cc gcc-17-20260823/gcc/cgraph.cc
*** gcc-17-20260816/gcc/cgraph.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cgraph.cc	Sun Aug 23 22:32:07 2026
*************** cgraph_node::scale_profile_to (profile_c
*** 314,319 ****
--- 314,320 ----
    profile_count num = count.combine_with_ipa_count (ipa_count);
    profile_count den = count;
    profile_count::adjust_for_ipa_scaling (&num, &den);
+   apply_scale (num, den);
  }
  
  /* Insert a new cgraph_function_version_info node into cgraph_fnver_htab
diff -Nrcpad gcc-17-20260816/gcc/cobol/ChangeLog gcc-17-20260823/gcc/cobol/ChangeLog
*** gcc-17-20260816/gcc/cobol/ChangeLog	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/ChangeLog	Sun Aug 23 22:32:07 2026
***************
*** 1,3 ****
--- 1,70 ----
+ 2026-08-21  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cbldiag.h (enum cbl_diag_id_t): Define IsoRedefinesGrow.
+ 	* cobol1.cc (cobol_langhook_handle_option): Handle Wredefines-grow.
+ 	* lang-specs.h: Same.
+ 	* lang.opt: Same.
+ 	* lexio.cc (preprocess_filter_add): Use xstrdup, not std::vector.
+ 	* messages.cc: Quell Wredefines-grow with -dialect ibm.
+ 	* parse_ante.h (valid_redefine): Conditional message.
+ 
+ 2026-08-19  James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* parse_ante.h (in_procedure_division): Position alphabetically.
+ 	(in_identification_division): New function.
+ 	(in_file_section): Remove void argument declaration.
+ 	* scan.l: Add TITLE pattern and accept as NAME outside ID Division.
+ 	* scan_ante.h (in_procedure_division): Remove void argument declaration.
+ 	(in_environment_division): Same.
+ 	(in_identification_division): Declare new function.
+ 
+ 2026-08-19  Robert Dubner  <rdubner@symas.com>
+ 	    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* cdf.y: Revise debug message and token numbers.  Remove USED_TOKEN
+ 	macro, introduce SAVE_LOOKAHEAD.
+ 	* gengen.cc (class DECL_COUNTER): Add VAR_DECL creation counter.
+ 	(gg_define_from_declaration): Likewise.
+ 	* parse.y: Move named XML tokens to first token list and recognize
+ 	FILLER.
+ 	* scan.l: Eliminate scan used for debug message.
+ 	* scan_ante.h (level_found): Remove function.
+ 	(PUSH_CDF_STATE): Push cdf_state SC at most once.
+ 	(trim_location): Less verbose debug message.
+ 	(symbol_lower_name): New function.
+ 	(symbol_exists): Use symbol_lower_name and accept override parameter.
+ 	(scanner_cache_update):  New function.
+ 	(unquote):  New function for string literals.
+ 	* scan_post.h (start_condition_str):  Update with new SC names.
+ 	(run_cdf): Do not pop from cdf_state unconditionally.
+ 	(RECENT): Remove macro.
+ 	(same_end): Remove function.
+ 	(same_token): Same.
+ 	(next_token): Same.
+ 	(prelex): Use cdf::last_lexed and cdf::had_lookahead().
+ 	(yylex): Remove one early return.
+ 	* symbols.cc (symbol_program): Use new map of programs.
+ 	(symbol_function_impl): Use new map of functions.
+ 	(symbol_temporaries): Use new list of alphanumerics.
+ 	(symbol_temporary_alphanumerics): New class to house alphanumerics
+ 	list.
+ 	(symbol_program_add): Populate new maps.
+ 	* token_names.h: Regenerate.
+ 	* util.cc (cdf_field_add):  Use scanner_cache_update.
+ 
+ 2026-08-17  Robert Dubner  <rdubner@symas.com>
+ 
+ 	* cdf.y: Revert changes.
+ 	* lexio.cc (skip_quoted_literal): Likewise.
+ 	(remove_inline_comment): Likewise.
+ 	* parse.y: Likewise.
+ 	* scan.l: Likewise.
+ 	* scan_ante.h (skip_string): Likewise.
+ 	(yyinput): Likewise.
+ 	(yyunput): Likewise.
+ 	(is_refmod): Likewise.
+ 	* token_names.h: Likewise.
+ 
  2026-08-14  Robert Dubner  <rdubner@symas.com>
  
  	* move.cc (mh_binary_to_numdisp): Pass intermediates to __gg__move.
diff -Nrcpad gcc-17-20260816/gcc/cobol/cbldiag.h gcc-17-20260823/gcc/cobol/cbldiag.h
*** gcc-17-20260816/gcc/cobol/cbldiag.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/cbldiag.h	Sun Aug 23 22:32:07 2026
*************** enum cbl_diag_id_t : uint64_t {
*** 189,194 ****
--- 189,195 ----
    IbmVolatileW,  // dialect warning for ignored syntax
  
    IsoAssignFile,
+   IsoRedefinesGrow,
    IsoResume,
  
    MfAssignExternal,
diff -Nrcpad gcc-17-20260816/gcc/cobol/cdf.y gcc-17-20260823/gcc/cobol/cdf.y
*** gcc-17-20260816/gcc/cobol/cdf.y	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/cdf.y	Sun Aug 23 22:32:07 2026
*************** operator<<( std::ostream& os, cbl_loc_t
*** 79,100 ****
  const char * keyword_str( int token );
  
  namespace cdf {
! static int current_token;
! static int used_token( int token ) {
!   dbgmsg("%s: %s", __func__, keyword_str(token));
!   return current_token = token;
! }
! 
! int used_token() { return current_token; }
  }
- #define USED_TOKEN(T) cdf::used_token(parser::token::YDF_ ##T)
  
  %}
                          
  %code requires {
      namespace cdf
      {
!         class parser;
      }
  }
  
--- 79,109 ----
  const char * keyword_str( int token );
  
  namespace cdf {
!   static int lookahead_token_kind;
!   static int lookahead( int token ) {
!     if( token < 1 ) {
!       dbgmsg("%s: look ahead to %s", __func__, keyword_str(token));
!     } else {
!       dbgmsg("%s: look ahead to token kind %d", __func__, token);
!     }
!     lookahead_token_kind = token;
!     return lookahead_token_kind;
!   }
!   
!   bool had_lookahead() {
!     int kind = 0;
!     std::swap(kind, lookahead_token_kind);
!     return 0 < kind;
!   }
  }
  
+ #define SAVE_LOOKAHEAD cdf::lookahead(yyla.kind())
  %}
                          
  %code requires {
      namespace cdf
      {
!       class parser;
      }
  }
  
*************** int used_token() { return current_token;
*** 102,111 ****
      // https://learnmoderncpp.com/2020/12/17/generating-c-programs-with-flex-and-bison-2/
      namespace cdf
      {
!         int cdflex( parser::semantic_type *value, cbl_loc_t *loc );
      }
  }
  
  %define api.location.type {cbl_loc_t}
                          
  %{
--- 111,134 ----
      // https://learnmoderncpp.com/2020/12/17/generating-c-programs-with-flex-and-bison-2/
      namespace cdf
      {
!       int cdflex( parser::semantic_type *value, cbl_loc_t *loc );
      }
  }
  
+ %code provides {
+   namespace cdf
+   {
+     template <typename F>
+       int token_of( int kind, F xlate ) {
+       for( int tok = -2; tok < parser::token::YDF_NEG + 1; tok++ ) {
+         int token = xlate(tok);
+         if( token == kind ) return tok;
+       }
+       assert(false);
+     }
+   }
+ }
+                         
  %define api.location.type {cbl_loc_t}
                          
  %{
*************** apply_cdf_turn( const exception_turn_t&
*** 286,340 ****
  
  %type   <number>        cdf_stackable
  
! %token BY 489
  %token COPY 365
! %token CDF_DISPLAY 387    ">>DISPLAY"
! %token IN 607
  %token NAME 286
  %token NUMSTR 306    "numeric literal"
! %token OF 688
! %token PSEUDOTEXT 723
! %token REPLACING 745
  %token LITERAL 299
  %token SUPPRESS 379
  
  %token LSUB 370    "("
  %token SUBSCRIPT 378  RSUB 375    ")"
  
! %token CDF_DEFINE 386    ">>DEFINE"
! %token CDF_IF 388    ">>IF"
! %token CDF_ELSE 389    ">>ELSE"
! %token CDF_END_IF 390    ">>END-IF"
! %token CDF_EVALUATE 391    ">>EVALUATE"
! %token CDF_WHEN 392    ">>WHEN"
! %token CDF_END_EVALUATE 393    ">>END-EVALUATE"
  
! %token ALL 453
! %token CALL_CONVENTION 394    ">>CALL-CONVENTION"
! %token COBOL_WORDS 383    ">>COBOL-WORDS"
! %token CDF_PUSH 397    ">>PUSH"
! %token CDF_POP 398    ">>POP"
! %token SOURCE_FORMAT 399    ">>SOURCE FORMAT"
  
! %token AS 471  CONSTANT 364  DEFINED 366
  %type	<boolean>	     DEFINED
! %token OTHER 700  PARAMETER_kw 371    "PARAMETER"
! %token OFF 689  OVERRIDE 372
! %token THRU 950
! %token TRUE_kw 815    "True"
  
! %token CALL_COBOL 395    "CALL"
! %token CALL_VERBATIM 396    "CALL (as C)"
  
! %token TURN 817  CHECKING 499  LOCATION 651  ON 691  WITH 844
  
! %left OR 951
! %left AND 952
! %right NOT 953
! %left '<'  '>'  EQ 298    "EQUAL"  NE 954  LE 955  GE 956
  %left '-'  '+'
  %left '*'  '/'
! %right NEG 958
  
  %require "3.8.2"  // for C++ output
  %language "c++"
--- 309,363 ----
  
  %type   <number>        cdf_stackable
  
! %token BY 488
  %token COPY 365
! %token CDF_DISPLAY 386    ">>DISPLAY"
! %token IN 606
  %token NAME 286
  %token NUMSTR 306    "numeric literal"
! %token OF 689
! %token PSEUDOTEXT 724
! %token REPLACING 746
  %token LITERAL 299
  %token SUPPRESS 379
  
  %token LSUB 370    "("
  %token SUBSCRIPT 378  RSUB 375    ")"
  
! %token CDF_DEFINE 385    ">>DEFINE"
! %token CDF_IF 387    ">>IF"
! %token CDF_ELSE 388    ">>ELSE"
! %token CDF_END_IF 389    ">>END-IF"
! %token CDF_EVALUATE 390    ">>EVALUATE"
! %token CDF_WHEN 391    ">>WHEN"
! %token CDF_END_EVALUATE 392    ">>END-EVALUATE"
  
! %token ALL 452
! %token CALL_CONVENTION 393    ">>CALL-CONVENTION"
! %token COBOL_WORDS 382    ">>COBOL-WORDS"
! %token CDF_PUSH 396    ">>PUSH"
! %token CDF_POP 397    ">>POP"
! %token SOURCE_FORMAT 398    ">>SOURCE FORMAT"
  
! %token AS 470  CONSTANT 364  DEFINED 366
  %type	<boolean>	     DEFINED
! %token OTHER 701  PARAMETER_kw 371    "PARAMETER"
! %token OFF 690  OVERRIDE 372
! %token THRU 947
! %token TRUE_kw 816    "True"
  
! %token CALL_COBOL 394    "CALL"
! %token CALL_VERBATIM 395    "CALL (as C)"
  
! %token TURN 818  CHECKING 498  LOCATION 650  ON 692  WITH 845
  
! %left OR 948
! %left AND 949
! %right NOT 950
! %left '<'  '>'  EQ 298    "EQUAL"  NE 951  LE 952  GE 953
  %left '-'  '+'
  %left '*'  '/'
! %right NEG 955
  
  %require "3.8.2"  // for C++ output
  %language "c++"
*************** apply_cdf_turn( const exception_turn_t&
*** 345,364 ****
  %locations
  %define parse.error verbose
  %%
! top:		partials { YYACCEPT; }
  	|	copy '.'
  		{
  		  const char *library = copybook.library();
  		  if( !library ) library = "SYSLIB";
  		  const char *source = copybook.source();
  		  dbgmsg("COPY %s from %s", source, library);
  		  YYACCEPT;
  		}
  	|	copy error {
  		  error_msg(@error, "COPY directive must end in a %<.%>");
  		  YYABORT;
  		}
! 	|	completes { YYACCEPT; }
  		;
  
  completes:	complete
--- 368,389 ----
  %locations
  %define parse.error verbose
  %%
! top:		partials {
!                 SAVE_LOOKAHEAD; YYACCEPT; }
  	|	copy '.'
  		{
  		  const char *library = copybook.library();
  		  if( !library ) library = "SYSLIB";
  		  const char *source = copybook.source();
  		  dbgmsg("COPY %s from %s", source, library);
+                   SAVE_LOOKAHEAD;
  		  YYACCEPT;
  		}
  	|	copy error {
  		  error_msg(@error, "COPY directive must end in a %<.%>");
  		  YYABORT;
  		}
! 	|	completes { SAVE_LOOKAHEAD; YYACCEPT; }
  		;
  
  completes:	complete
*************** complete:	cdf_define
*** 374,383 ****
  		;
  
  		/*
! 		 * To do: read ISO 2022 to see how >>DISPLAY is dictionary!
  		 * To do: DISPLAY UPON
  		 * To do: decide what to do about newlines, and when; DISPLAY has
!      *        {}... in the specification.
  		 */
  cdf_display:	CDF_DISPLAY strings {
  		  if( scanner_parsing() ) {
--- 399,408 ----
  		;
  
  		/*
! 		 * To do: read ISO 2023 to see how >>DISPLAY is dictionary!
  		 * To do: DISPLAY UPON
  		 * To do: decide what to do about newlines, and when; DISPLAY has
!      		 *        {}... in the specification.
  		 */
  cdf_display:	CDF_DISPLAY strings {
  		  if( scanner_parsing() ) {
*************** cdf_display:	CDF_DISPLAY strings {
*** 388,399 ****
  		}
  		;
  strings:	LITERAL {
!                   USED_TOKEN(LITERAL);
! 		  display_msg = xstrdup($1);
  		}
  	|	strings LITERAL {
!                   USED_TOKEN(LITERAL);
! 		  char *p = display_msg;
  		  display_msg = xasprintf("%s %s", p, $2);
  		  free(p);
  		}
--- 413,422 ----
  		}
  		;
  strings:	LITERAL {
!                   display_msg = xstrdup($1);
  		}
  	|	strings LITERAL {
!                   char *p = display_msg;
  		  display_msg = xasprintf("%s %s", p, $2);
  		  free(p);
  		}
*************** strings:	LITERAL {
*** 401,419 ****
  
  partials:	partial
  		{
! 		  if( ! scanner_parsing() ) YYACCEPT;
  		}
  	|	partials partial
  		{
! 		  if( ! scanner_parsing() ) YYACCEPT;
  		}
  		;
  partial:	cdf_if            /* text */
! 	|	CDF_ELSE          { USED_TOKEN(CDF_ELSE);   scanner_parsing_toggle(); }
! 	|	CDF_END_IF        { USED_TOKEN(CDF_END_IF); scanner_parsing_pop(); }
  	|	cdf_evaluate      /* text */
  	|	cdf_eval_when     /* text */
! 	|	CDF_END_EVALUATE  { USED_TOKEN(CDF_END_EVALUATE); scanner_parsing_pop(); }
  	;
  
  cdf_define:	CDF_DEFINE cdf_constant NAME as cdf_expr[value] override
--- 424,448 ----
  
  partials:	partial
  		{
! 		  if( ! scanner_parsing() ) {
!                     SAVE_LOOKAHEAD;
!                     YYACCEPT;
!                   }
  		}
  	|	partials partial
  		{
! 		  if( ! scanner_parsing() ) {
!                     SAVE_LOOKAHEAD;
!                     YYACCEPT;
!                   }
  		}
  		;
  partial:	cdf_if            /* text */
! 	|	CDF_ELSE          { scanner_parsing_toggle(); }
! 	|	CDF_END_IF        { scanner_parsing_pop(); }
  	|	cdf_evaluate      /* text */
  	|	cdf_eval_when     /* text */
! 	|	CDF_END_EVALUATE  { scanner_parsing_pop(); }
  	;
  
  cdf_define:	CDF_DEFINE cdf_constant NAME as cdf_expr[value] override
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 445,452 ****
  		}
  	|	CDF_DEFINE cdf_constant NAME as OFF
  		{
!                   USED_TOKEN(OFF);
! 		  cdfval_off( $NAME);
  		}
  	|	CDF_DEFINE cdf_constant NAME as PARAMETER_kw override
  		/*
--- 474,480 ----
  		}
  	|	CDF_DEFINE cdf_constant NAME as OFF
  		{
!                   cdfval_off( $NAME);
  		}
  	|	CDF_DEFINE cdf_constant NAME as PARAMETER_kw override
  		/*
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 464,479 ****
  		  }
  		}
  	|	CDF_DEFINE FEATURE as ON {
!                   USED_TOKEN(ON);
! 		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, true) ) {
  		    error_msg(@FEATURE,
                                "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
  		  }
  		}
  	|	CDF_DEFINE FEATURE as OFF {
!                   USED_TOKEN(OFF);
! 		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, false) ) {
  		    error_msg(@FEATURE,
                                "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
--- 492,505 ----
  		  }
  		}
  	|	CDF_DEFINE FEATURE as ON {
!                   		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, true) ) {
  		    error_msg(@FEATURE,
                                "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
  		  }
  		}
  	|	CDF_DEFINE FEATURE as OFF {
!                   		  auto feature = cbl_gcobol_feature_t($2);
  		  if( ! cobol_gcobol_feature_set(feature, false) ) {
  		    error_msg(@FEATURE,
                                "%<>>DEFINE %%EBCDIC-MODE%> is invalid within program body");
*************** cdf_define:	CDF_DEFINE cdf_constant NAME
*** 481,492 ****
  		}
  		;
  cdf_constant:	%empty
! 	|	CONSTANT { 
!                   USED_TOKEN(CONSTANT);
!                 }
                  ;
  override:	%empty   { $$ = false; }
! 	|	OVERRIDE { $$ = true; USED_TOKEN(OVERRIDE); }
  		;
  
  cdf_turn:	TURN except_names except_check
--- 507,516 ----
  		}
  		;
  cdf_constant:	%empty
! 	|	CONSTANT 
                  ;
  override:	%empty   { $$ = false; }
! 	|	OVERRIDE { $$ = true; }
  		;
  
  cdf_turn:	TURN except_names except_check
*************** cdf_turn:	TURN except_names except_check
*** 498,508 ****
  
  cdf_call_convention:
                  CALL_COBOL {
-                   USED_TOKEN(CALL_COBOL);
                    current_call_convention(cbl_call_cobol_e);
                  }
          |       CALL_VERBATIM {
-                   USED_TOKEN(CALL_VERBATIM);
                    current_call_convention(cbl_call_verbatim_e);
                  }
                  ;
--- 522,530 ----
*************** except_name:	EXCEPTION_NAME[ec] {
*** 553,565 ****
  
  except_check:	CHECKING on  { $$ = exception_turn.enable(true); }
  	|	CHECKING OFF {
-                   USED_TOKEN(OFF);
                    $$ = exception_turn.enable(false);
                  }
  	|	CHECKING on with LOCATION
  		{
!                   USED_TOKEN(LOCATION);
! 		  $$ = exception_turn.enable(true, true);
  		}
  		;
  
--- 575,585 ----
  
  except_check:	CHECKING on  { $$ = exception_turn.enable(true); }
  	|	CHECKING OFF {
                    $$ = exception_turn.enable(false);
                  }
  	|	CHECKING on with LOCATION
  		{
!                   $$ = exception_turn.enable(true, true);
  		}
  		;
  
*************** filenames:      filename {
*** 579,585 ****
                  ;
  filename:       NAME
                  {
-                   USED_TOKEN(NAME);
                    if( ($$ = cdf_file(PROGRAM, $1)) == nullptr ) {
  		    error_msg(@NAME, "invalid file name '%s'", $NAME);
  		    YYERROR;
--- 599,604 ----
*************** filename:       NAME
*** 590,606 ****
  cdf_if:		CDF_IF cdf_cond_expr {
  		  scanner_parsing(parser::token::YDF_CDF_IF, $2);
  		}
! 	|	CDF_IF error {
! 		} CDF_END_IF { // not pushed, don't pop
!                   USED_TOKEN(CDF_END_IF);
! 		  if( ! scanner_parsing() ) YYACCEPT;
  		}
  		;
  
  cdf_evaluate:   CDF_EVALUATE cdf_expr
! 	|	CDF_EVALUATE TRUE_kw {
!                   USED_TOKEN(TRUE_kw);
!                 }
                  ;
  
  cdf_eval_when:	CDF_WHEN cdf_eval_obj
--- 609,624 ----
  cdf_if:		CDF_IF cdf_cond_expr {
  		  scanner_parsing(parser::token::YDF_CDF_IF, $2);
  		}
! 	|	CDF_IF error CDF_END_IF { // not pushed, don't pop
!                   if( ! scanner_parsing() ) {
!                     SAVE_LOOKAHEAD;
!                     YYACCEPT;
!                   }
  		}
  		;
  
  cdf_evaluate:   CDF_EVALUATE cdf_expr
! 	|	CDF_EVALUATE TRUE_kw 
                  ;
  
  cdf_eval_when:	CDF_WHEN cdf_eval_obj
*************** cdf_eval_when:	CDF_WHEN cdf_eval_obj
*** 608,624 ****
  
  cdf_eval_obj:	cdf_cond_expr
          |       cdf_expr THRU cdf_expr
!         |       OTHER {
!                   USED_TOKEN(OTHER);
!                 }
          ;
  
! cdf_cond_expr:	BOOL {
!                   USED_TOKEN(BOOL);
!                 }
  	|	NAME DEFINED
  		{
-                   USED_TOKEN(DEFINED);
                    cdf_values_t& dictionary( cdf_dictionary() );
  		  auto p = dictionary.find($1);
  		  bool found = p != dictionary.end();
--- 626,637 ----
  
  cdf_eval_obj:	cdf_cond_expr
          |       cdf_expr THRU cdf_expr
!         |       OTHER 
          ;
  
! cdf_cond_expr:	BOOL 
  	|	NAME DEFINED
  		{
                    cdf_values_t& dictionary( cdf_dictionary() );
  		  auto p = dictionary.find($1);
  		  bool found = p != dictionary.end();
*************** cdf_cond_expr:	BOOL {
*** 635,642 ****
  		}
  	|	cdf_bool_expr { $$ = $1(@1) == 0? false : true; }
  	|	FEATURE DEFINED {
!                   USED_TOKEN(DEFINED);
! 		  const auto& feature($1);
  		  $$ = (feature == int(feature & cbl_gcobol_features));
  		  dbgmsg("CDF: feature 0x%02x is %s", $1, $$? "ON" : "OFF");
  		}
--- 648,654 ----
  		}
  	|	cdf_bool_expr { $$ = $1(@1) == 0? false : true; }
  	|	FEATURE DEFINED {
!                   const auto& feature($1);
  		  $$ = (feature == int(feature & cbl_gcobol_features));
  		  dbgmsg("CDF: feature 0x%02x is %s", $1, $$? "ON" : "OFF");
  		}
*************** cdf_expr:	cdf_expr '+' cdf_expr { $$ = $
*** 703,710 ****
          ;
  
  cdf_factor:     NAME {
!                   USED_TOKEN(NAME);
!                   cdf_values_t& dictionary( cdf_dictionary() );
  		  auto that = dictionary.find($1);
  		  if( that != dictionary.end() ) {
  		    $$ = that->second;
--- 715,721 ----
          ;
  
  cdf_factor:     NAME {
! 		  cdf_values_t& dictionary( cdf_dictionary() );
  		  auto that = dictionary.find($1);
  		  if( that != dictionary.end() ) {
  		    $$ = that->second;
*************** cdf_factor:     NAME {
*** 720,735 ****
  		}
  	|	NUMBER
                  {
!                   USED_TOKEN(NUMBER);
!                   $$ = cdfval_t($1);
                  }
  	|	LITERAL {
!                   USED_TOKEN(LITERAL);
!                   $$ = cdfval_t($1);
                   }
  	| 	NUMSTR {
!                   USED_TOKEN(NUMSTR);
! 		  auto value = integer_literal($NUMSTR);
  		  if( !value.second ) {
  		    error_msg(@1, "CDF error: parsed %qs as %lld",
  		             $NUMSTR, value.first);
--- 731,743 ----
  		}
  	|	NUMBER
                  {
!                                     $$ = cdfval_t($1);
                  }
  	|	LITERAL {
!                                     $$ = cdfval_t($1);
                   }
  	| 	NUMSTR {
!                   		  auto value = integer_literal($NUMSTR);
  		  if( !value.second ) {
  		    error_msg(@1, "CDF error: parsed %qs as %lld",
  		             $NUMSTR, value.first);
*************** replace_by:	name_any[a] BY name_any[b]
*** 801,821 ****
  suppress:	%empty
  	|	SUPPRESS
  		{
!                   USED_TOKEN(SUPPRESS);
! 		  copybook.suppress();
  		}
  		;
  
  name_any:	namelit
  	|	PSEUDOTEXT {
!                   USED_TOKEN(PSEUDOTEXT);
! 		  $$ = cdf_arg_t{parser::token::YDF_PSEUDOTEXT, $1};
  		}
  		;
  
  name_one:	NAME
  		{
-                   USED_TOKEN(NAME);
                    cdf_values_t& dictionary( cdf_dictionary() );
  		  cdf_arg_t arg = { parser::token::YDF_NAME, $1 };
  		  auto p = dictionary.find($1);
--- 809,826 ----
  suppress:	%empty
  	|	SUPPRESS
  		{
!                   		  copybook.suppress();
  		}
  		;
  
  name_any:	namelit
  	|	PSEUDOTEXT {
!                   		  $$ = cdf_arg_t{parser::token::YDF_PSEUDOTEXT, $1};
  		}
  		;
  
  name_one:	NAME
  		{
                    cdf_values_t& dictionary( cdf_dictionary() );
  		  cdf_arg_t arg = { parser::token::YDF_NAME, $1 };
  		  auto p = dictionary.find($1);
*************** name_one:	NAME
*** 826,837 ****
  		  $$ = arg;
  		}
  	|	NUMSTR {
!                   USED_TOKEN(NUMSTR);
!                   $$ = cdf_arg_t{parser::token::YDF_NUMSTR, $1};
                  }
  	|	LITERAL {
!                   USED_TOKEN(LITERAL);
!                   $$ = cdf_arg_t{parser::token::YDF_LITERAL, $1};
                  }
  		;
  
--- 831,840 ----
  		  $$ = arg;
  		}
  	|	NUMSTR {
!                                     $$ = cdf_arg_t{parser::token::YDF_NUMSTR, $1};
                  }
  	|	LITERAL {
!                                     $$ = cdf_arg_t{parser::token::YDF_LITERAL, $1};
                  }
  		;
  
*************** namelit:	name
*** 859,871 ****
  	|	LITERAL { $$ = cdf_arg_t{parser::token::YDF_LITERAL, $1}; }
  		;
  
! name:		NAME {
!                   USED_TOKEN(NAME);
!                 }                  
  	|	name inof NAME
  		{
!                   USED_TOKEN(NAME);
! 		  char *s = xasprintf( "%s %s %s", $1, $2, $3 );
  		  assert($$ == $1);
  		  free(const_cast<char*>($1));
  		  free(const_cast<char*>($3));
--- 862,871 ----
  	|	LITERAL { $$ = cdf_arg_t{parser::token::YDF_LITERAL, $1}; }
  		;
  
! name:		NAME                   
  	|	name inof NAME
  		{
!                   		  char *s = xasprintf( "%s %s %s", $1, $2, $3 );
  		  assert($$ == $1);
  		  free(const_cast<char*>($1));
  		  free(const_cast<char*>($3));
*************** name:		NAME {
*** 873,884 ****
  		}
                  ;
  inof:           IN {
!                   USED_TOKEN(IN);
!                   static const char in[] = "IN"; $$ = in;
                  }
          |       OF {
!                   USED_TOKEN(OF);
!                   static const char of[] = "OF"; $$ = of;
                  }
                  ;
  
--- 873,882 ----
  		}
                  ;
  inof:           IN {
!                                     static const char in[] = "IN"; $$ = in;
                  }
          |       OF {
!                                     static const char of[] = "OF"; $$ = of;
                  }
                  ;
  
*************** subscripts:	subscript
*** 891,903 ****
  		  $$ = s;
  		}
  		;
! subscript:	SUBSCRIPT {
!                   USED_TOKEN(SUBSCRIPT);
!                 }
  	|	LSUB subscript RSUB
  		{
!                   USED_TOKEN(RSUB);
! 		  char *s = xasprintf( "%s%s%s", $1, $2, $3 );
  		  free(const_cast<char*>($1));
  		  free(const_cast<char*>($2));
  		  free(const_cast<char*>($3));
--- 889,898 ----
  		  $$ = s;
  		}
  		;
! subscript:	SUBSCRIPT 
  	|	LSUB subscript RSUB
  		{
!                   		  char *s = xasprintf( "%s%s%s", $1, $2, $3 );
  		  free(const_cast<char*>($1));
  		  free(const_cast<char*>($2));
  		  free(const_cast<char*>($3));
*************** subscript:	SUBSCRIPT {
*** 906,926 ****
  		;
  
  as:		%empty
! 	|	AS {
!                   USED_TOKEN(AS);
!                 }
  		;
  
  on:             %empty
!         |       ON {
!                   USED_TOKEN(ON);
!                 }
                  ;
  
  with:           %empty
!         |       WITH {
!                   USED_TOKEN(WITH);
!                 }
                  ;
  
  %%
--- 901,915 ----
  		;
  
  as:		%empty
! 	|	AS 
  		;
  
  on:             %empty
!         |       ON 
                  ;
  
  with:           %empty
!         |       WITH 
                  ;
  
  %%
diff -Nrcpad gcc-17-20260816/gcc/cobol/cobol1.cc gcc-17-20260823/gcc/cobol/cobol1.cc
*** gcc-17-20260816/gcc/cobol/cobol1.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/cobol1.cc	Sun Aug 23 22:32:07 2026
*************** cobol_langhook_handle_option (size_t sco
*** 645,650 ****
--- 645,654 ----
            cobol_warning(MfRedefinesFirst, redefines_first, warning_as_error);
            return true;
  
+         case OPT_Wredefines_grow:
+           cobol_warning(IsoRedefinesGrow, redefines_grow, warning_as_error);
+           return true;
+ 
          case OPT_Wreturning_number:
            cobol_warning(MfReturningNum, returning_number, warning_as_error);
            return true;
diff -Nrcpad gcc-17-20260816/gcc/cobol/gengen.cc gcc-17-20260823/gcc/cobol/gengen.cc
*** gcc-17-20260816/gcc/cobol/gengen.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/gengen.cc	Sun Aug 23 22:32:07 2026
*************** gg_declare_variable(tree type_decl,
*** 918,926 ****
--- 918,985 ----
    return var_decl;
    }
  
+ class DECL_COUNTER
+   {
+   public:
+     unsigned long total;
+     unsigned long artificial;
+     unsigned long addressable;
+     unsigned long art_addr;
+ 
+     DECL_COUNTER()
+       : total( 0 ),
+         artificial( 0 ),
+         addressable( 0 ),
+         art_addr( 0 )
+       {
+       }
+ 
+     void
+     count( tree var_decl )
+       {
+       if( TREE_CODE( var_decl ) == VAR_DECL )
+         {
+         total += 1;
+ 
+         bool is_artificial = DECL_ARTIFICIAL( var_decl );
+         bool is_addressable = TREE_ADDRESSABLE( var_decl );
+ 
+         if( is_artificial )
+           {
+           artificial += 1;
+           }
+ 
+         if( is_addressable )
+           {
+           addressable += 1;
+           }
+ 
+         if( is_artificial && is_addressable )
+           {
+           art_addr += 1;
+           }
+         }
+       }
+ 
+     ~DECL_COUNTER()
+       {
+       if( getenv("VAR_DECL_COUNT") )
+         {
+         fprintf( stderr, "decl_counter VAR_DECL    = %lu\n", total );
+         fprintf( stderr, "decl_counter ARTIFICIAL  = %lu\n", artificial );
+         fprintf( stderr, "decl_counter ADDRESSABLE = %lu\n", addressable );
+         fprintf( stderr, "decl_counter BOTH        = %lu\n", art_addr );
+         }
+       }
+   };
+   
+ static DECL_COUNTER decl_counter;
+ 
  tree
  gg_define_from_declaration(tree var_decl)
    {
+   decl_counter.count(var_decl);
+ 
    // Append the var_decl to either the chain for the current function or for
    // the translation_unit, depending on the var_decl's context:
    gg_append_var_decl(var_decl);
diff -Nrcpad gcc-17-20260816/gcc/cobol/lang-specs.h gcc-17-20260823/gcc/cobol/lang-specs.h
*** gcc-17-20260816/gcc/cobol/lang-specs.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/lang-specs.h	Sun Aug 23 22:32:07 2026
***************
*** 91,96 ****
--- 91,97 ----
  	"%{Wprocedure-pointer} %{Wno-procedure-pointer} "
  	"%{Wreplace-error} %{Wno-replace-error} "
  	"%{Wredefines-first} %{Wno-redefines-first} "
+ 	"%{Wredefines-grow} %{Wno-redefines-grow} "
  	"%{Wreturning-number} %{Wno-returning-number} "
  	"%{Wsegment-error} %{Wno-segment-error} "
  	"%{Wsegment-negative} %{Wno-segment-negative} "
diff -Nrcpad gcc-17-20260816/gcc/cobol/lang.opt gcc-17-20260823/gcc/cobol/lang.opt
*** gcc-17-20260816/gcc/cobol/lang.opt	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/lang.opt	Sun Aug 23 22:32:07 2026
*************** Wsegment
*** 274,279 ****
--- 274,284 ----
  Cobol Warning Var(cobol_segment, 1) Init(1)
  Warn if SECTION segments are used.
  
+ ; IsoRedefinesGrow, "-Wredefines-grow"
+ Wredefines-grow
+ Cobol Warning Var(redefines_grow, 1) Init(1)
+ Warn if REDEFINES data item is larger than the redefined.
+ 
  ; IsoResume
  Wcobol-resume
  Cobol Warning Var(cobol_resume, 1) Init(1)
diff -Nrcpad gcc-17-20260816/gcc/cobol/lexio.cc gcc-17-20260823/gcc/cobol/lexio.cc
*** gcc-17-20260816/gcc/cobol/lexio.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/lexio.cc	Sun Aug 23 22:32:07 2026
*************** source_format_t::indicated( char *bol, c
*** 88,105 ****
    return ch == '\0' || ch == *bol? bol : NULL;
  }
  
  static char *
  remove_inline_comment( char *bol, char *eol ) {
    char *nl = std::find(bol, eol, '\n');
  
    if( bol < nl ) {
!     static char ends = '\0';
!     std::swap(*nl, ends);
!     char *comment = strstr(bol, "*>");
!     if( comment ) {
!       std::fill(comment, nl, SPACE);
      }
-     std::swap(*nl, ends);
    }
    return eol;
  }
--- 88,131 ----
    return ch == '\0' || ch == *bol? bol : NULL;
  }
  
+ /* Advance past a quoted literal */
+ static char *
+ skip_quoted_literal( char *p, char *pend ) {
+   const char delimiter = *p++;
+   while( p < pend ) {
+     p = std::find(p, pend, delimiter);
+     if( p == pend )
+       return pend;
+     if( p + 1 < pend && p[1] == delimiter ) {
+       p += 2; // nested quote
+       continue;
+     }
+     return ++p;
+   }
+   return pend;
+ }
+ 
  static char *
  remove_inline_comment( char *bol, char *eol ) {
    char *nl = std::find(bol, eol, '\n');
  
    if( bol < nl ) {
!     /* skip *> in alphanumeric literals */
!     static const char markers[] = { '\'', '"', '*' };
!     for( char *p = bol; p < nl; ) {
!       p = std::find_first_of(p, nl, markers, markers + sizeof(markers));
!       if( p == nl )
!         break;
!       if( isquote(*p) ) {
!         p = skip_quoted_literal(p, nl);
!         continue;
!       }
!       if( p + 1 < nl && p[1] == '>' ) {
!         std::fill(p, nl, SPACE);
!         break;
!       }
!       p++;
      }
    }
    return eol;
  }
*************** preprocess_filter_add( const char input[
*** 1417,1428 ****
    size_t pos = filter.find(",");
  
    if( pos != filter.npos ) {
!     std::vector<char> others( filter.size() - pos, '\0' );
!     std::copy( filter.begin() + pos + 1, filter.end(), others.begin() );
      filter.resize(pos);
!     char *optstr = others.data();
!     for( char *opt = optstr + 1; (opt = strtok(opt, ",")); opt = NULL ) {
!       options.push_back(opt);
      }
    }
  
--- 1443,1453 ----
    size_t pos = filter.find(",");
  
    if( pos != filter.npos ) {
!     std::string args( filter.begin() + pos + 1, filter.end() );
      filter.resize(pos);
! 
!     for( char *arg = xstrdup(args.c_str()); (arg = strtok(arg, ",")); arg = NULL ) {
!       options.push_back(arg);
      }
    }
  
diff -Nrcpad gcc-17-20260816/gcc/cobol/messages.cc gcc-17-20260823/gcc/cobol/messages.cc
*** gcc-17-20260816/gcc/cobol/messages.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/messages.cc	Sun Aug 23 22:32:07 2026
*************** std::set<cbl_diag_t> cbl_diagnostics {
*** 137,146 ****
    { IbmVolatileE, "-Wcobol-volatile", diagnostics::kind::error, dialect_ibm_e },
    { IbmVolatileW, "-Wcobol-volatile", diagnostics::kind::warning, dialect_ibm_e },
  
-   // RESUME not supported by IBM
-   { IsoResume, "-Wcobol-resume", diagnostics::kind::error, dialect_ibm_e },
    // IBM, MF, and GNU all support ASSIGN TO filename, so we keep mum. 
    { IsoAssignFile, "-Wassign-file", diagnostics::kind::ignored, dialect_ibm_mf_gnu },
  
    { MfAnyLength, "-Wany-length", diagnostics::kind::error, dialect_mf_gnu },
    { MfAssignExternal, "-Wassign-external", diagnostics::kind::error, dialect_mf_gnu },
--- 137,148 ----
    { IbmVolatileE, "-Wcobol-volatile", diagnostics::kind::error, dialect_ibm_e },
    { IbmVolatileW, "-Wcobol-volatile", diagnostics::kind::warning, dialect_ibm_e },
  
    // IBM, MF, and GNU all support ASSIGN TO filename, so we keep mum. 
    { IsoAssignFile, "-Wassign-file", diagnostics::kind::ignored, dialect_ibm_mf_gnu },
+   // ISO says for B REDEFINES A, Length(B) <= Length(A), others disagree
+   { IsoRedefinesGrow, "-Wredefines-grow", diagnostics::kind::error, dialect_ibm_mf_gnu },
+   // RESUME not supported by IBM
+   { IsoResume, "-Wcobol-resume", diagnostics::kind::error, dialect_ibm_e },
  
    { MfAnyLength, "-Wany-length", diagnostics::kind::error, dialect_mf_gnu },
    { MfAssignExternal, "-Wassign-external", diagnostics::kind::error, dialect_mf_gnu },
diff -Nrcpad gcc-17-20260816/gcc/cobol/parse.y gcc-17-20260823/gcc/cobol/parse.y
*** gcc-17-20260816/gcc/cobol/parse.y	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/parse.y	Sun Aug 23 22:32:07 2026
***************
*** 9,14 ****
--- 9,15 ----
   *   notice, this list of conditions and the following disclaimer.
   * * Redistributions in binary form must reproduce the above
   *   copyright notice, this list of conditions and the following disclaimer
+  *   copyright notice, this list of conditions and the following disclaimer
   *   in the documentation and/or other materials provided with the
   *   distribution.
   * * Neither the name of the Symas Corporation nor the names of its
*************** class locale_tgt_t {
*** 446,452 ****
  			OVERRIDE READY RESET
  			RSUB")"
  			SERVICE_RELOAD "SERVICE RELOAD" STAR_CBL "*CBL"
! 			SUBSCRIPT SUPPRESS TITLE TRACE USE
  
  			COBOL_WORDS ">>COBOL-WORDS" EQUATE UNDEFINE
  			CDF_DEFINE ">>DEFINE" CDF_DISPLAY ">>DISPLAY"
--- 447,453 ----
  			OVERRIDE READY RESET
  			RSUB")"
  			SERVICE_RELOAD "SERVICE RELOAD" STAR_CBL "*CBL"
! 			SUBSCRIPT SUPPRESS TRACE USE
  
  			COBOL_WORDS ">>COBOL-WORDS" EQUATE UNDEFINE
  			CDF_DEFINE ">>DEFINE" CDF_DISPLAY ">>DISPLAY"
*************** class locale_tgt_t {
*** 587,594 ****
  			MINN "Min" MULTIPLE MOD MODE
  			MODULE_NAME  "MODULE-NAME "
  
! 			NAMED NAT NATIONAL
! 			NATIONAL_EDITED "NATIONAL-EDITED"
  			NATIONAL_OF "NATIONAL-OF"
  			NATIVE NESTED NEXT
  			NO NOTE
--- 588,595 ----
  			MINN "Min" MULTIPLE MOD MODE
  			MODULE_NAME  "MODULE-NAME "
  
! 			NAMED NAMESPACE NAMESPACE_PREFIX "NAMESPACE-PREFIX"
!                         NAT NATIONAL NATIONAL_EDITED "NATIONAL-EDITED"
  			NATIONAL_OF "NATIONAL-OF"
  			NATIVE NESTED NEXT
  			NO NOTE
*************** class locale_tgt_t {
*** 701,706 ****
--- 702,708 ----
  			UNDERLINE UNSIGNED_kw
  			UTF_16 "UTF-16"
  			UTF_8 "UTF-8"
+                         XML_DECLARATION "XML-DECLARATION"
                          XMLGENERATE "XML GENERATE"
                          XMLPARSE "XML PARSE"
  
*************** class locale_tgt_t {
*** 736,742 ****
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be alphanational
! %type   <boolean>       all optional sign_leading on_off initialized strong is_signed
  %type   <number>        count data_clauses data_clause
  %type   <number>        nine nines nps relop spaces_etc reserved_value signed
  %type   <number>        variable_type binary_type
--- 738,745 ----
  %type   <number>        star_cbl_opt close_how
  
  %type   <number>        test_before usage_clause1 might_be alphanational
! %type   <boolean>       all filler initialized is_signed
!                         on_off optional sign_leading strong 
  %type   <number>        count data_clauses data_clause
  %type   <number>        nine nines nps relop spaces_etc reserved_value signed
  %type   <number>        variable_type binary_type
*************** class locale_tgt_t {
*** 1134,1140 ****
                          LIST LSUB MAP NOLIST NOMAP NOSOURCE
                          PARAMETER_kw OVERRIDE READY RESET RSUB
                          SERVICE_RELOAD STAR_CBL
!                         SUBSCRIPT SUPPRESS TITLE TRACE USE
  
  			COBOL_WORDS EQUATE UNDEFINE
  
--- 1137,1143 ----
                          LIST LSUB MAP NOLIST NOMAP NOSOURCE
                          PARAMETER_kw OVERRIDE READY RESET RSUB
                          SERVICE_RELOAD STAR_CBL
!                         SUBSCRIPT SUPPRESS TRACE USE
  
  			COBOL_WORDS EQUATE UNDEFINE
  
*************** class locale_tgt_t {
*** 1280,1286 ****
                          MIGHT_BE MINN MULTIPLE MOD MODE
  			MODULE_NAME
  
!                         NAMED NAMESPACE NAMESPACE_PREFIX "NAMESPACE-PREFIX"
                          NAT NATIONAL
  			NATIONAL_EDITED
  			NATIONAL_OF
--- 1283,1289 ----
                          MIGHT_BE MINN MULTIPLE MOD MODE
  			MODULE_NAME
  
!                         NAMED NAMESPACE NAMESPACE_PREFIX
                          NAT NATIONAL
  			NATIONAL_EDITED
  			NATIONAL_OF
*************** class locale_tgt_t {
*** 1354,1360 ****
                          VALUE VARIANCE VARYING VOLATILE
  
                          WHEN_COMPILED WITH WORKING_STORAGE
!                         XML_DECLARATION "XML-DECLARATION"
                          YEAR_TO_YYYY YYYYDDD YYYYMMDD
                          ZERO
  
--- 1357,1363 ----
                          VALUE VARIANCE VARYING VOLATILE
  
                          WHEN_COMPILED WITH WORKING_STORAGE
!                         XML_DECLARATION
                          YEAR_TO_YYYY YYYYDDD YYYYMMDD
                          ZERO
  
*************** selected_name:  external NAME {
*** 2188,2193 ****
--- 2191,2208 ----
                    field.codeset.set();
                    $$ = field_add(@name, &field);
                  }
+         |       external OTHER
+                 {
+                   if( !dialect_ibm() ) {
+                     error_msg(@2, "ASSIGN OTHER requires %<-dialect ibm%>");
+                     YYERROR;
+                   }
+ 
+                   enum { parent = 0 };
+                   auto e = symbol_field_forward_add(PROGRAM, parent,
+                                                     "OTHER", @$.first_line);
+                   $$ = cbl_field_of(e);
+                 }
                  ;
  external:       %empty /* GnuCOBOL uses EXTERNAL to control name resolution.  */
          |       EXTERNAL {
*************** level_name:     LEVEL ctx_name
*** 4020,4026 ****
                    }
                    current_field($$); // make available for data_clauses
                  }
!         |       LEVEL
                  {
                    switch($LEVEL) {
                    case 66:
--- 4035,4041 ----
                    }
                    current_field($$); // make available for data_clauses
                  }
!         |       LEVEL filler
                  {
                    switch($LEVEL) {
                    case 66:
*************** level_name:     LEVEL ctx_name
*** 4038,4045 ****
                    struct cbl_field_t field = { FldInvalid, 
  		                               capacity_cast($LEVEL),
  		                               @LEVEL.first_line };
! 
!                   $$ = field_add(@1, &field);
                    if( !$$ ) {
                      YYERROR;
                    }
--- 4053,4065 ----
                    struct cbl_field_t field = { FldInvalid, 
  		                               capacity_cast($LEVEL),
  		                               @LEVEL.first_line };
!                   cbl_loc_t loc(@LEVEL);
!                   if( $filler ) {
!                     loc.last_column += 7;
!                     field.set_attr(filler_e);
!                     strcpy(field.name, "FILLER");
!                   }
!                   $$ = field_add(loc, &field);
                    if( !$$ ) {
                      YYERROR;
                    }
*************** file:           %empty
*** 12241,12246 ****
--- 12261,12270 ----
          |       FILE_KW
                  ;
  
+ filler:         %empty      { $$ = false; }
+         |       FILLER_kw   { $$ = true; }
+                 ;
+ 
  first_last:     %empty  { $$ = 0; }
          |       FIRST   { $$ = 'F'; }
          |       LAST    { $$ = 'L'; }
*************** current_tokens_t::tokenset_t::find( cons
*** 13082,13091 ****
     *  1. an intrinsic function name (OK if include_intrinsics)
     *  2. an ISO/GCC reserved word or context-sensitive word (OK)
     *  3. a token in our token list for convenience, such as BINARY_INTEGER (bzzt)
!    */
!   
    cbl_name_t lname;
    std::transform(name, name + strlen(name) + 1, lname, ftolower);
    auto p = tokens.find(lname);
    if( p == tokens.end() ) return 0;
    int token = p->second;
--- 13106,13116 ----
     *  1. an intrinsic function name (OK if include_intrinsics)
     *  2. an ISO/GCC reserved word or context-sensitive word (OK)
     *  3. a token in our token list for convenience, such as BINARY_INTEGER (bzzt)
!    */  
    cbl_name_t lname;
    std::transform(name, name + strlen(name) + 1, lname, ftolower);
+   dbgmsg("current_tokens_t::tokenset_t::find: scanning %lu tokens for '%s'",
+          (unsigned long)tokens.size(), lname);
    auto p = tokens.find(lname);
    if( p == tokens.end() ) return 0;
    int token = p->second;
diff -Nrcpad gcc-17-20260816/gcc/cobol/parse_ante.h gcc-17-20260823/gcc/cobol/parse_ante.h
*** gcc-17-20260816/gcc/cobol/parse_ante.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/parse_ante.h	Sun Aug 23 22:32:07 2026
*************** is_cobol_charset( const char name[] ) {
*** 256,271 ****
  }
  
  bool
! in_procedure_division() {
!   return current_division == procedure_div_e;
  }
  bool
  in_environment_division() {
    return current_division == environment_div_e;
  }
  
  static inline bool
! in_file_section(void) { return current_data_section == file_datasect_e; }
  
  static cbl_refer_t *
  intrinsic_inconsistent_parameter( size_t n, cbl_refer_t *args );
--- 256,275 ----
  }
  
  bool
! in_identification_division() {
!   return current_division == identification_div_e;
  }
  bool
  in_environment_division() {
    return current_division == environment_div_e;
  }
+ bool
+ in_procedure_division() {
+   return current_division == procedure_div_e;
+ }
  
  static inline bool
! in_file_section() { return current_data_section == file_datasect_e; }
  
  static cbl_refer_t *
  intrinsic_inconsistent_parameter( size_t n, cbl_refer_t *args );
*************** valid_redefine( const cbl_loc_t& loc,
*** 3141,3148 ****
              orig->level_str(), orig->name);
      return false;
    }
-   // We don't know about the redefining group until it's completely defined.
- 
    /*
     * 8) The storage area required for the subject of the entry
     * shall not be larger than the storage area required for the
--- 3145,3150 ----
*************** valid_redefine( const cbl_loc_t& loc,
*** 3155,3167 ****
        if( orig->level > 1 || orig->has_attr(external_e) ) {
          dbgmsg( "size error orig:  %s", field_str(orig) );
          dbgmsg( "size error redef: %s", field_str(field) );
!         error_msg(loc, "%s (%s size %u) larger than REDEFINES %s (%s size %u)",
!                   field->name,
!                   3 + cbl_field_type_str(field->type),
!                   field->size()/field->codeset.stride(),
!                   orig->name,
!                   3 + cbl_field_type_str(orig->type),
!                   orig->size()/field->codeset.stride() );
        }
      }
    }
--- 3157,3171 ----
        if( orig->level > 1 || orig->has_attr(external_e) ) {
          dbgmsg( "size error orig:  %s", field_str(orig) );
          dbgmsg( "size error redef: %s", field_str(field) );
!         if( ! dialect_ok(loc, IsoRedefinesGrow, "REDEFINES larger") ) {
!           error_msg(loc, "%qs (%s size %u) larger than REDEFINES %qs (%s size %u)",
!                     field->name,
!                     3 + cbl_field_type_str(field->type),
!                     field->size()/field->codeset.stride(),
!                     orig->name,
!                     3 + cbl_field_type_str(orig->type),
!                     orig->size()/field->codeset.stride() );
!         }
        }
      }
    }
diff -Nrcpad gcc-17-20260816/gcc/cobol/scan.l gcc-17-20260823/gcc/cobol/scan.l
*** gcc-17-20260816/gcc/cobol/scan.l	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/scan.l	Sun Aug 23 22:32:07 2026
*************** nonseq    (([''][[:alnum:]]+][''])|([""]
*** 79,84 ****
--- 79,85 ----
  INTEGER   0*[1-9][[:digit:]]*
  INTEGERZ  [[:digit:]]+
  
+ NOTWORD   [^[:alnum:]$_-]
  NONWORD   [^[:alnum:]$_-]+
  
  SPC  [[:space:]]+
*************** NONPIC	  [,]{DOTSEP}
*** 104,110 ****
  EOPIC	  [.,;]?[[:space:]]
  
  SKIP	  [[:blank:]]*SKIP[123][[:blank:]]*[.]?{BLANK_EOL}
- TITLE	  [[:blank:]]*TITLE($|[.]|[^\n]*)
  
  COUNT     [(][[:digit:]]+[)]
  N9        9+|(9{COUNT})
--- 105,110 ----
*************** TIME_FMT   {TIME_FMT_B}|{TIME_FMT_E}
*** 156,161 ****
--- 156,163 ----
  
  DATETIME_FMT ({DATE_FMT_B}T{TIME_FMT_B})|({DATE_FMT_E}T{TIME_FMT_E})
  
+ TITLE    TITLE({EOL}|[^\n[:alnum:]$_-].+)
+ 
  NAME      [[:alnum:]]+([_-]+[[:alnum:]]+)*
  SUBELEMS  {NAME}({SPC}{NAME})*
  
*************** NAMEQUALS {NAMEQUAL}({SPC}{NAMEQUAL})*
*** 168,173 ****
--- 170,178 ----
  
  STRING   [^\r\n""]+
  STRING1  [^\r\n'']+
+ QSTRING1 ['']{STRING1}(['']{2}{STRING1})*['']
+ QSTRING2 [""]{STRING}([""]{2}{STRING})*[""]
+ 
  			/* comma & semicolon must be followed by a space */
  COMMA    [,;][[:blank:]]*
  
*************** LINE_DIRECTIVE ^[#]line{SPC}[[:alnum:]]+
*** 196,202 ****
  
  %x procedure_div ident_state addr_of function classify
  %x program_id_state comment_entries
! %x date_state field_level field_state dot_state
  %x numeric_state name_state
  %x quoted1 quoted2 quoteq
  %x picture picture_count integer_count
--- 201,207 ----
  
  %x procedure_div ident_state addr_of function classify
  %x program_id_state comment_entries
! %x date_state field_state fd_state field_data_item dot_state
  %x numeric_state name_state
  %x quoted1 quoted2 quoteq
  %x picture picture_count integer_count
*************** LOCAL-STORAGE{SPC}SECTION {
*** 255,261 ****
                    yy_push_state(field_state);
                    return LOCAL_STORAGE_SECT; }
  WORKING-STORAGE	{ return WORKING_STORAGE; }
! LOCAL-STORAGE 	{ return LOCAL_STORAGE; }
  SCREEN 		{ return SCREEN; }
  
  LINKAGE{SPC}SECTION {
--- 260,266 ----
                    yy_push_state(field_state);
                    return LOCAL_STORAGE_SECT; }
  WORKING-STORAGE	{ return WORKING_STORAGE; }
! LOCAL-STORAGE 		{ return LOCAL_STORAGE; }
  SCREEN 		{ return SCREEN; }
  
  LINKAGE{SPC}SECTION {
*************** PROGRAM-ID{OSPC}{DOTSEP}?	{ yy_push_stat
*** 270,277 ****
  	                  	  yy_push_state(program_id_state);
          	          	  yy_push_state(name_state); return PROGRAM_ID; }
  
! PROCEDURE{SPC}DIVISION	{ yy_push_state(procedure_div);
                                    return PROCEDURE_DIV; }
  <comment_entries>{
    (ENVIRONMENT|DATA|PROCEDURE){SPC}DIVISION  { myless(0); yy_pop_state(); }
    {BLANK_EOL}
--- 275,302 ----
  	                  	  yy_push_state(program_id_state);
          	          	  yy_push_state(name_state); return PROGRAM_ID; }
  
! <*>{
!   {TITLE} 	{   // In Identification Section TITLE is commentary, else it's a name.
! 		    if( in_identification_division() ) {
!                       if( ! dialect_ibm() ) {
!                         warn_msg(yylloc, "ignored TITLE: %qs", yytext);
!                       }
!                     } else {
! 		      auto p = std::find_if( yytext, yytext + yyleng,
! 		                        []( char ch ) {
! 		                          return ! is_name_char(ch);
! 		                        } );
!                       auto keep = p - yytext;
!                       myless(keep);
!                       auto s = xstrdup(yytext);
!                       ydflval.string = yylval.string = s;
!                       return NAME;
!                     }
! 		}
!   PROCEDURE{SPC}DIVISION	{ yy_push_state(procedure_div);
                                    return PROCEDURE_DIV; }
+ }
+ 
  <comment_entries>{
    (ENVIRONMENT|DATA|PROCEDURE){SPC}DIVISION  { myless(0); yy_pop_state(); }
    {BLANK_EOL}
*************** FINAL		{ return FINAL; }
*** 810,822 ****
  FILE-LIMIT	{ return FILE_LIMIT; }
  FILE-CONTROL	{ return FILE_CONTROL; }
  
! FILE{SPC}SECTION { return FILE_SECT; }
  
  FILE		{ return FILE_KW; }
  
- FD		{ return FD; }
- SD		{ return SD; }
- 
  EXTERNAL	{ return EXTERNAL; }
  EXIT		{ return EXIT; }
  EXHIBIT		{ return EXHIBIT; }
--- 835,844 ----
  FILE-LIMIT	{ return FILE_LIMIT; }
  FILE-CONTROL	{ return FILE_CONTROL; }
  
! FILE{SPC}SECTION { BEGIN(field_state); return FILE_SECT; }
  
  FILE		{ return FILE_KW; }
  
  EXTERNAL	{ return EXTERNAL; }
  EXIT		{ return EXIT; }
  EXHIBIT		{ return EXHIBIT; }
*************** DATE-WRITTEN	{ return DATE_WRITTEN; }
*** 893,899 ****
  DATE-COMPILED	{ return DATE_COMPILED; }
  DAY-OF-WEEK	{ return DAY_OF_WEEK; }
  
! DATA{SPC}DIVISION{DOTEOL}		{ return DATA_DIV; }
  DATA		{ return DATA; }
  
  CURRENCY	{ return CURRENCY; }
--- 915,924 ----
  DATE-COMPILED	{ return DATE_COMPILED; }
  DAY-OF-WEEK	{ return DAY_OF_WEEK; }
  
! DATA{SPC}DIVISION{DOTEOL} {
! 		  yy_push_state(field_state);
!                   return DATA_DIV; }
! 
  DATA		{ return DATA; }
  
  CURRENCY	{ return CURRENCY; }
*************** INSERTT		{ return INSERTT; }
*** 970,1046 ****
  LABEL		{ return LABEL; }
  PROCESS		{ return PROCESS; }
  SERVICE[[:blank:]]+RELOAD		{ return SERVICE_RELOAD; }
- TITLE		{ return TITLE; }
  USE({SPC}FOR)?		{ return USE; }
  
  }
  
! <field_level>{
!   66/{SPC}(\f#)?{NAME} { yy_pop_state();
!                           if( !parsing.on() ) orig_picture[0] = '\0';
!                           if( level_needed() ) {
!                             level_found();
!                             yylval.number = level_of(yytext); return LEVEL66;
!                           } else {
!                             return numstr_of(yytext);
!                           }
!                         }
!   78/{SPC}(\f#)?{NAME} { yy_pop_state();
!                           if( !parsing.on() ) orig_picture[0] = '\0';
!                           if( level_needed() ) {
!                             level_found();
!                             yylval.number = level_of(yytext); return LEVEL78;
!                           } else {
!                             return numstr_of(yytext);
!                           }
!                         }
!   88/{SPC}(\f#)?{NAME} { yy_pop_state();
!                           if( !parsing.on() ) orig_picture[0] = '\0';
!                           if( level_needed() ) {
!                             level_found();
!                             yylval.number = level_of(yytext); return LEVEL88;
!                           } else {
!                             return numstr_of(yytext);
!                           }
!                         }
!   [[:digit:]]{1,2}/[[:space:]] { yy_pop_state();
!                           if( !parsing.on() ) orig_picture[0] = '\0';
!                           if( level_needed() ) {
!                             level_found();
!                             yylval.number = level_of(yytext); return LEVEL;
!                           } else {
!                             return numstr_of(yytext);
!                           }
!                         }
  
!   . { cbl_errx( "failed to parse field level on line %d", yylineno); }
  }
  
  <field_state>{
!   ^[[:blank:]]*[[:digit:]]{1,2}{OSPC}/[.] {
!                               if( !parsing.on() ) orig_picture[0] = '\0';
!                               level_found();
!                               yylval.number = level_of(yytext);
!                               return LEVEL;
!                             }
  
!   ^[[:blank:]]+             {}
!                ^[[:digit:]]{1,2}[[:space:]]              { yy_push_state(field_level); }
!    [[:blank:]]*/[[:digit:]]{1,2}{SPC}(\f#)?{NAME} { yy_push_state(field_level); }
  
!   [+-]?{INTEGERZ}           { return numstr_of(yytext); }
!   [+-]?{dfc}                { char *s = xstrdup(yytext);
!                               // "The decimal point can appear anywhere within
!                               //  the literal except as the rightmost character."
!                               size_t len = strlen(s);
!                               assert(len);
!                               if( s[--len] == '.' ) {
!                                 s[len] = '\0';
!                                 myless(len);
!                               }
!                               numstr_of(s); free(s);
!                               return NUMSTR;
!                            }
  
    PIC(TURE)?({SPC}IS)?{SPC}{PICTURE} {
  				  auto pos = validate_picture();
--- 995,1219 ----
  LABEL		{ return LABEL; }
  PROCESS		{ return PROCESS; }
  SERVICE[[:blank:]]+RELOAD		{ return SERVICE_RELOAD; }
  USE({SPC}FOR)?		{ return USE; }
  
  }
  
! <field_state,field_data_item>{
!   WORKING-STORAGE{SPC}SECTION { return WORKING_STORAGE_SECT; }
!   LOCAL-STORAGE{SPC}SECTION   { return LOCAL_STORAGE_SECT; }
!   LINKAGE{SPC}SECTION         { return LINKAGE_SECT; }
!   SCREEN{SPC}/SECTION	      { return SCREEN; }
!   SECTION{OSPC}/{DOTSEP}      { yylval.string = NULL; return SECTION; }
  
!   ALL			{ return ALL; }
!   AS			{ return AS; }
!   ASCENDING		{ return ASCENDING; }
!   BLANK    		{ return BLANK; }
!   BLOCK			{ return BLOCK_kw; }
!   BY			{ return BY; }
!   BYTE-LENGTH		{ return BYTE_LENGTH; }
!   CHARACTER		{ return CHARACTER; }
!   CHARACTERS		{ return CHARACTERS; }
!   CODE-SET		{ return CODESET; }
!   CONSTANT		{ return CONSTANT; }
!   CONTAINS		{ return CONTAINS; }
!   DATA			{ return DATA; }
!   DEPENDING		{ return DEPENDING; }
!   DESCENDING		{ return DESCENDING; }
!   DISPLAY		{ return DISPLAY; }
!   EBCDIC		{ return EBCDIC; }
!   EJECT{DOTEOL}?  	{
! 			  dialect_ok(yylloc, IbmEjectE, "EJECT"); 
! 			  auto len = yyleng - 1;
! 			  if( yytext[len] == '\f' ) myless(--len);
! 			}
!   EXTERNAL		{ return EXTERNAL; }
!   FALSE			{ return FALSE_kw; }
!   FROM			{ return FROM; }
!   GLOBAL		{ return GLOBAL; }
!   IN			{ return IN; }
!   INDEXED		{ return INDEXED; }
!   IS			{ return IS; }
!   JUST(IFIED)?({SPC}RIGHT)?		{ return JUSTIFIED; }
!   KEY			{ return KEY; }
!   LABEL			{ return LABEL; }
!   LEADING		{ return LEADING; }
!   LEFT    		{ return LEFT; }
!   MODE			{ return MODE; }
!   NATIVE		{ return NATIVE; }
!   NO			{ return NO; }
!   OCCURS/{SPC}{NAME} 	{ return OCCURS; }
!   OCCURS		{ yy_push_state(integer_count);  return OCCURS; }
!   OF			{ return OF; }
!   OMITTED		{ return OMITTED; }
!   ON			{ return ON; }
!   RECORD		{ return RECORD; }
!   RECORDING		{ return RECORDING; }
!   RECORDS		{ return RECORDS; }
!   RECORDS{SPC}ARE	{ return RECORDS; }
!   RECORD{SPC}IS		{ return RECORD; }
!   REDEFINES		{ return REDEFINES; }
!   RENAMES		{ return RENAMES; }
!   RIGHT    		{ return RIGHT; }
!   SEPARATE		{ return SEPARATE; }
!   SET			{ return SET; }
!   SAME			{ return SAME; }
!   SIGN			{ return SIGN; }
!   SIZE			{ return SIZE; }
!   STANDARD		{ return STANDARD; }
!   STANDARD{SPC}ALPHABET		{ return STANDARD_ALPHABET; }
!   STRONG		{ return STRONG; }
!   SYNC(HRONIZED)?	{ return SYNCHRONIZED; }
!   TIMES			{ return TIMES; }
!   TIMES[[:space::]]+DEPENDING		{ return DEPENDING; }
!   TO			{ return TO; }
!   TRAILING		{ return TRAILING; }
!   TRUE			{ return TRUE_kw; }
!   TYPE			{ return TYPE; }
!   TYPEDEF		{ return TYPEDEF; }
!   VARYING		{ return VARYING; }
!   VOLATILE    		{ return VOLATILE; }
!   WHEN    		{ return WHEN; }
!   WITH			{ return WITH; }
! 
!   COPY			{
!                 	  yy_push_state(copy_state);
!                 	  myless(0);
!                 	}
! 
!   PROCEDURE{SPC}DIVISION	{ BEGIN(procedure_div); return PROCEDURE_DIV; }
  }
  
+ <fd_state>{
+   ALL			{ return ALL; }
+   AS			{ return AS; }
+   ASCENDING		{ return ASCENDING; }
+   BLANK    		{ return BLANK; }
+   BLOCK			{ return BLOCK_kw; }
+   BY			{ return BY; }
+   BYTE-LENGTH		{ return BYTE_LENGTH; }
+   CHARACTER		{ return CHARACTER; }
+   CHARACTERS		{ return CHARACTERS; }
+   CODE-SET		{ return CODESET; }
+   CONSTANT		{ return CONSTANT; }
+   CONTAINS		{ return CONTAINS; }
+   DATA			{ return DATA; }
+   DEPENDING		{ return DEPENDING; }
+   DESCENDING		{ return DESCENDING; }
+   DISPLAY		{ return DISPLAY; }
+   EBCDIC		{ return EBCDIC; }
+   EJECT{DOTEOL}?  	{
+ 			  dialect_ok(yylloc, IbmEjectE, "EJECT"); 
+ 			  auto len = yyleng - 1;
+ 			  if( yytext[len] == '\f' ) myless(--len);
+ 			}
+   EXTERNAL		{ return EXTERNAL; }
+   FALSE			{ return FALSE_kw; }
+   FROM			{ return FROM; }
+   GLOBAL		{ return GLOBAL; }
+   IN			{ return IN; }
+   INDEXED		{ return INDEXED; }
+   IS			{ return IS; }
+   JUST(IFIED)?({SPC}RIGHT)?		{ return JUSTIFIED; }
+   KEY			{ return KEY; }
+   LABEL			{ return LABEL; }
+   LEADING		{ return LEADING; }
+   LEFT    		{ return LEFT; }
+   MODE			{ return MODE; }
+   NATIVE		{ return NATIVE; }
+   NO			{ return NO; }
+   OCCURS		{ return OCCURS; }
+   OF			{ return OF; }
+   OMITTED		{ return OMITTED; }
+   ON			{ return ON; }
+   RECORD		{ return RECORD; }
+   RECORDING		{ return RECORDING; }
+   RECORDS		{ return RECORDS; }
+   RECORDS{SPC}ARE	{ return RECORDS; }
+   RECORD{SPC}IS		{ return RECORD; }
+   REDEFINES		{ return REDEFINES; }
+   RENAMES		{ return RENAMES; }
+   RIGHT    		{ return RIGHT; }
+   SEPARATE		{ return SEPARATE; }
+   SET			{ return SET; }
+   SAME			{ return SAME; }
+   SIGN			{ return SIGN; }
+   SIZE			{ return SIZE; }
+   STANDARD		{ return STANDARD; }
+   STANDARD{SPC}ALPHABET	{ return STANDARD_ALPHABET; }
+   STRONG		{ return STRONG; }
+   SYNC(HRONIZED)?	{ return SYNCHRONIZED; }
+   TIMES			{ return TIMES; }
+   TIMES[[:space::]]+DEPENDING		{ return DEPENDING; }
+   TO			{ return TO; }
+   TRAILING		{ return TRAILING; }
+   TRUE			{ return TRUE_kw; }
+   TYPE			{ return TYPE; }
+   TYPEDEF		{ return TYPEDEF; }
+   VARYING		{ return VARYING; }
+   VOLATILE    		{ return VOLATILE; }
+   WHEN    		{ return WHEN; }
+   WITH			{ return WITH; }
+ 
+   {INTEGERZ}	{ return numstr_of(yytext); }
+ 
+   {NAME}	{ 
+                   yylval.string = xstrdup(yytext);
+                   return NAME;
+                 }
+   {QSTRING1} |
+   {QSTRING2}	{
+                   static const char prefix[] = "";
+ 		  char *s = unquote();
+                   yylval.literal.set(strlen(s), s, prefix);
+ 		  return LITERAL;
+ 		}
+ 
+   {DOTSEP}		{ BEGIN(field_state); return *yytext; }
+ }
+ 
+ 
+ 	/*
+ 	 * Field state begins with a Data Division section and ends with
+ 	 * Procedure Division.  The work is done by field_data_item.
+ 	 */
  <field_state>{
!   FD		{ yy_push_state(fd_state); return FD; }
!   SD		{ yy_push_state(fd_state); return SD; }
!   {NAME}	{ 
!                   ydflval.string = yylval.string = xstrdup(yytext);
!                   return NAME;
!                 }
  
!   [[:digit:]]{1,2}/{NOTWORD} {
!       yy_push_state(field_data_item);
!       yylval.number = level_of(yytext); 
  
!       switch(yylval.number) {
!       case 66: return LEVEL66;
!       case 78: return LEVEL78;
!       case 88: return LEVEL88;
!       }
!       return LEVEL;
!   }
! }
! <field_data_item>{
!   {DOTSEP}		{ yy_pop_state(); return '.'; }
! 
!   [+-]?{INTEGERZ}	{ return numstr_of(yytext); }
!   [+-]?{dfc}		{ char *s = xstrdup(yytext);
! 			  // "The decimal point can appear anywhere within
! 			  //  the literal except as the rightmost character."
! 			  size_t len = strlen(s);
! 			  assert(len);
! 			  if( s[--len] == '.' ) {
! 			    s[len] = '\0';
! 			    myless(len);
! 			  }
! 			  numstr_of(s); free(s);
! 			  return NUMSTR;
! 			}
  
    PIC(TURE)?({SPC}IS)?{SPC}{PICTURE} {
  				  auto pos = validate_picture();
*************** USE({SPC}FOR)?		{ return USE; }
*** 1129,1213 ****
                            yy_push_state(numeric_state);
  			  return THRU; }
  
!   ALL			{ return ALL; }
!   AS			{ return AS; }
!   ASCENDING		{ return ASCENDING; }
!   BLANK    		{ return BLANK; }
!   BLOCK			{ return BLOCK_kw; }
!   BY			{ return BY; }
!   BYTE-LENGTH		{ return BYTE_LENGTH; }
!   CHARACTER		{ return CHARACTER; }
!   CHARACTERS		{ return CHARACTERS; }
!   CODE-SET		{ return CODESET; }
!   CONSTANT		{ return CONSTANT; }
!   CONTAINS		{ return CONTAINS; }
!   DATA			{ return DATA; }
!   DEPENDING		{ return DEPENDING; }
!   DESCENDING		{ return DESCENDING; }
!   DISPLAY		{ return DISPLAY; }
!   EBCDIC		{ return EBCDIC; }
!   EJECT{DOTEOL}?  	{
! 			  dialect_ok(yylloc, IbmEjectE, "EJECT"); 
! 			  auto len = yyleng - 1;
! 			  if( yytext[len] == '\f' ) myless(--len);
! 			}
!   EXTERNAL		{ return EXTERNAL; }
!   FALSE			{ return FALSE_kw; }
!   FROM			{ return FROM; }
!   GLOBAL		{ return GLOBAL; }
!   IN			{ return IN; }
!   INDEXED		{ return INDEXED; }
!   IS			{ return IS; }
!   JUST(IFIED)?({SPC}RIGHT)?		{ return JUSTIFIED; }
!   KEY			{ return KEY; }
!   LABEL			{ return LABEL; }
!   LEADING		{ return LEADING; }
!   LEFT    		{ return LEFT; }
!   MODE			{ return MODE; }
!   NATIVE		{ return NATIVE; }
!   NO			{ return NO; }
!   OCCURS/{SPC}{NAME} 	{ return OCCURS; }
!   OCCURS		{ yy_push_state(integer_count);  return OCCURS; }
!   OF			{ return OF; }
!   OMITTED		{ return OMITTED; }
!   ON			{ return ON; }
!   RECORD		{ return RECORD; }
!   RECORDING		{ return RECORDING; }
!   RECORDS		{ return RECORDS; }
!   RECORDS{SPC}ARE	{ return RECORDS; }
!   RECORD{SPC}IS		{ return RECORD; }
!   REDEFINES		{ return REDEFINES; }
!   RENAMES		{ return RENAMES; }
!   RIGHT    		{ return RIGHT; }
!   SEPARATE		{ return SEPARATE; }
!   SET			{ return SET; }
!   SAME			{ return SAME; }
!   SIGN			{ return SIGN; }
!   SIZE			{ return SIZE; }
!   STANDARD		{ return STANDARD; }
!   STANDARD{SPC}ALPHABET		{ return STANDARD_ALPHABET; }
!   STRONG		{ return STRONG; }
!   SYNC(HRONIZED)?	{ return SYNCHRONIZED; }
!   TIMES			{ return TIMES; }
!   TIMES[[:space::]]+DEPENDING		{ return DEPENDING; }
!   TO			{ return TO; }
!   TRAILING		{ return TRAILING; }
!   TRUE			{ return TRUE_kw; }
!   TYPE			{ return TYPE; }
!   TYPEDEF		{ return TYPEDEF; }
!   VARYING		{ return VARYING; }
!   VOLATILE    		{ return VOLATILE; }
!   WHEN    		{ return WHEN; }
!   WITH			{ return WITH; }
! 
!   COPY			{
!                 	  yy_push_state(copy_state);
!                 	  myless(0);
!                 	}
! 
!   FD/[[:blank:]]+       { parsing.need_level(false); return FD; }
!   SD/[[:blank:]]+       { parsing.need_level(false); return SD; }
! 
    {NAME}                { // NAME here might be a token alias
  		   	  int token;
  		          if( 0 != (token = binary_integer_usage(yytext)) ) {
--- 1302,1308 ----
                            yy_push_state(numeric_state);
  			  return THRU; }
  
!   FILLER		{ return FILLER_kw; }
    {NAME}                { // NAME here might be a token alias
  		   	  int token;
  		          if( 0 != (token = binary_integer_usage(yytext)) ) {
*************** USE({SPC}FOR)?		{ return USE; }
*** 1227,1243 ****
  	    		  yy_push_state(hex_state); }
    N?X{nonseq}		{ dbgmsg("invalid hexadecimal value: %s", yytext);
  			  return NO_CONDITION; }
-   [[:blank:]]*{EOL}     {}
- 
-   WORKING-STORAGE{SPC}SECTION { return WORKING_STORAGE_SECT; }
-   LOCAL-STORAGE{SPC}SECTION   { return LOCAL_STORAGE_SECT; }
-   LINKAGE{SPC}SECTION         { return LINKAGE_SECT; }
-   SCREEN{SPC}/SECTION	      { return SCREEN; }
-   SECTION{OSPC}/{DOTSEP}      { yylval.string = NULL; return SECTION; }
- 
-   PROCEDURE{SPC}DIVISION	{ BEGIN(procedure_div); return PROCEDURE_DIV; }
- 
-   [*]>.*$ // ignore inline comment
  }
  
  <numstr_state>{
--- 1322,1327 ----
*************** USE({SPC}FOR)?		{ return USE; }
*** 1285,1293 ****
    {COMMA} 			|
    [[:blank:]]*{EOL}		|
    [[:blank:]]+{EOL}?		{ yy_pop_state(); /* embedded/trailing blank */ }
!   {DOTSEP}[[:blank:].]+$	{ yy_pop_state(); return '.'; }
!   {DOTSEP}			{ yy_pop_state(); return '.'; }
! 
  
    [[:blank:]]+[-+]/{EDITED} 	{ return picset(yytext[yyleng-1]); }
  
--- 1369,1376 ----
    {COMMA} 			|
    [[:blank:]]*{EOL}		|
    [[:blank:]]+{EOL}?		{ yy_pop_state(); /* embedded/trailing blank */ }
!   {DOTSEP}[[:blank:].]+$	{ yy_pop_state(); myless(0); }
!   {DOTSEP}			{ yy_pop_state(); myless(0); }
  
    [[:blank:]]+[-+]/{EDITED} 	{ return picset(yytext[yyleng-1]); }
  
*************** USE({SPC}FOR)?		{ return USE; }
*** 1747,1752 ****
--- 1830,1843 ----
    ZERO	|
    ZEROES	|
    ZEROS		{ return ZERO; }
+ 
+   CONFIGURATION{SPC}SECTION	{ return CONFIGURATION_SECT; }
+   FILE{SPC}SECTION 		{ return FILE_SECT; }
+   INPUT-OUTPUT{SPC}SECTION	{ return INPUT_OUTPUT_SECT; }
+   LINKAGE{SPC}SECTION 		{ return LINKAGE_SECT; }
+   LOCAL-STORAGE{SPC}SECTION 	{ return LOCAL_STORAGE_SECT; }
+   WORKING-STORAGE{SPC}SECTION 	{ return WORKING_STORAGE_SECT; }
+ 
  }
  
  <*>{
*************** USE({SPC}FOR)?		{ return USE; }
*** 1785,1797 ****
    {NAME}	 	{ ydflval.string = yylval.string = xstrdup(yytext);
  			  return NAME;
  			}
    %EBCDIC-MODE		{ ydflval.number = feature_internal_ebcdic_e;
  			  return FEATURE; }
    %64-BIT-POINTER	{ ydflval.number = feature_embiggen_e;
  			  return FEATURE; }
    [[:blank:]]+
    {BLANK_EOL}
-   . 			{ myless(0); yy_pop_state(); } // not a CDF token
  }
  
  <program_id_state>{
--- 1876,1891 ----
    {NAME}	 	{ ydflval.string = yylval.string = xstrdup(yytext);
  			  return NAME;
  			}
+ 
+   {QSTRING1} |
+   {QSTRING2}		{ ydflval.string = unquote(); return LITERAL; }
+ 
    %EBCDIC-MODE		{ ydflval.number = feature_internal_ebcdic_e;
  			  return FEATURE; }
    %64-BIT-POINTER	{ ydflval.number = feature_embiggen_e;
  			  return FEATURE; }
    [[:blank:]]+
    {BLANK_EOL}
  }
  
  <program_id_state>{
*************** USE({SPC}FOR)?		{ return USE; }
*** 1915,1926 ****
  
    {ISNT}{SPC}/OMITTED { return NOT; }
  
!   [(:)] 			{ return *yytext; }
    [(]/[^(:)""'']*[:][^)]*[)] 	{ return LPAREN; /* parentheses around a colon */ }
!   [(][^:""'']*[:][^)]*[)] 	{ // does not match foo(bar)\n:  :-(  
!                                   int tok = is_refmod(yytext, yytext + yyleng)?
!                                       int(LPAREN) : '(';
!                                   myless(1);
                                    return tok; 
                                  }
  
--- 2009,2018 ----
  
    {ISNT}{SPC}/OMITTED { return NOT; }
  
!   [:)]	 			{ return *yytext; }
    [(]/[^(:)""'']*[:][^)]*[)] 	{ return LPAREN; /* parentheses around a colon */ }
!   [(] 				{
!                                   int tok = is_refmod()? int(LPAREN) : '(';
                                    return tok; 
                                  }
  
*************** BASIS		{ yy_push_state(basis); return BA
*** 2434,2445 ****
  		  // If WITH DEBUGGING MODE, drop the D, else drop the line.
  		  if( include_debug() ) myless(7);
  		}
!   ^[ ]*>>{OBLANK}IF		{ yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
    ^[ ]*>>{OBLANK}END-IF	 	{ return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}IF		{ dialect_ok(yylloc, MfCdfDollar, yytext); 
! 				  yy_push_state(cdf_state); return CDF_IF; }
    ^[ ]*[$]{OBLANK}ELSE	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_ELSE; }
    ^[ ]*[$]{OBLANK}END(-IF)? 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
--- 2526,2537 ----
  		  // If WITH DEBUGGING MODE, drop the D, else drop the line.
  		  if( include_debug() ) myless(7);
  		}
!   ^[ ]*>>{OBLANK}IF		{ PUSH_CDF_STATE; return CDF_IF; }
    ^[ ]*>>{OBLANK}ELSE	 	{ return CDF_ELSE; }
    ^[ ]*>>{OBLANK}END-IF	 	{ return CDF_END_IF; }
  
    ^[ ]*[$]{OBLANK}IF		{ dialect_ok(yylloc, MfCdfDollar, yytext); 
! 				  PUSH_CDF_STATE; return CDF_IF; }
    ^[ ]*[$]{OBLANK}ELSE	 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
  				  return CDF_ELSE; }
    ^[ ]*[$]{OBLANK}END(-IF)? 	{ dialect_ok(yylloc, MfCdfDollar, yytext); 
*************** BASIS		{ yy_push_state(basis); return BA
*** 2447,2453 ****
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
  				  dialect_ok(yylloc, MfCdfDollar, yytext); 
! 				  yy_push_state(cdf_state); return CDF_DEFINE; }
  
    ^[ ]*>>{OBLANK}EVALUATE		{ return CDF_EVALUATE; }
    ^[ ]*>>{OBLANK}WHEN		{ return CDF_WHEN; }
--- 2539,2545 ----
  
    ^[ ]*[$]{OBLANK}SET({SPC}CONSTANT)? {
  				  dialect_ok(yylloc, MfCdfDollar, yytext); 
! 				  PUSH_CDF_STATE; return CDF_DEFINE; }
  
    ^[ ]*>>{OBLANK}EVALUATE		{ return CDF_EVALUATE; }
    ^[ ]*>>{OBLANK}WHEN		{ return CDF_WHEN; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2457,2465 ****
    ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}COBOL	{ return CALL_COBOL; }
    ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}VERBATIM	{ return CALL_VERBATIM; }
  
!   ^[ ]*>>{OBLANK}DEFINE	{ yy_push_state(cdf_state); return CDF_DEFINE; }
!   ^[ ]*>>{OBLANK}DISPLAY 	{ return CDF_DISPLAY; }
!   ^[ ]*>>{OBLANK}TURN 	{ yy_push_state(exception); return TURN; }
    ^[ ]*>>{OBLANK}COBOL-WORDS	{ yy_push_state(cobol_words); return COBOL_WORDS; }
  
    ^[ ]*>>{OBLANK}SOURCE{BLANK}FORMAT	{ return SOURCE_FORMAT; }
--- 2549,2558 ----
    ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}COBOL	{ return CALL_COBOL; }
    ^[ ]*>>{OBLANK}CALL-CONVENTION{BLANK}VERBATIM	{ return CALL_VERBATIM; }
  
!   ^[ ]*>>{OBLANK}DEFINE		{ PUSH_CDF_STATE; return CDF_DEFINE; }
!   ^[ ]*>>{OBLANK}DISPLAY 	{ PUSH_CDF_STATE; return CDF_DISPLAY; }
! 
!   ^[ ]*>>{OBLANK}TURN 		{ yy_push_state(exception); return TURN; }
    ^[ ]*>>{OBLANK}COBOL-WORDS	{ yy_push_state(cobol_words); return COBOL_WORDS; }
  
    ^[ ]*>>{OBLANK}SOURCE{BLANK}FORMAT	{ return SOURCE_FORMAT; }
*************** BASIS		{ yy_push_state(basis); return BA
*** 2544,2550 ****
  <*>{
    {COMMA}
    ^{SKIP}
-   ^{TITLE}
  }
  
  <*>{
--- 2637,2642 ----
*************** BASIS		{ yy_push_state(basis); return BA
*** 2556,2572 ****
  
  <*>{
     {NAME}       {
-                   int token = keyword_tok(yytext);
-                   if( token ) {
- 		    if(yy_flex_debug && YY_START) {
-                        dbgmsg("missed token %s in start condition %d",
- 			      yytext, YY_START);
- 		    }
- 		    // Do not return "token" because it may have been excluded
- 		    // by a start condition.  For example, REM might be a name,
- 		    // but is the name of an intrinsic function, which would
- 		    // appear only after FUNCTION.
- 		  }
                    if( is_integer_token() ) return numstr_of(yytext);
                    ydflval.string = yylval.string = xstrdup(yytext);
                    return typed_name(yytext);
--- 2648,2653 ----
diff -Nrcpad gcc-17-20260816/gcc/cobol/scan_ante.h gcc-17-20260823/gcc/cobol/scan_ante.h
*** gcc-17-20260816/gcc/cobol/scan_ante.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/scan_ante.h	Sun Aug 23 22:32:07 2026
*************** static bool level_needed() {
*** 351,359 ****
    return scanner_normal() && parsing.need_level();
  }
  
! static void level_found() {
!   if( scanner_normal() ) parsing.need_level(false);
! }
  
  /*
   * Return all but the first N characters, to be rescanned by the nexst yylex.
--- 351,357 ----
    return scanner_normal() && parsing.need_level();
  }
  
! #define PUSH_CDF_STATE if( YY_START != cdf_state ) yy_push_state(cdf_state)
  
  /*
   * Return all but the first N characters, to be rescanned by the nexst yylex.
*************** trim_location( int nkeep) {
*** 539,545 ****
    gcc_assert( yylloc.first_line <= yylloc.last_line );    
    gcc_assert( 0 < yylloc.last_column );    
  
!   location_dump(__func__, __LINE__, "yylloc", yylloc, true);
  }
  
  static void
--- 537,543 ----
    gcc_assert( yylloc.first_line <= yylloc.last_line );    
    gcc_assert( 0 < yylloc.last_column );    
  
!   ////location_dump(__func__, __LINE__, "yylloc", yylloc, true);
  }
  
  static void
*************** symbol_function_token( const char name[]
*** 1142,1152 ****
    return 0;
  }
  
! bool in_procedure_division(void);
! bool in_environment_division(void );
  
  static symbol_elem_t *
! symbol_exists( const char name[] ) {
    typedef std::map <std::string, size_t> name_cache_t;
    static std::map <size_t, name_cache_t> cachemap;
  
--- 1140,1175 ----
    return 0;
  }
  
! bool
! in_identification_division();
! bool in_procedure_division();
! bool in_environment_division();
! 
! static const char *
! symbol_lower_name( const symbol_elem_t *e, cbl_name_t lname ) {
!   const char *pname = nullptr;
! 
!   switch(e->type) {
!   case SymFile:
!     pname = cbl_file_of(e)->name;
!     break;
!   case SymField:
!     pname = cbl_field_of(e)->name;
!     break;
!   case SymLabel:
!     pname = cbl_label_of(e)->name;
!     break;
!   default:
!     return nullptr;
!   }
!   gcc_assert(pname);
!   std::fill(lname, lname + sizeof(cbl_name_t), '\0');
!   std::transform( pname, pname + strlen(pname) + 1, lname, tolower );
!   return lname;
! }
  
  static symbol_elem_t *
! symbol_exists( const char name[], const symbol_elem_t *constant = nullptr ) {
    typedef std::map <std::string, size_t> name_cache_t;
    static std::map <size_t, name_cache_t> cachemap;
  
*************** symbol_exists( const char name[] ) {
*** 1154,1186 ****
    std::transform( name, name + strlen(name) + 1, lname, tolower );
    auto& cache = cachemap[PROGRAM];
  
!   if( in_procedure_division() && cache.empty() ) {
!     for( auto e = symbols_begin(PROGRAM) + 1;
!          e < symbols_end() && PROGRAM == e->program; e++ ) {
!       if( e->type == SymFile ) {
!         cbl_file_t *f(cbl_file_of(e));
!         cbl_name_t lname;
!         std::transform( f->name, f->name + strlen(f->name) + 1, lname, tolower );
!         cache[lname] = symbol_index(e);
!         continue;
!       }
!       if( e->type == SymField ) {
!         auto f(cbl_field_of(e));
!         cbl_name_t lname;
!         std::transform( f->name, f->name + strlen(f->name) + 1, lname, tolower );
!         cache[lname] = symbol_index(e);
        }
      }
!     cache.erase("");
    }
!   auto p = cache.find(lname);
  
!   if( p == cache.end() ) {
!     symbol_elem_t * e = symbol_field( PROGRAM, 0, name );
!     return e;
    }
- 
-   return symbol_at(p->second);
  }
  
  static int
--- 1177,1216 ----
    std::transform( name, name + strlen(name) + 1, lname, tolower );
    auto& cache = cachemap[PROGRAM];
  
!   if( in_procedure_division() ) {
!     if( cache.empty() ) {
!       for( auto e = symbols_begin(PROGRAM) + 1;
!            e < symbols_end() && PROGRAM == e->program; e++ ) {
!         cbl_name_t name;
!         const char *pname = symbol_lower_name(e, name);
!         if( pname ) {
!           cache[pname] = symbol_index(e);
!         }
        }
+       cache.erase(""); // remove unnamed symbols
      }
!     if( constant ) { // Johnny-come-lately named literal from CDF.
!       gcc_assert(constant->type == SymField);
!       cache[lname] = symbol_index(constant);
!     }
!     auto p = cache.find(lname);
!     if( p == cache.end() ) return nullptr;
!     return symbol_at(p->second);
    }
!   /*
!    * Before data division has been defined and the cache populated, search the
!    * symbol table in case of named literal.
!    */  
!   symbol_elem_t *e = symbol_field( PROGRAM, 0, name );
!   return e;
! }
  
! void
! scanner_cache_update( const symbol_elem_t *elem ) {
!   if( elem->type == SymField ) {
!     auto f = cbl_field_of(elem);
!     symbol_exists(f->name, elem);
    }
  }
  
  static int
*************** static inline bool is_quote( const char
*** 1321,1341 ****
    return ch == '\'' || ch == '"';
  }
  
! static const char*
! skip_string(const char* p, const char* pend, char delimiter) {
!   p++; // Skip opening delimiter
!   while (p < pend) {
!     if (p[0] == delimiter) {
!       if (p[1] == delimiter) {
!         p += 2; // doubled delimiter is escaped 
        } else {
!         return ++p; // Found valid closing delimiter
        }
-     } else {
-       p++;
      }
    }
!   return pend;
  }
  
  /*
--- 1351,1381 ----
    return ch == '\'' || ch == '"';
  }
  
! static int yyinput();
! static void yyunput(int ch, char yytext_ptr[]);
! 
! static std::string
! skip_string(char delimiter) {
!   int ch;
!   std::string found;
! 
!   while ((ch = yyinput()) != EOF ) {
!     dbgmsg("%s:%d: input '%c'", __func__, __LINE__, ch);
!     found += ch;
!     if (ch == delimiter) {
!       if( (ch = yyinput()) == EOF ) break;
!       dbgmsg("%s:%d: input '%c'", __func__, __LINE__, ch);
!       if (ch == delimiter) {
!         found += ch;
!         continue;
        } else {
!         unput(ch);
!         dbgmsg("%s:%d: unput '%c'", __func__, __LINE__, ch);
!         return found; // Found valid closing delimiter
        }
      }
    }
!   return found;
  }
  
  /*
*************** skip_string(const char* p, const char* p
*** 1349,1364 ****
   * parentheses in the left part, e.g. ((LENGTH OF x/2) - (y/2)) : 1.
   */
  static bool
! is_refmod( const char input[], const char enput[] ) {
!   if( input == enput ) return false;
!   gcc_assert( *input == '(' );
!   int depth = 1;
    bool colon_at_depth1 = false;
  
!   for( const char *p = input + 1; p < enput; p++ ) {
!     char ch = *p;
      if( is_quote(ch) ) {
!       p = skip_string(p, enput, ch) - 1;
        continue;
      }
      if( ch == '(' ) {
--- 1389,1432 ----
   * parentheses in the left part, e.g. ((LENGTH OF x/2) - (y/2)) : 1.
   */
  static bool
! is_refmod() {
!   class yystr_t {
!     std::string text;
!   public:
!     ~yystr_t() {
!       while( ! text.empty() ) {
!         char ch = text.back();
!         text.pop_back();
!         unput(ch);
!         dbgmsg("%s:%d: unput '%c'", __func__, __LINE__, ch);
!       }
!     }
!     int input() {
!       int ch = yyinput();
!       dbgmsg("%s:%d: input '%c'", __func__, __LINE__, ch);
!       if( ch != EOF) text += ch;
!       return ch;
!     }
!     yystr_t& operator+=( const std::string& that ) {
!       text += that;
!       return *this;
!     }
!     const char * c_str() const { return text.c_str(); }
!     size_t size() const { return text.size(); }
!   } yystr;
! 
!   gcc_assert( *yytext == '(' );
! 
!   int ch, depth = 1;
    bool colon_at_depth1 = false;
  
!   while( (ch = yystr.input()) != EOF ) {
      if( is_quote(ch) ) {
!       std::string s = skip_string(ch);
!       if( s.empty() ) {
!         break;
!       }
!       yystr += s;
        continue;
      }
      if( ch == '(' ) {
*************** is_refmod( const char input[], const cha
*** 1378,1383 ****
      }
    }
    dbgmsg("%s:%d: '%.*s' is %sa refmod", __func__, __LINE__,
!          int(enput - input), input, colon_at_depth1? "" : "not ");
    return colon_at_depth1;
  }
--- 1446,1477 ----
      }
    }
    dbgmsg("%s:%d: '%.*s' is %sa refmod", __func__, __LINE__,
!          int(yystr.size()), yystr.c_str(), colon_at_depth1? "" : "not ");
    return colon_at_depth1;
  }
+ 
+ /*
+  * Given a QSTRING in yytext, remove leading and trailing quotes, and undouble
+  * any in the body of the string.
+  */
+ static char*
+ unquote() {
+   char *p = yytext, *pend = yytext + yyleng;
+   char *output = xstrdup(yytext), quote = *p;
+   char prior = '\0';
+ 
+   pend = std::copy_if( ++p, --pend, output, 
+                        [quote, &prior]( char ch ) {
+                          if( ch == quote ) {
+                            if( ch == prior ) {
+                              prior = '\0';
+                              return false;
+                            }
+                            prior = ch;
+                          }
+                          return true;
+                        } );
+   *pend = '\0';
+   return output;
+ }
+ 
diff -Nrcpad gcc-17-20260816/gcc/cobol/scan_post.h gcc-17-20260823/gcc/cobol/scan_post.h
*** gcc-17-20260816/gcc/cobol/scan_post.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/scan_post.h	Sun Aug 23 22:32:07 2026
*************** start_condition_str( int sc ) {
*** 45,51 ****
    case datetime_fmt: state = "datetime_fmt"; break;
    case dot_state: state = "dot_state"; break;
    case exception: state = "exception"; break;
!   case field_level: state = "field_level"; break;
    case field_state: state = "field_state"; break;
    case function: state = "function"; break;
    case hex_state: state = "hex_state"; break;
--- 45,51 ----
    case datetime_fmt: state = "datetime_fmt"; break;
    case dot_state: state = "dot_state"; break;
    case exception: state = "exception"; break;
!   case field_data_item: state = "field_data_item"; break;
    case field_state: state = "field_state"; break;
    case function: state = "function"; break;
    case hex_state: state = "hex_state"; break;
*************** run_cdf( int token ) {
*** 234,241 ****
  
    parsing.parser_restore();
  
-   if( YY_START == cdf_state ) yy_pop_state();
- 
    if( yy_flex_debug ) {
      dbgmsg("%s: CDF parser returned %d, scanner SC <%s>", __func__, 
             erc, start_condition_is());
--- 234,239 ----
*************** run_cdf( int token ) {
*** 244,250 ****
    return  0 == erc;
  }
  
- #include <queue>
  struct recent_token_t {
    int token;
    YYSTYPE value;
--- 242,247 ----
*************** struct recent_token_t {
*** 255,347 ****
    recent_token_t( int token, cbl_loc_t loc )
      : token(token), loc(loc) {}
  };
- #define RECENT(T) recent_token_t( (T), yylval )
  
  namespace cdf {
!   int used_token();
    cbl_loc_t location();
  }
  
- static bool
- same_end(const cbl_loc_t& a, const cbl_loc_t& b ) {
-   return a.last_line == b.last_line
-     &&   a.last_column == b.last_column;
- }
- 
- /*
-  * Two tokens are one and the same if they have the type and end at the same
-  * place.  The scanner's idea of the current location might embrace more
-  * characters.
-  */
- static bool
- same_token( const recent_token_t& a, const recent_token_t& b ) {
-   return a.token == b.token && same_end(a.loc, b.loc);
- }
- 
- /*
-  * Each time the generated scanner returns a token from lexer(), it's pushed on
-  * the recent_tokens queue.  The queue is 2 deep, representing the CDF parser's
-  * current and lookahead tokens. 
-  */
- static struct recent_tokens_t : protected std::queue<recent_token_t>
- {
-   const recent_token_t& operator<<(int token) {
-     while( 1 < size() ) pop();
-     push( recent_token_t(token, yylval, yylloc) );
-     return front();
-   }
- 
-   bool eof() const {
-     return size() == 1 && front().token == YYEOF;
-   }
-   
-   int next() {
-     int end_token = cdf::used_token();
-     
-     switch( size() ) {
-     default: gcc_unreachable();
-     case 0:
-       dbgmsg("%s:%d: 0 recent tokens []",  __func__, __LINE__);
-       break;
-     case 1: 
-       dbgmsg("%s:%d: 1 recent token  [%s]",  __func__, __LINE__,
-              keyword_str(back().token));
-       break;
-     case 2:
-       dbgmsg("%s:%d: 2 recent tokens  [%s, %s]", __func__, __LINE__,
-              keyword_str(front().token),
-              keyword_str(back().token));
-       break;
-     }      
- 
-     /*
-      * Clear any used tokens.  Return the unused token, if extant, which was
-      * the lookahead token.  Because it was the last one returned by lexer(),
-      * the location is accurate.  Else return the next token.
-      */
-     recent_token_t ending(end_token, cdf::location());
-     if( ! empty() && same_token(front(), ending) ) pop();
-     if( ! empty() && same_token(back(), ending) ) c.clear();
- 
-     end_token = 0;
- 
-     if( ! empty() ) {
-       end_token = front().token;
-       if( ! eof() ) {
-         pop();
-         assert(empty());
-       }
-     }
- 
-     dbgmsg("%s:%d: returning %s", __func__, __LINE__, keyword_str(end_token));
-     return end_token;
-   }
- } recent_tokens;
- 
  static int next_token() {
!   int token = lexer();
!   recent_tokens << token;
!   return token;
  }
  
  // act on CDF tokens
--- 252,267 ----
    recent_token_t( int token, cbl_loc_t loc )
      : token(token), loc(loc) {}
  };
  
  namespace cdf {
!   bool had_lookahead();
    cbl_loc_t location();
+   int last_lexed;
  }
  
  static int next_token() {
!   cdf::last_lexed = lexer();
!   return cdf::last_lexed;
  }
  
  // act on CDF tokens
*************** prelex() {
*** 360,429 ****
    while( is_cdf_token(token) ) {
  
      if( ! run_cdf(token) ) {
!       dbgmsg( ">>CDF parser failed, ydfchar %d", ydfchar() );
!     }
!     
!     token = recent_tokens.next();
!     
!     if( recent_tokens.eof() ) {
!       dbgmsg("lexer() returned EOF (%d)", token);
!       return YYEOF;
      }
  
!     if( token == 0 ) token = next_token();
   
      if( token == NO_CONDITION && parsing.at_eof() ) {
        dbgmsg("scanner at EOF, apparently (%d)", token);
        return YYEOF;
      }
!     dbgmsg("next token  %s", keyword_str(token));
  
      // Reenter cdf parser only if next token could affect parsing state.
      if( ! parsing.on() && ! is_cdf_condition_token(token) ) break;
    }
  
!   if( yy_flex_debug ) {
!     dbgmsg("scanner SC <%s>", start_condition_is());
!   }
  
!   if( YY_START == copy_state || YY_START == cdf_state ) {
!     if( token == NAME ) {
!       auto tok = keyword_tok(ydflval.string);
!       if( tok ) token = tok;
      }
-     yy_pop_state();
-     dbgmsg("scanner SC <%s>, token now %s",
-            start_condition_is(), keyword_str(token));
-   }
  
!   /*
!    * The final, rejected CDF token might be a LEVEL number.
!    */
!   if( YY_START == field_state && level_needed() ) {
!     switch( token ) {
!     case NUMSTR:
!       dbgmsg("final token is NUMSTR");
!       yylval.number = level_of(yylval.numstr.string);
!       token = LEVEL;
!       break;
!     case cdf::parser::token::YDF_NUMBER:
!       dbgmsg("final token is YDF_NUMBER");
!       yylval.number = ydflval.number;
!       token = LEVEL;
!       break;
      }
!     if( token == LEVEL ) {
!       switch(yylval.number) {
!       case 66:
!         token = LEVEL66;
!         break;
!       case 78:
!         token = LEVEL78;
          break;
!       case 88:
!         token = LEVEL88;
          break;
        }
      }
    }
  
--- 280,365 ----
    while( is_cdf_token(token) ) {
  
      if( ! run_cdf(token) ) {
!       dbgmsg( ">>CDF parser failed, ydfchar %d", cdf::last_lexed );
      }
  
!     // The most recently lexed token was sent to the CDF.  If it was a
!     // lookahead token, it now goes to the main parser, else we get the next
!     // one.
!     if( cdf::had_lookahead() ) {
!       token = cdf::last_lexed;
!       dbgmsg("%s: recovered lookahead token  %s", __func__, keyword_str(token));
!     } else {
!       token = next_token();
!     }
   
      if( token == NO_CONDITION && parsing.at_eof() ) {
        dbgmsg("scanner at EOF, apparently (%d)", token);
        return YYEOF;
      }
!     dbgmsg("%s: next token  %s", __func__, keyword_str(token));
  
      // Reenter cdf parser only if next token could affect parsing state.
      if( ! parsing.on() && ! is_cdf_condition_token(token) ) break;
    }
  
!   // Do not disturb lexer state while we're not parsing the COBOL. 
!   if( parsing.on() ) {
!     if( YY_START == cdf_state ) yy_pop_state();
  
!     if( yy_flex_debug ) {
!       dbgmsg("scanner SC <%s>", start_condition_is());
      }
  
!     switch(YY_START) {
!     case FILE_SECT:
!     case WORKING_STORAGE_SECT:
!     case LOCAL_STORAGE_SECT:
!     case LINKAGE_SECT:
!       BEGIN(field_state);
!       if( yy_flex_debug ) {
!         dbgmsg("scanner SC now <%s>", start_condition_is());
!       }
      }
!     
!     if( YY_START == copy_state || YY_START == cdf_state ) {
!       if( token == NAME ) {
!         auto tok = keyword_tok(ydflval.string);
!         if( tok ) token = tok;
!       }
!       yy_pop_state();
!       dbgmsg("%s: scanner SC <%s>, token now %s", __func__,
!              start_condition_is(), keyword_str(token));
!     }
! 
!     /*
!      * The unused CDF token might be a LEVEL number.
!      */
!     if( YY_START == field_state && level_needed() ) {
!       switch( token ) {
!       case NUMSTR:
!         yylval.number = level_of(yylval.numstr.string);
!         token = LEVEL;
          break;
!       case NUMBER:
!         yylval.number = ydflval.number;
!         token = LEVEL;
          break;
        }
+       if( token == LEVEL ) {
+         yy_push_state(field_data_item); // do as <field_state> does for LEVEL
+         switch(yylval.number) {
+         case 66:
+           token = LEVEL66;
+           break;
+         case 78:
+           token = LEVEL78;
+           break;
+         case 88:
+           token = LEVEL88;
+           break;
+         }
+       }
      }
    }
  
*************** prelex() {
*** 454,483 ****
   * Before invoking the CDF parser, run_cdf() stashes the CDF token with
   * inject_token().  When the CDF parser turns around and calls yylex, the first
   * token returned is that stashed one, because it is the reason the CDF parser
!  * was invoked.
!  *
!  * While the CDF parser is active, the scanner saves each token returned by
!  * lexer() in the recent_tokens queue.  As the CDF parser uses a token, it
!  * records it such that it can be fetched with used_token().  A token fetched
!  * and *not* used was a lookahead token, and will be directed to the main
!  * parser.
!  *
!  * When the CDF parser returns, recent_tokens.next() compares the last two
!  * tokens fetched with the last one one used.  If there's a recent token in the
!  * queue after the last one used, that's a lookahead token.  It is returned to
!  * the main parser, which started the whole thing by calling yylex().
   *
!  * It's not really necessary to keep the last two tokens for the post-parsing
!  * logic to work.  It's enough to compare the last fetched token with the last
!  * used token.
   *
!  * It *is* really necessary to for the CDF parser to record the tokens it
!  * actually uses, at least as things stand.  The Bison C++ parser (which the
!  * CDF parser uses) records any token values that it doesn't define as -2,
!  * "invalid token".  If the lookahead token is, say, MOVE, it cannot be
!  * retrieved from the CDF parser.  That's why it's kept in the recent_tokens
!  * queue, where it's preceded by the last valid, used token, as recorded by the
!  * CDF parser.
   */
  int
  yylex(void) {
--- 390,407 ----
   * Before invoking the CDF parser, run_cdf() stashes the CDF token with
   * inject_token().  When the CDF parser turns around and calls yylex, the first
   * token returned is that stashed one, because it is the reason the CDF parser
!  * was invoked.  The scanner saves each token returned by lexer() in
!  * cdf::last_lexed.
   *
!  * When the CDF parser exits it records whether or not there was a lookahead
!  * token (else it was YYEOF or YYEMPTY).
   *
!  * When the CDF parser returns, the lexer calls cdf::had_lookahead() to see if
!  * there was a lookahead.  (It's true only once because the function clears the
!  * condition.)  If so, the lexer returns cdf::last_lexed to the main parser,
!  * which started the whole thing by calling yylex().  prelex() also compensates
!  * haphazardly for special tokens that depend on start condition, such as LEVEL
!  * versus NUMBER.
   */
  int
  yylex(void) {
*************** yylex(void) {
*** 504,509 ****
--- 428,434 ----
      produce_next_sentence_target = false;
    }
  
+   int ntoken = -1;
    do {
      token = prelex();
      if( yy_flex_debug ) {
*************** yylex(void) {
*** 515,523 ****
                   keyword_str(token) );
        }
      }
! 
    } while( token && ! parsing.feed_a_parser() );
  
    if( next_sentence && token == '.' ) {
      produce_next_sentence_target = true;
    }
--- 440,453 ----
                   keyword_str(token) );
        }
      }
!     ntoken++; // increment debug count here; might not loop to skip the token
    } while( token && ! parsing.feed_a_parser() );
  
+   if( 0 < ntoken ) {
+     dbgmsg("%s:%d: ate %d tokens, now returning %s", __func__, __LINE__,
+            ntoken, keyword_str(token));
+   }
+   
    if( next_sentence && token == '.' ) {
      produce_next_sentence_target = true;
    }
*************** yylex(void) {
*** 525,531 ****
    if( token == YYEOF && parsing.in_cdf() ) {
      if( yy_flex_debug) dbgmsg("deflecting EOF");
      parsing.at_eof(true);
!     return NO_CONDITION;
    }
  
    return token;
--- 455,461 ----
    if( token == YYEOF && parsing.in_cdf() ) {
      if( yy_flex_debug) dbgmsg("deflecting EOF");
      parsing.at_eof(true);
!     token = NO_CONDITION;
    }
  
    return token;
diff -Nrcpad gcc-17-20260816/gcc/cobol/symbols.cc gcc-17-20260823/gcc/cobol/symbols.cc
*** gcc-17-20260816/gcc/cobol/symbols.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/symbols.cc	Sun Aug 23 22:32:07 2026
*************** static struct symbol_table_t {
*** 104,110 ****
  
    struct symbol_elem_t *elems;
  
!   std::map<elem_key_t, size_t> specials;
    std::map<elem_key_t, std::list<size_t>> labels;
  
    std::vector<symbol_pair_t> mappings;
--- 104,110 ----
  
    struct symbol_elem_t *elems;
  
!   std::map<elem_key_t, size_t> specials, programs, functions;
    std::map<elem_key_t, std::list<size_t>> labels;
  
    std::vector<symbol_pair_t> mappings;
*************** static struct symbol_table_t {
*** 136,141 ****
--- 136,150 ----
      const char *name = cbl_label_of(e)->name;
      labels[ elem_key_t(e->program, name) ].push_back( symbol_index(e) );
    }
+   void program_add( size_t isym ) { label_add(programs, isym); }
+   void function_add( size_t isym ) { label_add(functions, isym); }
+  protected:
+   void label_add( std::map<elem_key_t, size_t>& M, size_t isym ) {
+     auto e = elems + isym;
+     auto L = cbl_label_of(e);
+     auto key( elem_key_t(e->program, L->name) );
+     M[key] = isym;
+   }
  } symbols;
  
  static symbol_table_t&
*************** symbol_label_id( const cbl_label_t *labe
*** 630,635 ****
--- 639,651 ----
  struct cbl_label_t *
  symbol_program( size_t parent, const char name[], bool prototype )
  {
+ #if 1
+   auto key( elem_key_t(parent, name) );
+   auto p = symbols.programs.find(key);
+   if( p == symbols.programs.end() ) return nullptr;
+   auto L = cbl_label_of(symbol_at(p->second));
+   return  L->prototype == prototype? L : nullptr;
+ #else
    cbl_label_t label = {};
    label.type = LblProgram;
    label.parent = parent;
*************** symbol_program( size_t parent, const cha
*** 644,649 ****
--- 660,666 ----
                                                   &symbols.nelem, sizeof(key),
                                                   symbol_elem_cmp ) );
    return e? cbl_label_of(e) : NULL;
+ #endif
  }
  
  extern int yydebug;
*************** enum protoreq_t {
*** 660,665 ****
--- 677,692 ----
  static struct symbol_elem_t *
  symbol_function_impl( size_t parent, const char name[], protoreq_t protoreq )
  {
+ #if 1
+   auto key( elem_key_t(parent, name) );
+   auto p = symbols.functions.find(key);
+   if( p == symbols.functions.end() ) return nullptr;
+   auto e = symbol_at(p->second);
+   const cbl_label_t *L = cbl_label_of(e);
+   if( protoreq == proto_required_e   && !L->prototype ) return nullptr;
+   if( protoreq == proto_disallowed_e &&  L->prototype ) return nullptr;
+   return e;
+ #else
    auto p = std::find_if( symbols_begin(), symbols_end(),
                           [parent, name, protoreq]( const auto& elem ) {
                             if( elem.type == SymLabel ) {
*************** symbol_function_impl( size_t parent, con
*** 681,686 ****
--- 708,714 ----
    if( yydebug && p == symbols_end() ) symbols_dump( symbols.first_program, true);
  
    return p == symbols_end()? NULL : p;
+ #endif
  }
  
  struct symbol_elem_t *
*************** cbl_alphabet_t::also( const cbl_loc_t& l
*** 3646,3691 ****
    error_msg(loc, "ALSO value %zu is unknown", ch);
  }
  
! static symbol_temporaries_t program_temporaries;
  
  /*
   * Supply a reference to the current list of temporaries for use by codegen to free
   * the memory if it decides to return to the caller.
   */
  symbol_temporaries_t&
  symbol_temporaries() {
!   return program_temporaries;
  }
  
  symbol_temporaries_t
  symbol_temporary_alphanumerics() {
!   symbol_temporaries_t output;
!   std::copy_if( program_temporaries.begin(),
!                 program_temporaries.end(),
!                 std::back_inserter(output),
!                 []( auto f ) {
!                   switch(f->type) {
!                   case FldAlphaEdited:
!                   case FldAlphanumeric:
!                     return f->has_attr(intermediate_e);
!                   case FldFloat:
!                   case FldNumericBin5:
!                   case FldNumericBinary:
!                   case FldNumericDisplay:
!                   case FldNumericEdited:
!                   case FldPacked:
!                   default:
!                     break;
!                   }
!                   return false;
!                 } );
!   for( cbl_field_t *f : output ) {
!     auto p = std::find( program_temporaries.begin(),
!                         program_temporaries.end(),
!                         f );
!     program_temporaries.erase(p);
!   }
!   return output;
  }
  
  /*
--- 3674,3742 ----
    error_msg(loc, "ALSO value %zu is unknown", ch);
  }
  
! static class program_temporaries_t : private symbol_temporaries_t {
!   std::vector<symbol_temporaries_t::iterator> alphas;
!   static bool is_alpha_intermediate( const cbl_field_t *f ) {
!     switch(f->type) {
!     case FldAlphaEdited:
!     case FldAlphanumeric:
!       return f->has_attr(intermediate_e);
!     default:
!       break;
!     }
!     return false;
!   }
!  public:
!   program_temporaries_t() {}
!   symbol_temporaries_t::iterator dnubegin() { return symbol_temporaries_t::begin(); }
!   symbol_temporaries_t::iterator dnuend() { return symbol_temporaries_t::end(); }
! 
!   void push_back( cbl_field_t *field ) {
!     symbol_temporaries_t::push_back(field);
!     if( is_alpha_intermediate(field) ) {
!       auto p(end());
!       p--;
!       alphas.push_back(p);
!     }
!   }
! 
!   // return the alphanumeric temporaries and remove them from the list
!   symbol_temporaries_t alphanumerics() {
!     symbol_temporaries_t output;
! 
!     std::transform( alphas.begin(), alphas.end(),
!                     std::back_inserter(output),
!                     []( auto p ) {
!                       return *p;
!                     } );
!     erase_alphas();
!     return output;
!   }
!   symbol_temporaries_t& as_list() {
!     return *this;
!   }
  
+  protected:
+   void erase_alphas() {
+     for( auto p : alphas ) {
+       this->erase(p);
+     }
+     alphas.clear();
+   }
+ } program_temporaries;
+         
  /*
   * Supply a reference to the current list of temporaries for use by codegen to free
   * the memory if it decides to return to the caller.
   */
  symbol_temporaries_t&
  symbol_temporaries() {
!   return program_temporaries.as_list();
  }
  
  symbol_temporaries_t
  symbol_temporary_alphanumerics() {
!   return program_temporaries.alphanumerics();
  }
  
  /*
*************** symbol_program_add( size_t program, cbl_
*** 4647,4652 ****
--- 4698,4714 ----
  
    e = symbol_append(elem);
  
+   switch( input->type ) {
+   case LblProgram:
+     symbols.program_add( symbol_index(e) );
+     break;
+   case LblFunction:
+     symbols.function_add( symbol_index(e) );
+     break;
+   default:
+     gcc_unreachable();
+   }
+ 
    common_callables_update( symbol_index(e) );
  
    return cbl_label_of(e);
diff -Nrcpad gcc-17-20260816/gcc/cobol/token_names.h gcc-17-20260823/gcc/cobol/token_names.h
*** gcc-17-20260816/gcc/cobol/token_names.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/token_names.h	Sun Aug 23 22:32:07 2026
***************
*** 1,14 ****
  // generated by token_names.h.gen
  tokens = {
! 	{ "identification", IDENTIFICATION_DIV }, // 258
! 	{ "environment", ENVIRONMENT_DIV }, // 259
! 	{ "procedure", PROCEDURE_DIV }, // 260
! 	{ "data", DATA_DIV }, // 261
! 	{ "file", FILE_SECT }, // 262
! 	{ "input-output", INPUT_OUTPUT_SECT }, // 263
! 	{ "linkage", LINKAGE_SECT }, // 264
! 	{ "local-storage", LOCAL_STORAGE_SECT }, // 265
! 	{ "working-storage", WORKING_STORAGE_SECT }, // 266
  	{ "object-computer", OBJECT_COMPUTER }, // 267
  	{ "display-of", DISPLAY_OF }, // 268
  	{ "end-function", END_FUNCTION }, // 269
--- 1,14 ----
  // generated by token_names.h.gen
  tokens = {
! 	{ "identification division", IDENTIFICATION_DIV }, // 258
! 	{ "environment division", ENVIRONMENT_DIV }, // 259
! 	{ "procedure division", PROCEDURE_DIV }, // 260
! 	{ "data division", DATA_DIV }, // 261
! 	{ "file section", FILE_SECT }, // 262
! 	{ "input_output section", INPUT_OUTPUT_SECT }, // 263
! 	{ "linkage section", LINKAGE_SECT }, // 264
! 	{ "local_storage section", LOCAL_STORAGE_SECT }, // 265
! 	{ "working_storage section", WORKING_STORAGE_SECT }, // 266
  	{ "object-computer", OBJECT_COMPUTER }, // 267
  	{ "display-of", DISPLAY_OF }, // 268
  	{ "end-function", END_FUNCTION }, // 269
*************** tokens = {
*** 125,710 ****
  	{ "star-cbl", STAR_CBL }, // 377
  	{ "subscript", SUBSCRIPT }, // 378
  	{ "suppress", SUPPRESS }, // 379
! 	{ "title", TITLE }, // 380
! 	{ "trace", TRACE }, // 381
! 	{ "use", USE }, // 382
! 	{ "cobol-words", COBOL_WORDS }, // 383
! 	{ "equate", EQUATE }, // 384
! 	{ "undefine", UNDEFINE }, // 385
! 	{ "cdf-define", CDF_DEFINE }, // 386
! 	{ "cdf-display", CDF_DISPLAY }, // 387
! 	{ "cdf-if", CDF_IF }, // 388
! 	{ "cdf-else", CDF_ELSE }, // 389
! 	{ "cdf-end-if", CDF_END_IF }, // 390
! 	{ "cdf-evaluate", CDF_EVALUATE }, // 391
! 	{ "cdf-when", CDF_WHEN }, // 392
! 	{ "cdf-end-evaluate", CDF_END_EVALUATE }, // 393
! 	{ "call-convention", CALL_CONVENTION }, // 394
! 	{ "call-cobol", CALL_COBOL }, // 395
! 	{ "call-verbatim", CALL_VERBATIM }, // 396
! 	{ "cdf-push", CDF_PUSH }, // 397
! 	{ "cdf-pop", CDF_POP }, // 398
! 	{ "source-format", SOURCE_FORMAT }, // 399
! 	{ "if", IF }, // 400
! 	{ "then", THEN }, // 401
! 	{ "else", ELSE }, // 402
! 	{ "sentence", SENTENCE }, // 403
! 	{ "accept", ACCEPT }, // 404
! 	{ "add", ADD }, // 405
! 	{ "alter", ALTER }, // 406
! 	{ "call", CALL }, // 407
! 	{ "cancel", CANCEL }, // 408
! 	{ "close", CLOSE }, // 409
! 	{ "compute", COMPUTE }, // 410
! 	{ "continue", CONTINUE }, // 411
! 	{ "delete", DELETE }, // 412
! 	{ "display", DISPLAY }, // 413
! 	{ "divide", DIVIDE }, // 414
! 	{ "evaluate", EVALUATE }, // 415
! 	{ "exit", EXIT }, // 416
! 	{ "filler", FILLER_kw }, // 417
! 	{ "goback", GOBACK }, // 418
! 	{ "goto", GOTO }, // 419
! 	{ "initialize", INITIALIZE }, // 420
! 	{ "inspect", INSPECT }, // 421
! 	{ "merge", MERGE }, // 422
! 	{ "move", MOVE }, // 423
! 	{ "multiply", MULTIPLY }, // 424
! 	{ "open", OPEN }, // 425
! 	{ "paragraph", PARAGRAPH }, // 426
! 	{ "read", READ }, // 427
! 	{ "release", RELEASE }, // 428
! 	{ "return", RETURN }, // 429
! 	{ "rewrite", REWRITE }, // 430
! 	{ "search", SEARCH }, // 431
! 	{ "set", SET }, // 432
! 	{ "select", SELECT }, // 433
! 	{ "sort", SORT }, // 434
! 	{ "sort-merge", SORT_MERGE }, // 435
! 	{ "string", STRING_kw }, // 436
! 	{ "stop", STOP }, // 437
! 	{ "subtract", SUBTRACT }, // 438
! 	{ "start", START }, // 439
! 	{ "unstring", UNSTRING }, // 440
! 	{ "write", WRITE }, // 441
! 	{ "when", WHEN }, // 442
! 	{ "argument-number", ARGUMENT_NUMBER }, // 443
! 	{ "argument-value", ARGUMENT_VALUE }, // 444
! 	{ "environment-name", ENVIRONMENT_NAME }, // 445
! 	{ "environment-value", ENVIRONMENT_VALUE }, // 446
! 	{ "abs", ABS }, // 447
! 	{ "access", ACCESS }, // 448
! 	{ "acos", ACOS }, // 449
! 	{ "actual", ACTUAL }, // 450
! 	{ "advancing", ADVANCING }, // 451
! 	{ "after", AFTER }, // 452
! 	{ "all", ALL }, // 453
! 	{ "allocate", ALLOCATE }, // 454
! 	{ "alphabet", ALPHABET }, // 455
! 	{ "alphabetic", ALPHABETIC }, // 456
! 	{ "alphabetic-lower", ALPHABETIC_LOWER }, // 457
! 	{ "alphabetic-upper", ALPHABETIC_UPPER }, // 458
! 	{ "alphanumeric", ALPHANUMERIC }, // 459
! 	{ "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 460
! 	{ "also", ALSO }, // 461
! 	{ "alternate", ALTERNATE }, // 462
! 	{ "annuity", ANNUITY }, // 463
! 	{ "anum", ANUM }, // 464
! 	{ "any", ANY }, // 465
! 	{ "anycase", ANYCASE }, // 466
! 	{ "apply", APPLY }, // 467
! 	{ "are", ARE }, // 468
! 	{ "area", AREA }, // 469
! 	{ "areas", AREAS }, // 470
! 	{ "as", AS }, // 471
! 	{ "ascending", ASCENDING }, // 472
! 	{ "activating", ACTIVATING }, // 473
! 	{ "asin", ASIN }, // 474
! 	{ "assign", ASSIGN }, // 475
! 	{ "at", AT }, // 476
! 	{ "atan", ATAN }, // 477
! 	{ "based", BASED }, // 478
! 	{ "baseconvert", BASECONVERT }, // 479
! 	{ "before", BEFORE }, // 480
! 	{ "binary", BINARY }, // 481
! 	{ "bit", BIT }, // 482
! 	{ "bit-of", BIT_OF }, // 483
! 	{ "bit-to-char", BIT_TO_CHAR }, // 484
! 	{ "blank", BLANK }, // 485
! 	{ "block", BLOCK_kw }, // 486
! 	{ "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 487
! 	{ "bottom", BOTTOM }, // 488
! 	{ "by", BY }, // 489
! 	{ "byte", BYTE }, // 490
! 	{ "byte-length", BYTE_LENGTH }, // 491
! 	{ "cf", CF }, // 492
! 	{ "ch", CH }, // 493
! 	{ "changed", CHANGED }, // 494
! 	{ "char", CHAR }, // 495
! 	{ "char-national", CHAR_NATIONAL }, // 496
! 	{ "character", CHARACTER }, // 497
! 	{ "characters", CHARACTERS }, // 498
! 	{ "checking", CHECKING }, // 499
! 	{ "class", CLASS }, // 500
! 	{ "cobol", COBOL }, // 501
! 	{ "code", CODE }, // 502
! 	{ "code-set", CODESET }, // 503
! 	{ "collating", COLLATING }, // 504
! 	{ "column", COLUMN }, // 505
! 	{ "combined-datetime", COMBINED_DATETIME }, // 506
! 	{ "comma", COMMA }, // 507
! 	{ "command-line", COMMAND_LINE }, // 508
! 	{ "command-line-count", COMMAND_LINE_COUNT }, // 509
! 	{ "commit", COMMIT }, // 510
! 	{ "common", COMMON }, // 511
! 	{ "concat", CONCAT }, // 512
! 	{ "condition", CONDITION }, // 513
! 	{ "configuration", CONFIGURATION_SECT }, // 514
! 	{ "contains", CONTAINS }, // 515
! 	{ "content", CONTENT }, // 516
! 	{ "control", CONTROL }, // 517
! 	{ "controls", CONTROLS }, // 518
! 	{ "convert", CONVERT }, // 519
! 	{ "converting", CONVERTING }, // 520
! 	{ "corresponding", CORRESPONDING }, // 521
! 	{ "cos", COS }, // 522
! 	{ "count", COUNT }, // 523
! 	{ "currency", CURRENCY }, // 524
! 	{ "current", CURRENT }, // 525
! 	{ "current-date", CURRENT_DATE }, // 526
! 	{ "data", DATA }, // 527
! 	{ "date", DATE }, // 528
! 	{ "date-compiled", DATE_COMPILED }, // 529
! 	{ "date-of-integer", DATE_OF_INTEGER }, // 530
! 	{ "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 531
! 	{ "date-written", DATE_WRITTEN }, // 532
! 	{ "day", DAY }, // 533
! 	{ "day-of-integer", DAY_OF_INTEGER }, // 534
! 	{ "day-of-week", DAY_OF_WEEK }, // 535
! 	{ "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 536
! 	{ "dbcs", DBCS }, // 537
! 	{ "de", DE }, // 538
! 	{ "debugging", DEBUGGING }, // 539
! 	{ "decimal-point", DECIMAL_POINT }, // 540
! 	{ "declaratives", DECLARATIVES }, // 541
! 	{ "delimited", DELIMITED }, // 542
! 	{ "delimiter", DELIMITER }, // 543
! 	{ "depending", DEPENDING }, // 544
! 	{ "descending", DESCENDING }, // 545
! 	{ "detail", DETAIL }, // 546
! 	{ "direct", DIRECT }, // 547
! 	{ "direct-access", DIRECT_ACCESS }, // 548
! 	{ "down", DOWN }, // 549
! 	{ "duplicates", DUPLICATES }, // 550
! 	{ "dynamic", DYNAMIC }, // 551
! 	{ "e", E }, // 552
! 	{ "ebcdic", EBCDIC }, // 553
! 	{ "ec", EC }, // 554
! 	{ "egcs", EGCS }, // 555
! 	{ "encoding", ENCODING }, // 556
! 	{ "entry", ENTRY }, // 557
! 	{ "environment", ENVIRONMENT }, // 558
! 	{ "every", EVERY }, // 559
! 	{ "examine", EXAMINE }, // 560
! 	{ "exhibit", EXHIBIT }, // 561
! 	{ "exp", EXP }, // 562
! 	{ "exp10", EXP10 }, // 563
! 	{ "extend", EXTEND }, // 564
! 	{ "external", EXTERNAL }, // 565
! 	{ "exception-file", EXCEPTION_FILE }, // 566
! 	{ "exception-file-n", EXCEPTION_FILE_N }, // 567
! 	{ "exception-location", EXCEPTION_LOCATION }, // 568
! 	{ "exception-location-n", EXCEPTION_LOCATION_N }, // 569
! 	{ "exception-statement", EXCEPTION_STATEMENT }, // 570
! 	{ "exception-status", EXCEPTION_STATUS }, // 571
! 	{ "factorial", FACTORIAL }, // 572
! 	{ "false", FALSE_kw }, // 573
! 	{ "fd", FD }, // 574
! 	{ "file-control", FILE_CONTROL }, // 575
! 	{ "file", FILE_KW }, // 576
! 	{ "file-limit", FILE_LIMIT }, // 577
! 	{ "final", FINAL }, // 578
! 	{ "finally", FINALLY }, // 579
! 	{ "find-string", FIND_STRING }, // 580
! 	{ "first", FIRST }, // 581
! 	{ "fixed", FIXED }, // 582
! 	{ "footing", FOOTING }, // 583
! 	{ "for", FOR }, // 584
! 	{ "formatted-current-date", FORMATTED_CURRENT_DATE }, // 585
! 	{ "formatted-date", FORMATTED_DATE }, // 586
! 	{ "formatted-datetime", FORMATTED_DATETIME }, // 587
! 	{ "formatted-time", FORMATTED_TIME }, // 588
! 	{ "form-overflow", FORM_OVERFLOW }, // 589
! 	{ "free", FREE }, // 590
! 	{ "fraction-part", FRACTION_PART }, // 591
! 	{ "from", FROM }, // 592
! 	{ "function", FUNCTION }, // 593
! 	{ "generate", GENERATE }, // 594
! 	{ "giving", GIVING }, // 595
! 	{ "global", GLOBAL }, // 596
! 	{ "go", GO }, // 597
! 	{ "group", GROUP }, // 598
! 	{ "heading", HEADING }, // 599
! 	{ "hex", HEX }, // 600
! 	{ "hex-of", HEX_OF }, // 601
! 	{ "hex-to-char", HEX_TO_CHAR }, // 602
! 	{ "high-values", HIGH_VALUES }, // 603
! 	{ "highest-algebraic", HIGHEST_ALGEBRAIC }, // 604
! 	{ "hold", HOLD }, // 605
! 	{ "ibm-360", IBM_360 }, // 606
! 	{ "in", IN }, // 607
! 	{ "include", INCLUDE }, // 608
! 	{ "index", INDEX }, // 609
! 	{ "indexed", INDEXED }, // 610
! 	{ "indicate", INDICATE }, // 611
! 	{ "initial", INITIAL_kw }, // 612
! 	{ "initiate", INITIATE }, // 613
! 	{ "input", INPUT }, // 614
! 	{ "installation", INSTALLATION }, // 615
! 	{ "interface", INTERFACE }, // 616
! 	{ "integer", INTEGER }, // 617
! 	{ "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 618
! 	{ "integer-of-date", INTEGER_OF_DATE }, // 619
! 	{ "integer-of-day", INTEGER_OF_DAY }, // 620
! 	{ "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 621
! 	{ "integer-part", INTEGER_PART }, // 622
! 	{ "into", INTO }, // 623
! 	{ "intrinsic", INTRINSIC }, // 624
! 	{ "invoke", INVOKE }, // 625
! 	{ "i-o", IO }, // 626
! 	{ "i-o-control", IO_CONTROL }, // 627
! 	{ "is", IS }, // 628
! 	{ "isnt", ISNT }, // 629
! 	{ "kanji", KANJI }, // 630
! 	{ "key", KEY }, // 631
! 	{ "label", LABEL }, // 632
! 	{ "last", LAST }, // 633
! 	{ "leading", LEADING }, // 634
! 	{ "left", LEFT }, // 635
! 	{ "length", LENGTH }, // 636
! 	{ "length-of", LENGTH_OF }, // 637
! 	{ "limit", LIMIT }, // 638
! 	{ "limits", LIMITS }, // 639
! 	{ "line", LINE }, // 640
! 	{ "lines", LINES }, // 641
! 	{ "line-counter", LINE_COUNTER }, // 642
! 	{ "linage", LINAGE }, // 643
! 	{ "linkage", LINKAGE }, // 644
! 	{ "locale", LOCALE }, // 645
! 	{ "locale-compare", LOCALE_COMPARE }, // 646
! 	{ "locale-date", LOCALE_DATE }, // 647
! 	{ "locale-time", LOCALE_TIME }, // 648
! 	{ "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 649
! 	{ "local-storage", LOCAL_STORAGE }, // 650
! 	{ "location", LOCATION }, // 651
! 	{ "lock", LOCK }, // 652
! 	{ "lock-on", LOCK_ON }, // 653
! 	{ "log", LOG }, // 654
! 	{ "log10", LOG10 }, // 655
! 	{ "lower-case", LOWER_CASE }, // 656
! 	{ "low-values", LOW_VALUES }, // 657
! 	{ "lowest-algebraic", LOWEST_ALGEBRAIC }, // 658
! 	{ "lparen", LPAREN }, // 659
! 	{ "manual", MANUAL }, // 660
! 	{ "maxx", MAXX }, // 661
! 	{ "mean", MEAN }, // 662
! 	{ "median", MEDIAN }, // 663
! 	{ "midrange", MIDRANGE }, // 664
! 	{ "minn", MINN }, // 665
! 	{ "multiple", MULTIPLE }, // 666
! 	{ "mod", MOD }, // 667
! 	{ "mode", MODE }, // 668
! 	{ "module-name", MODULE_NAME }, // 669
! 	{ "named", NAMED }, // 670
! 	{ "nat", NAT }, // 671
! 	{ "national", NATIONAL }, // 672
! 	{ "national-edited", NATIONAL_EDITED }, // 673
! 	{ "national-of", NATIONAL_OF }, // 674
! 	{ "native", NATIVE }, // 675
! 	{ "nested", NESTED }, // 676
! 	{ "next", NEXT }, // 677
! 	{ "no", NO }, // 678
! 	{ "note", NOTE }, // 679
! 	{ "nulls", NULLS }, // 680
! 	{ "null", NULLS }, // 680
! 	{ "nullptr", NULLPTR }, // 681
! 	{ "numeric", NUMERIC }, // 682
! 	{ "numeric-edited", NUMERIC_EDITED }, // 683
! 	{ "numval", NUMVAL }, // 684
! 	{ "numval-c", NUMVAL_C }, // 685
! 	{ "numval-f", NUMVAL_F }, // 686
! 	{ "occurs", OCCURS }, // 687
! 	{ "of", OF }, // 688
! 	{ "off", OFF }, // 689
! 	{ "omitted", OMITTED }, // 690
! 	{ "on", ON }, // 691
! 	{ "only", ONLY }, // 692
! 	{ "optional", OPTIONAL }, // 693
! 	{ "options", OPTIONS }, // 694
! 	{ "ord", ORD }, // 695
! 	{ "order", ORDER }, // 696
! 	{ "ord-max", ORD_MAX }, // 697
! 	{ "ord-min", ORD_MIN }, // 698
! 	{ "organization", ORGANIZATION }, // 699
! 	{ "other", OTHER }, // 700
! 	{ "otherwise", OTHERWISE }, // 701
! 	{ "output", OUTPUT }, // 702
! 	{ "packed-decimal", PACKED_DECIMAL }, // 703
! 	{ "padding", PADDING }, // 704
! 	{ "page", PAGE }, // 705
! 	{ "page-counter", PAGE_COUNTER }, // 706
! 	{ "pf", PF }, // 707
! 	{ "ph", PH }, // 708
! 	{ "pi", PI }, // 709
! 	{ "pic", PIC }, // 710
! 	{ "picture", PICTURE }, // 711
! 	{ "plus", PLUS }, // 712
! 	{ "present-value", PRESENT_VALUE }, // 713
! 	{ "print-switch", PRINT_SWITCH }, // 714
! 	{ "procedure", PROCEDURE }, // 715
! 	{ "procedures", PROCEDURES }, // 716
! 	{ "proceed", PROCEED }, // 717
! 	{ "processing", PROCESSING }, // 718
! 	{ "program-id", PROGRAM_ID }, // 719
! 	{ "program", PROGRAM_kw }, // 720
! 	{ "property", PROPERTY }, // 721
! 	{ "prototype", PROTOTYPE }, // 722
! 	{ "pseudotext", PSEUDOTEXT }, // 723
! 	{ "quotes", QUOTES }, // 724
! 	{ "quote", QUOTES }, // 724
! 	{ "random", RANDOM }, // 725
! 	{ "random-seed", RANDOM_SEED }, // 726
! 	{ "range", RANGE }, // 727
! 	{ "raise", RAISE }, // 728
! 	{ "raising", RAISING }, // 729
! 	{ "rd", RD }, // 730
! 	{ "record", RECORD }, // 731
! 	{ "recording", RECORDING }, // 732
! 	{ "records", RECORDS }, // 733
! 	{ "recursive", RECURSIVE }, // 734
! 	{ "redefines", REDEFINES }, // 735
! 	{ "reel", REEL }, // 736
! 	{ "reference", REFERENCE }, // 737
! 	{ "relative", RELATIVE }, // 738
! 	{ "rem", REM }, // 739
! 	{ "remainder", REMAINDER }, // 740
! 	{ "remarks", REMARKS }, // 741
! 	{ "removal", REMOVAL }, // 742
! 	{ "renames", RENAMES }, // 743
! 	{ "replace", REPLACE }, // 744
! 	{ "replacing", REPLACING }, // 745
! 	{ "report", REPORT }, // 746
! 	{ "reporting", REPORTING }, // 747
! 	{ "reports", REPORTS }, // 748
! 	{ "repository", REPOSITORY }, // 749
! 	{ "rerun", RERUN }, // 750
! 	{ "reserve", RESERVE }, // 751
! 	{ "restricted", RESTRICTED }, // 752
! 	{ "resume", RESUME }, // 753
! 	{ "retry", RETRY }, // 754
! 	{ "reverse", REVERSE }, // 755
! 	{ "reversed", REVERSED }, // 756
! 	{ "rewind", REWIND }, // 757
! 	{ "rf", RF }, // 758
! 	{ "rh", RH }, // 759
! 	{ "right", RIGHT }, // 760
! 	{ "rounded", ROUNDED }, // 761
! 	{ "run", RUN }, // 762
! 	{ "same", SAME }, // 763
! 	{ "screen", SCREEN }, // 764
! 	{ "sd", SD }, // 765
! 	{ "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 766
! 	{ "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 767
! 	{ "security", SECURITY }, // 768
! 	{ "separate", SEPARATE }, // 769
! 	{ "sequence", SEQUENCE }, // 770
! 	{ "sequential", SEQUENTIAL }, // 771
! 	{ "sharing", SHARING }, // 772
! 	{ "simple-exit", SIMPLE_EXIT }, // 773
! 	{ "sign", SIGN }, // 774
! 	{ "sin", SIN }, // 775
! 	{ "size", SIZE }, // 776
! 	{ "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 777
! 	{ "source", SOURCE }, // 778
! 	{ "source-computer", SOURCE_COMPUTER }, // 779
! 	{ "special-names", SPECIAL_NAMES }, // 780
! 	{ "sqrt", SQRT }, // 781
! 	{ "stack", STACK }, // 782
! 	{ "standard", STANDARD }, // 783
! 	{ "standard-1", STANDARD_1 }, // 784
! 	{ "standard-deviation", STANDARD_DEVIATION }, // 785
! 	{ "standard-compare", STANDARD_COMPARE }, // 786
! 	{ "status", STATUS }, // 787
! 	{ "strong", STRONG }, // 788
! 	{ "substitute", SUBSTITUTE }, // 789
! 	{ "sum", SUM }, // 790
! 	{ "symbol", SYMBOL }, // 791
! 	{ "symbolic", SYMBOLIC }, // 792
! 	{ "synchronized", SYNCHRONIZED }, // 793
! 	{ "tallying", TALLYING }, // 794
! 	{ "tan", TAN }, // 795
! 	{ "terminate", TERMINATE }, // 796
! 	{ "test", TEST }, // 797
! 	{ "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 798
! 	{ "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 799
! 	{ "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 800
! 	{ "test-numval", TEST_NUMVAL }, // 801
! 	{ "test-numval-c", TEST_NUMVAL_C }, // 802
! 	{ "test-numval-f", TEST_NUMVAL_F }, // 803
! 	{ "than", THAN }, // 804
! 	{ "time", TIME }, // 805
! 	{ "times", TIMES }, // 806
! 	{ "to", TO }, // 807
! 	{ "top", TOP }, // 808
! 	{ "top-level", TOP_LEVEL }, // 809
! 	{ "tracks", TRACKS }, // 810
! 	{ "track-area", TRACK_AREA }, // 811
! 	{ "trailing", TRAILING }, // 812
! 	{ "transform", TRANSFORM }, // 813
! 	{ "trim", TRIM }, // 814
! 	{ "true", TRUE_kw }, // 815
! 	{ "try", TRY }, // 816
! 	{ "turn", TURN }, // 817
! 	{ "type", TYPE }, // 818
! 	{ "typedef", TYPEDEF }, // 819
! 	{ "ulength", ULENGTH }, // 820
! 	{ "unbounded", UNBOUNDED }, // 821
! 	{ "unit", UNIT }, // 822
! 	{ "units", UNITS }, // 823
! 	{ "unit-record", UNIT_RECORD }, // 824
! 	{ "until", UNTIL }, // 825
! 	{ "up", UP }, // 826
! 	{ "upon", UPON }, // 827
! 	{ "upos", UPOS }, // 828
! 	{ "upper-case", UPPER_CASE }, // 829
! 	{ "usage", USAGE }, // 830
! 	{ "using", USING }, // 831
! 	{ "usubstr", USUBSTR }, // 832
! 	{ "usupplementary", USUPPLEMENTARY }, // 833
! 	{ "utility", UTILITY }, // 834
! 	{ "uuid4", UUID4 }, // 835
! 	{ "uvalid", UVALID }, // 836
! 	{ "uwidth", UWIDTH }, // 837
! 	{ "validating", VALIDATING }, // 838
! 	{ "value", VALUE }, // 839
! 	{ "variance", VARIANCE }, // 840
! 	{ "varying", VARYING }, // 841
! 	{ "volatile", VOLATILE }, // 842
! 	{ "when-compiled", WHEN_COMPILED }, // 843
! 	{ "with", WITH }, // 844
! 	{ "working-storage", WORKING_STORAGE }, // 845
! 	{ "year-to-yyyy", YEAR_TO_YYYY }, // 846
! 	{ "yyyyddd", YYYYDDD }, // 847
! 	{ "yyyymmdd", YYYYMMDD }, // 848
! 	{ "arithmetic", ARITHMETIC }, // 849
! 	{ "attribute", ATTRIBUTE }, // 850
! 	{ "auto", AUTO }, // 851
! 	{ "automatic", AUTOMATIC }, // 852
! 	{ "away-from-zero", AWAY_FROM_ZERO }, // 853
! 	{ "background-color", BACKGROUND_COLOR }, // 854
! 	{ "bell", BELL }, // 855
! 	{ "binary-encoding", BINARY_ENCODING }, // 856
! 	{ "blink", BLINK }, // 857
! 	{ "capacity", CAPACITY }, // 858
! 	{ "center", CENTER }, // 859
! 	{ "classification", CLASSIFICATION }, // 860
! 	{ "cycle", CYCLE }, // 861
! 	{ "decimal-encoding", DECIMAL_ENCODING }, // 862
! 	{ "entry-convention", ENTRY_CONVENTION }, // 863
! 	{ "eol", EOL }, // 864
! 	{ "eos", EOS }, // 865
! 	{ "erase", ERASE }, // 866
! 	{ "expands", EXPANDS }, // 867
! 	{ "float-binary", FLOAT_BINARY }, // 868
! 	{ "float-decimal", FLOAT_DECIMAL }, // 869
! 	{ "foreground-color", FOREGROUND_COLOR }, // 870
! 	{ "forever", FOREVER }, // 871
! 	{ "full", FULL }, // 872
! 	{ "highlight", HIGHLIGHT }, // 873
! 	{ "high-order-left", HIGH_ORDER_LEFT }, // 874
! 	{ "high-order-right", HIGH_ORDER_RIGHT }, // 875
! 	{ "ignoring", IGNORING }, // 876
! 	{ "implements", IMPLEMENTS }, // 877
! 	{ "initialized", INITIALIZED }, // 878
! 	{ "intermediate", INTERMEDIATE }, // 879
! 	{ "lc-all", LC_ALL_kw }, // 880
! 	{ "lc-collate", LC_COLLATE_kw }, // 881
! 	{ "lc-ctype", LC_CTYPE_kw }, // 882
! 	{ "lc-messages", LC_MESSAGES_kw }, // 883
! 	{ "lc-monetary", LC_MONETARY_kw }, // 884
! 	{ "lc-numeric", LC_NUMERIC_kw }, // 885
! 	{ "lc-time", LC_TIME_kw }, // 886
! 	{ "lowlight", LOWLIGHT }, // 887
! 	{ "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 888
! 	{ "nearest-even", NEAREST_EVEN }, // 889
! 	{ "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 890
! 	{ "none", NONE }, // 891
! 	{ "normal", NORMAL }, // 892
! 	{ "numbers", NUMBERS }, // 893
! 	{ "prefixed", PREFIXED }, // 894
! 	{ "previous", PREVIOUS }, // 895
! 	{ "prohibited", PROHIBITED }, // 896
! 	{ "relation", RELATION }, // 897
! 	{ "required", REQUIRED }, // 898
! 	{ "reverse-video", REVERSE_VIDEO }, // 899
! 	{ "rounding", ROUNDING }, // 900
! 	{ "seconds", SECONDS }, // 901
! 	{ "secure", SECURE }, // 902
! 	{ "short", SHORT }, // 903
! 	{ "signed", SIGNED_kw }, // 904
! 	{ "standard-binary", STANDARD_BINARY }, // 905
! 	{ "standard-decimal", STANDARD_DECIMAL }, // 906
! 	{ "statement", STATEMENT }, // 907
! 	{ "step", STEP }, // 908
! 	{ "structure", STRUCTURE }, // 909
! 	{ "toward-greater", TOWARD_GREATER }, // 910
! 	{ "toward-lesser", TOWARD_LESSER }, // 911
! 	{ "truncation", TRUNCATION }, // 912
! 	{ "ucs-4", UCS_4 }, // 913
! 	{ "underline", UNDERLINE }, // 914
! 	{ "unsigned", UNSIGNED_kw }, // 915
! 	{ "utf-16", UTF_16 }, // 916
! 	{ "utf-8", UTF_8 }, // 917
! 	{ "xmlgenerate", XMLGENERATE }, // 918
! 	{ "xmlparse", XMLPARSE }, // 919
! 	{ "address", ADDRESS }, // 920
! 	{ "end-accept", END_ACCEPT }, // 921
! 	{ "end-add", END_ADD }, // 922
! 	{ "end-call", END_CALL }, // 923
! 	{ "end-compute", END_COMPUTE }, // 924
! 	{ "end-delete", END_DELETE }, // 925
! 	{ "end-display", END_DISPLAY }, // 926
! 	{ "end-divide", END_DIVIDE }, // 927
! 	{ "end-evaluate", END_EVALUATE }, // 928
! 	{ "end-multiply", END_MULTIPLY }, // 929
! 	{ "end-perform", END_PERFORM }, // 930
! 	{ "end-read", END_READ }, // 931
! 	{ "end-return", END_RETURN }, // 932
! 	{ "end-rewrite", END_REWRITE }, // 933
! 	{ "end-search", END_SEARCH }, // 934
! 	{ "end-start", END_START }, // 935
! 	{ "end-string", END_STRING }, // 936
! 	{ "end-subtract", END_SUBTRACT }, // 937
! 	{ "end-unstring", END_UNSTRING }, // 938
! 	{ "end-write", END_WRITE }, // 939
! 	{ "end-xml", END_XML }, // 940
! 	{ "end-if", END_IF }, // 941
! 	{ "attributes", ATTRIBUTES }, // 942
! 	{ "element", ELEMENT }, // 943
! 	{ "namespace", NAMESPACE }, // 944
! 	{ "namespace-prefix", NAMESPACE_PREFIX }, // 945
! 	{ "nonnumeric", NONNUMERIC }, // 947
! 	{ "xml-declaration", XML_DECLARATION }, // 948
! 	{ "thru", THRU }, // 950
! 	{ "through", THRU }, // 950
! 	{ "or", OR }, // 951
! 	{ "and", AND }, // 952
! 	{ "not", NOT }, // 953
! 	{ "ne", NE }, // 954
! 	{ "le", LE }, // 955
! 	{ "ge", GE }, // 956
! 	{ "pow", POW }, // 957
! 	{ "neg", NEG }, // 958
  };
  
  // cppcheck-suppress useInitializationList
--- 125,709 ----
  	{ "star-cbl", STAR_CBL }, // 377
  	{ "subscript", SUBSCRIPT }, // 378
  	{ "suppress", SUPPRESS }, // 379
! 	{ "trace", TRACE }, // 380
! 	{ "use", USE }, // 381
! 	{ "cobol-words", COBOL_WORDS }, // 382
! 	{ "equate", EQUATE }, // 383
! 	{ "undefine", UNDEFINE }, // 384
! 	{ "cdf-define", CDF_DEFINE }, // 385
! 	{ "cdf-display", CDF_DISPLAY }, // 386
! 	{ "cdf-if", CDF_IF }, // 387
! 	{ "cdf-else", CDF_ELSE }, // 388
! 	{ "cdf-end-if", CDF_END_IF }, // 389
! 	{ "cdf-evaluate", CDF_EVALUATE }, // 390
! 	{ "cdf-when", CDF_WHEN }, // 391
! 	{ "cdf-end-evaluate", CDF_END_EVALUATE }, // 392
! 	{ "call-convention", CALL_CONVENTION }, // 393
! 	{ "call-cobol", CALL_COBOL }, // 394
! 	{ "call-verbatim", CALL_VERBATIM }, // 395
! 	{ "cdf-push", CDF_PUSH }, // 396
! 	{ "cdf-pop", CDF_POP }, // 397
! 	{ "source-format", SOURCE_FORMAT }, // 398
! 	{ "if", IF }, // 399
! 	{ "then", THEN }, // 400
! 	{ "else", ELSE }, // 401
! 	{ "sentence", SENTENCE }, // 402
! 	{ "accept", ACCEPT }, // 403
! 	{ "add", ADD }, // 404
! 	{ "alter", ALTER }, // 405
! 	{ "call", CALL }, // 406
! 	{ "cancel", CANCEL }, // 407
! 	{ "close", CLOSE }, // 408
! 	{ "compute", COMPUTE }, // 409
! 	{ "continue", CONTINUE }, // 410
! 	{ "delete", DELETE }, // 411
! 	{ "display", DISPLAY }, // 412
! 	{ "divide", DIVIDE }, // 413
! 	{ "evaluate", EVALUATE }, // 414
! 	{ "exit", EXIT }, // 415
! 	{ "filler", FILLER_kw }, // 416
! 	{ "goback", GOBACK }, // 417
! 	{ "goto", GOTO }, // 418
! 	{ "initialize", INITIALIZE }, // 419
! 	{ "inspect", INSPECT }, // 420
! 	{ "merge", MERGE }, // 421
! 	{ "move", MOVE }, // 422
! 	{ "multiply", MULTIPLY }, // 423
! 	{ "open", OPEN }, // 424
! 	{ "paragraph", PARAGRAPH }, // 425
! 	{ "read", READ }, // 426
! 	{ "release", RELEASE }, // 427
! 	{ "return", RETURN }, // 428
! 	{ "rewrite", REWRITE }, // 429
! 	{ "search", SEARCH }, // 430
! 	{ "set", SET }, // 431
! 	{ "select", SELECT }, // 432
! 	{ "sort", SORT }, // 433
! 	{ "sort-merge", SORT_MERGE }, // 434
! 	{ "string", STRING_kw }, // 435
! 	{ "stop", STOP }, // 436
! 	{ "subtract", SUBTRACT }, // 437
! 	{ "start", START }, // 438
! 	{ "unstring", UNSTRING }, // 439
! 	{ "write", WRITE }, // 440
! 	{ "when", WHEN }, // 441
! 	{ "argument-number", ARGUMENT_NUMBER }, // 442
! 	{ "argument-value", ARGUMENT_VALUE }, // 443
! 	{ "environment-name", ENVIRONMENT_NAME }, // 444
! 	{ "environment-value", ENVIRONMENT_VALUE }, // 445
! 	{ "abs", ABS }, // 446
! 	{ "access", ACCESS }, // 447
! 	{ "acos", ACOS }, // 448
! 	{ "actual", ACTUAL }, // 449
! 	{ "advancing", ADVANCING }, // 450
! 	{ "after", AFTER }, // 451
! 	{ "all", ALL }, // 452
! 	{ "allocate", ALLOCATE }, // 453
! 	{ "alphabet", ALPHABET }, // 454
! 	{ "alphabetic", ALPHABETIC }, // 455
! 	{ "alphabetic-lower", ALPHABETIC_LOWER }, // 456
! 	{ "alphabetic-upper", ALPHABETIC_UPPER }, // 457
! 	{ "alphanumeric", ALPHANUMERIC }, // 458
! 	{ "alphanumeric-edited", ALPHANUMERIC_EDITED }, // 459
! 	{ "also", ALSO }, // 460
! 	{ "alternate", ALTERNATE }, // 461
! 	{ "annuity", ANNUITY }, // 462
! 	{ "anum", ANUM }, // 463
! 	{ "any", ANY }, // 464
! 	{ "anycase", ANYCASE }, // 465
! 	{ "apply", APPLY }, // 466
! 	{ "are", ARE }, // 467
! 	{ "area", AREA }, // 468
! 	{ "areas", AREAS }, // 469
! 	{ "as", AS }, // 470
! 	{ "ascending", ASCENDING }, // 471
! 	{ "activating", ACTIVATING }, // 472
! 	{ "asin", ASIN }, // 473
! 	{ "assign", ASSIGN }, // 474
! 	{ "at", AT }, // 475
! 	{ "atan", ATAN }, // 476
! 	{ "based", BASED }, // 477
! 	{ "baseconvert", BASECONVERT }, // 478
! 	{ "before", BEFORE }, // 479
! 	{ "binary", BINARY }, // 480
! 	{ "bit", BIT }, // 481
! 	{ "bit-of", BIT_OF }, // 482
! 	{ "bit-to-char", BIT_TO_CHAR }, // 483
! 	{ "blank", BLANK }, // 484
! 	{ "block", BLOCK_kw }, // 485
! 	{ "boolean-of-integer", BOOLEAN_OF_INTEGER }, // 486
! 	{ "bottom", BOTTOM }, // 487
! 	{ "by", BY }, // 488
! 	{ "byte", BYTE }, // 489
! 	{ "byte-length", BYTE_LENGTH }, // 490
! 	{ "cf", CF }, // 491
! 	{ "ch", CH }, // 492
! 	{ "changed", CHANGED }, // 493
! 	{ "char", CHAR }, // 494
! 	{ "char-national", CHAR_NATIONAL }, // 495
! 	{ "character", CHARACTER }, // 496
! 	{ "characters", CHARACTERS }, // 497
! 	{ "checking", CHECKING }, // 498
! 	{ "class", CLASS }, // 499
! 	{ "cobol", COBOL }, // 500
! 	{ "code", CODE }, // 501
! 	{ "code-set", CODESET }, // 502
! 	{ "collating", COLLATING }, // 503
! 	{ "column", COLUMN }, // 504
! 	{ "combined-datetime", COMBINED_DATETIME }, // 505
! 	{ "comma", COMMA }, // 506
! 	{ "command-line", COMMAND_LINE }, // 507
! 	{ "command-line-count", COMMAND_LINE_COUNT }, // 508
! 	{ "commit", COMMIT }, // 509
! 	{ "common", COMMON }, // 510
! 	{ "concat", CONCAT }, // 511
! 	{ "condition", CONDITION }, // 512
! 	{ "configuration section", CONFIGURATION_SECT }, // 513
! 	{ "contains", CONTAINS }, // 514
! 	{ "content", CONTENT }, // 515
! 	{ "control", CONTROL }, // 516
! 	{ "controls", CONTROLS }, // 517
! 	{ "convert", CONVERT }, // 518
! 	{ "converting", CONVERTING }, // 519
! 	{ "corresponding", CORRESPONDING }, // 520
! 	{ "cos", COS }, // 521
! 	{ "count", COUNT }, // 522
! 	{ "currency", CURRENCY }, // 523
! 	{ "current", CURRENT }, // 524
! 	{ "current-date", CURRENT_DATE }, // 525
! 	{ "data", DATA }, // 526
! 	{ "date", DATE }, // 527
! 	{ "date-compiled", DATE_COMPILED }, // 528
! 	{ "date-of-integer", DATE_OF_INTEGER }, // 529
! 	{ "date-to-yyyymmdd", DATE_TO_YYYYMMDD }, // 530
! 	{ "date-written", DATE_WRITTEN }, // 531
! 	{ "day", DAY }, // 532
! 	{ "day-of-integer", DAY_OF_INTEGER }, // 533
! 	{ "day-of-week", DAY_OF_WEEK }, // 534
! 	{ "day-to-yyyyddd", DAY_TO_YYYYDDD }, // 535
! 	{ "dbcs", DBCS }, // 536
! 	{ "de", DE }, // 537
! 	{ "debugging", DEBUGGING }, // 538
! 	{ "decimal-point", DECIMAL_POINT }, // 539
! 	{ "declaratives", DECLARATIVES }, // 540
! 	{ "delimited", DELIMITED }, // 541
! 	{ "delimiter", DELIMITER }, // 542
! 	{ "depending", DEPENDING }, // 543
! 	{ "descending", DESCENDING }, // 544
! 	{ "detail", DETAIL }, // 545
! 	{ "direct", DIRECT }, // 546
! 	{ "direct-access", DIRECT_ACCESS }, // 547
! 	{ "down", DOWN }, // 548
! 	{ "duplicates", DUPLICATES }, // 549
! 	{ "dynamic", DYNAMIC }, // 550
! 	{ "e", E }, // 551
! 	{ "ebcdic", EBCDIC }, // 552
! 	{ "ec", EC }, // 553
! 	{ "egcs", EGCS }, // 554
! 	{ "encoding", ENCODING }, // 555
! 	{ "entry", ENTRY }, // 556
! 	{ "environment", ENVIRONMENT }, // 557
! 	{ "every", EVERY }, // 558
! 	{ "examine", EXAMINE }, // 559
! 	{ "exhibit", EXHIBIT }, // 560
! 	{ "exp", EXP }, // 561
! 	{ "exp10", EXP10 }, // 562
! 	{ "extend", EXTEND }, // 563
! 	{ "external", EXTERNAL }, // 564
! 	{ "exception-file", EXCEPTION_FILE }, // 565
! 	{ "exception-file-n", EXCEPTION_FILE_N }, // 566
! 	{ "exception-location", EXCEPTION_LOCATION }, // 567
! 	{ "exception-location-n", EXCEPTION_LOCATION_N }, // 568
! 	{ "exception-statement", EXCEPTION_STATEMENT }, // 569
! 	{ "exception-status", EXCEPTION_STATUS }, // 570
! 	{ "factorial", FACTORIAL }, // 571
! 	{ "false", FALSE_kw }, // 572
! 	{ "fd", FD }, // 573
! 	{ "file-control", FILE_CONTROL }, // 574
! 	{ "file", FILE_KW }, // 575
! 	{ "file-limit", FILE_LIMIT }, // 576
! 	{ "final", FINAL }, // 577
! 	{ "finally", FINALLY }, // 578
! 	{ "find-string", FIND_STRING }, // 579
! 	{ "first", FIRST }, // 580
! 	{ "fixed", FIXED }, // 581
! 	{ "footing", FOOTING }, // 582
! 	{ "for", FOR }, // 583
! 	{ "formatted-current-date", FORMATTED_CURRENT_DATE }, // 584
! 	{ "formatted-date", FORMATTED_DATE }, // 585
! 	{ "formatted-datetime", FORMATTED_DATETIME }, // 586
! 	{ "formatted-time", FORMATTED_TIME }, // 587
! 	{ "form-overflow", FORM_OVERFLOW }, // 588
! 	{ "free", FREE }, // 589
! 	{ "fraction-part", FRACTION_PART }, // 590
! 	{ "from", FROM }, // 591
! 	{ "function", FUNCTION }, // 592
! 	{ "generate", GENERATE }, // 593
! 	{ "giving", GIVING }, // 594
! 	{ "global", GLOBAL }, // 595
! 	{ "go", GO }, // 596
! 	{ "group", GROUP }, // 597
! 	{ "heading", HEADING }, // 598
! 	{ "hex", HEX }, // 599
! 	{ "hex-of", HEX_OF }, // 600
! 	{ "hex-to-char", HEX_TO_CHAR }, // 601
! 	{ "high-values", HIGH_VALUES }, // 602
! 	{ "highest-algebraic", HIGHEST_ALGEBRAIC }, // 603
! 	{ "hold", HOLD }, // 604
! 	{ "ibm-360", IBM_360 }, // 605
! 	{ "in", IN }, // 606
! 	{ "include", INCLUDE }, // 607
! 	{ "index", INDEX }, // 608
! 	{ "indexed", INDEXED }, // 609
! 	{ "indicate", INDICATE }, // 610
! 	{ "initial", INITIAL_kw }, // 611
! 	{ "initiate", INITIATE }, // 612
! 	{ "input", INPUT }, // 613
! 	{ "installation", INSTALLATION }, // 614
! 	{ "interface", INTERFACE }, // 615
! 	{ "integer", INTEGER }, // 616
! 	{ "integer-of-boolean", INTEGER_OF_BOOLEAN }, // 617
! 	{ "integer-of-date", INTEGER_OF_DATE }, // 618
! 	{ "integer-of-day", INTEGER_OF_DAY }, // 619
! 	{ "integer-of-formatted-date", INTEGER_OF_FORMATTED_DATE }, // 620
! 	{ "integer-part", INTEGER_PART }, // 621
! 	{ "into", INTO }, // 622
! 	{ "intrinsic", INTRINSIC }, // 623
! 	{ "invoke", INVOKE }, // 624
! 	{ "i-o", IO }, // 625
! 	{ "i-o-control", IO_CONTROL }, // 626
! 	{ "is", IS }, // 627
! 	{ "isnt", ISNT }, // 628
! 	{ "kanji", KANJI }, // 629
! 	{ "key", KEY }, // 630
! 	{ "label", LABEL }, // 631
! 	{ "last", LAST }, // 632
! 	{ "leading", LEADING }, // 633
! 	{ "left", LEFT }, // 634
! 	{ "length", LENGTH }, // 635
! 	{ "length-of", LENGTH_OF }, // 636
! 	{ "limit", LIMIT }, // 637
! 	{ "limits", LIMITS }, // 638
! 	{ "line", LINE }, // 639
! 	{ "lines", LINES }, // 640
! 	{ "line-counter", LINE_COUNTER }, // 641
! 	{ "linage", LINAGE }, // 642
! 	{ "linkage", LINKAGE }, // 643
! 	{ "locale", LOCALE }, // 644
! 	{ "locale-compare", LOCALE_COMPARE }, // 645
! 	{ "locale-date", LOCALE_DATE }, // 646
! 	{ "locale-time", LOCALE_TIME }, // 647
! 	{ "locale-time-from-seconds", LOCALE_TIME_FROM_SECONDS }, // 648
! 	{ "local-storage", LOCAL_STORAGE }, // 649
! 	{ "location", LOCATION }, // 650
! 	{ "lock", LOCK }, // 651
! 	{ "lock-on", LOCK_ON }, // 652
! 	{ "log", LOG }, // 653
! 	{ "log10", LOG10 }, // 654
! 	{ "lower-case", LOWER_CASE }, // 655
! 	{ "low-values", LOW_VALUES }, // 656
! 	{ "lowest-algebraic", LOWEST_ALGEBRAIC }, // 657
! 	{ "lparen", LPAREN }, // 658
! 	{ "manual", MANUAL }, // 659
! 	{ "maxx", MAXX }, // 660
! 	{ "mean", MEAN }, // 661
! 	{ "median", MEDIAN }, // 662
! 	{ "midrange", MIDRANGE }, // 663
! 	{ "minn", MINN }, // 664
! 	{ "multiple", MULTIPLE }, // 665
! 	{ "mod", MOD }, // 666
! 	{ "mode", MODE }, // 667
! 	{ "module-name", MODULE_NAME }, // 668
! 	{ "named", NAMED }, // 669
! 	{ "namespace", NAMESPACE }, // 670
! 	{ "namespace-prefix", NAMESPACE_PREFIX }, // 671
! 	{ "nat", NAT }, // 672
! 	{ "national", NATIONAL }, // 673
! 	{ "national-edited", NATIONAL_EDITED }, // 674
! 	{ "national-of", NATIONAL_OF }, // 675
! 	{ "native", NATIVE }, // 676
! 	{ "nested", NESTED }, // 677
! 	{ "next", NEXT }, // 678
! 	{ "no", NO }, // 679
! 	{ "note", NOTE }, // 680
! 	{ "nulls", NULLS }, // 681
! 	{ "null", NULLS }, // 681
! 	{ "nullptr", NULLPTR }, // 682
! 	{ "numeric", NUMERIC }, // 683
! 	{ "numeric-edited", NUMERIC_EDITED }, // 684
! 	{ "numval", NUMVAL }, // 685
! 	{ "numval-c", NUMVAL_C }, // 686
! 	{ "numval-f", NUMVAL_F }, // 687
! 	{ "occurs", OCCURS }, // 688
! 	{ "of", OF }, // 689
! 	{ "off", OFF }, // 690
! 	{ "omitted", OMITTED }, // 691
! 	{ "on", ON }, // 692
! 	{ "only", ONLY }, // 693
! 	{ "optional", OPTIONAL }, // 694
! 	{ "options", OPTIONS }, // 695
! 	{ "ord", ORD }, // 696
! 	{ "order", ORDER }, // 697
! 	{ "ord-max", ORD_MAX }, // 698
! 	{ "ord-min", ORD_MIN }, // 699
! 	{ "organization", ORGANIZATION }, // 700
! 	{ "other", OTHER }, // 701
! 	{ "otherwise", OTHERWISE }, // 702
! 	{ "output", OUTPUT }, // 703
! 	{ "packed-decimal", PACKED_DECIMAL }, // 704
! 	{ "padding", PADDING }, // 705
! 	{ "page", PAGE }, // 706
! 	{ "page-counter", PAGE_COUNTER }, // 707
! 	{ "pf", PF }, // 708
! 	{ "ph", PH }, // 709
! 	{ "pi", PI }, // 710
! 	{ "pic", PIC }, // 711
! 	{ "picture", PICTURE }, // 712
! 	{ "plus", PLUS }, // 713
! 	{ "present-value", PRESENT_VALUE }, // 714
! 	{ "print-switch", PRINT_SWITCH }, // 715
! 	{ "procedure", PROCEDURE }, // 716
! 	{ "procedures", PROCEDURES }, // 717
! 	{ "proceed", PROCEED }, // 718
! 	{ "processing", PROCESSING }, // 719
! 	{ "program-id", PROGRAM_ID }, // 720
! 	{ "program", PROGRAM_kw }, // 721
! 	{ "property", PROPERTY }, // 722
! 	{ "prototype", PROTOTYPE }, // 723
! 	{ "pseudotext", PSEUDOTEXT }, // 724
! 	{ "quotes", QUOTES }, // 725
! 	{ "quote", QUOTES }, // 725
! 	{ "random", RANDOM }, // 726
! 	{ "random-seed", RANDOM_SEED }, // 727
! 	{ "range", RANGE }, // 728
! 	{ "raise", RAISE }, // 729
! 	{ "raising", RAISING }, // 730
! 	{ "rd", RD }, // 731
! 	{ "record", RECORD }, // 732
! 	{ "recording", RECORDING }, // 733
! 	{ "records", RECORDS }, // 734
! 	{ "recursive", RECURSIVE }, // 735
! 	{ "redefines", REDEFINES }, // 736
! 	{ "reel", REEL }, // 737
! 	{ "reference", REFERENCE }, // 738
! 	{ "relative", RELATIVE }, // 739
! 	{ "rem", REM }, // 740
! 	{ "remainder", REMAINDER }, // 741
! 	{ "remarks", REMARKS }, // 742
! 	{ "removal", REMOVAL }, // 743
! 	{ "renames", RENAMES }, // 744
! 	{ "replace", REPLACE }, // 745
! 	{ "replacing", REPLACING }, // 746
! 	{ "report", REPORT }, // 747
! 	{ "reporting", REPORTING }, // 748
! 	{ "reports", REPORTS }, // 749
! 	{ "repository", REPOSITORY }, // 750
! 	{ "rerun", RERUN }, // 751
! 	{ "reserve", RESERVE }, // 752
! 	{ "restricted", RESTRICTED }, // 753
! 	{ "resume", RESUME }, // 754
! 	{ "retry", RETRY }, // 755
! 	{ "reverse", REVERSE }, // 756
! 	{ "reversed", REVERSED }, // 757
! 	{ "rewind", REWIND }, // 758
! 	{ "rf", RF }, // 759
! 	{ "rh", RH }, // 760
! 	{ "right", RIGHT }, // 761
! 	{ "rounded", ROUNDED }, // 762
! 	{ "run", RUN }, // 763
! 	{ "same", SAME }, // 764
! 	{ "screen", SCREEN }, // 765
! 	{ "sd", SD }, // 766
! 	{ "seconds-from-formatted-time", SECONDS_FROM_FORMATTED_TIME }, // 767
! 	{ "seconds-past-midnight", SECONDS_PAST_MIDNIGHT }, // 768
! 	{ "security", SECURITY }, // 769
! 	{ "separate", SEPARATE }, // 770
! 	{ "sequence", SEQUENCE }, // 771
! 	{ "sequential", SEQUENTIAL }, // 772
! 	{ "sharing", SHARING }, // 773
! 	{ "simple-exit", SIMPLE_EXIT }, // 774
! 	{ "sign", SIGN }, // 775
! 	{ "sin", SIN }, // 776
! 	{ "size", SIZE }, // 777
! 	{ "smallest-algebraic", SMALLEST_ALGEBRAIC }, // 778
! 	{ "source", SOURCE }, // 779
! 	{ "source-computer", SOURCE_COMPUTER }, // 780
! 	{ "special-names", SPECIAL_NAMES }, // 781
! 	{ "sqrt", SQRT }, // 782
! 	{ "stack", STACK }, // 783
! 	{ "standard", STANDARD }, // 784
! 	{ "standard-1", STANDARD_1 }, // 785
! 	{ "standard-deviation", STANDARD_DEVIATION }, // 786
! 	{ "standard-compare", STANDARD_COMPARE }, // 787
! 	{ "status", STATUS }, // 788
! 	{ "strong", STRONG }, // 789
! 	{ "substitute", SUBSTITUTE }, // 790
! 	{ "sum", SUM }, // 791
! 	{ "symbol", SYMBOL }, // 792
! 	{ "symbolic", SYMBOLIC }, // 793
! 	{ "synchronized", SYNCHRONIZED }, // 794
! 	{ "tallying", TALLYING }, // 795
! 	{ "tan", TAN }, // 796
! 	{ "terminate", TERMINATE }, // 797
! 	{ "test", TEST }, // 798
! 	{ "test-date-yyyymmdd", TEST_DATE_YYYYMMDD }, // 799
! 	{ "test-day-yyyyddd", TEST_DAY_YYYYDDD }, // 800
! 	{ "test-formatted-datetime", TEST_FORMATTED_DATETIME }, // 801
! 	{ "test-numval", TEST_NUMVAL }, // 802
! 	{ "test-numval-c", TEST_NUMVAL_C }, // 803
! 	{ "test-numval-f", TEST_NUMVAL_F }, // 804
! 	{ "than", THAN }, // 805
! 	{ "time", TIME }, // 806
! 	{ "times", TIMES }, // 807
! 	{ "to", TO }, // 808
! 	{ "top", TOP }, // 809
! 	{ "top-level", TOP_LEVEL }, // 810
! 	{ "tracks", TRACKS }, // 811
! 	{ "track-area", TRACK_AREA }, // 812
! 	{ "trailing", TRAILING }, // 813
! 	{ "transform", TRANSFORM }, // 814
! 	{ "trim", TRIM }, // 815
! 	{ "true", TRUE_kw }, // 816
! 	{ "try", TRY }, // 817
! 	{ "turn", TURN }, // 818
! 	{ "type", TYPE }, // 819
! 	{ "typedef", TYPEDEF }, // 820
! 	{ "ulength", ULENGTH }, // 821
! 	{ "unbounded", UNBOUNDED }, // 822
! 	{ "unit", UNIT }, // 823
! 	{ "units", UNITS }, // 824
! 	{ "unit-record", UNIT_RECORD }, // 825
! 	{ "until", UNTIL }, // 826
! 	{ "up", UP }, // 827
! 	{ "upon", UPON }, // 828
! 	{ "upos", UPOS }, // 829
! 	{ "upper-case", UPPER_CASE }, // 830
! 	{ "usage", USAGE }, // 831
! 	{ "using", USING }, // 832
! 	{ "usubstr", USUBSTR }, // 833
! 	{ "usupplementary", USUPPLEMENTARY }, // 834
! 	{ "utility", UTILITY }, // 835
! 	{ "uuid4", UUID4 }, // 836
! 	{ "uvalid", UVALID }, // 837
! 	{ "uwidth", UWIDTH }, // 838
! 	{ "validating", VALIDATING }, // 839
! 	{ "value", VALUE }, // 840
! 	{ "variance", VARIANCE }, // 841
! 	{ "varying", VARYING }, // 842
! 	{ "volatile", VOLATILE }, // 843
! 	{ "when-compiled", WHEN_COMPILED }, // 844
! 	{ "with", WITH }, // 845
! 	{ "working-storage", WORKING_STORAGE }, // 846
! 	{ "year-to-yyyy", YEAR_TO_YYYY }, // 847
! 	{ "yyyyddd", YYYYDDD }, // 848
! 	{ "yyyymmdd", YYYYMMDD }, // 849
! 	{ "arithmetic", ARITHMETIC }, // 850
! 	{ "attribute", ATTRIBUTE }, // 851
! 	{ "auto", AUTO }, // 852
! 	{ "automatic", AUTOMATIC }, // 853
! 	{ "away-from-zero", AWAY_FROM_ZERO }, // 854
! 	{ "background-color", BACKGROUND_COLOR }, // 855
! 	{ "bell", BELL }, // 856
! 	{ "binary-encoding", BINARY_ENCODING }, // 857
! 	{ "blink", BLINK }, // 858
! 	{ "capacity", CAPACITY }, // 859
! 	{ "center", CENTER }, // 860
! 	{ "classification", CLASSIFICATION }, // 861
! 	{ "cycle", CYCLE }, // 862
! 	{ "decimal-encoding", DECIMAL_ENCODING }, // 863
! 	{ "entry-convention", ENTRY_CONVENTION }, // 864
! 	{ "eol", EOL }, // 865
! 	{ "eos", EOS }, // 866
! 	{ "erase", ERASE }, // 867
! 	{ "expands", EXPANDS }, // 868
! 	{ "float-binary", FLOAT_BINARY }, // 869
! 	{ "float-decimal", FLOAT_DECIMAL }, // 870
! 	{ "foreground-color", FOREGROUND_COLOR }, // 871
! 	{ "forever", FOREVER }, // 872
! 	{ "full", FULL }, // 873
! 	{ "highlight", HIGHLIGHT }, // 874
! 	{ "high-order-left", HIGH_ORDER_LEFT }, // 875
! 	{ "high-order-right", HIGH_ORDER_RIGHT }, // 876
! 	{ "ignoring", IGNORING }, // 877
! 	{ "implements", IMPLEMENTS }, // 878
! 	{ "initialized", INITIALIZED }, // 879
! 	{ "intermediate", INTERMEDIATE }, // 880
! 	{ "lc-all", LC_ALL_kw }, // 881
! 	{ "lc-collate", LC_COLLATE_kw }, // 882
! 	{ "lc-ctype", LC_CTYPE_kw }, // 883
! 	{ "lc-messages", LC_MESSAGES_kw }, // 884
! 	{ "lc-monetary", LC_MONETARY_kw }, // 885
! 	{ "lc-numeric", LC_NUMERIC_kw }, // 886
! 	{ "lc-time", LC_TIME_kw }, // 887
! 	{ "lowlight", LOWLIGHT }, // 888
! 	{ "nearest-away-from-zero", NEAREST_AWAY_FROM_ZERO }, // 889
! 	{ "nearest-even", NEAREST_EVEN }, // 890
! 	{ "nearest-toward-zero", NEAREST_TOWARD_ZERO }, // 891
! 	{ "none", NONE }, // 892
! 	{ "normal", NORMAL }, // 893
! 	{ "numbers", NUMBERS }, // 894
! 	{ "prefixed", PREFIXED }, // 895
! 	{ "previous", PREVIOUS }, // 896
! 	{ "prohibited", PROHIBITED }, // 897
! 	{ "relation", RELATION }, // 898
! 	{ "required", REQUIRED }, // 899
! 	{ "reverse-video", REVERSE_VIDEO }, // 900
! 	{ "rounding", ROUNDING }, // 901
! 	{ "seconds", SECONDS }, // 902
! 	{ "secure", SECURE }, // 903
! 	{ "short", SHORT }, // 904
! 	{ "signed", SIGNED_kw }, // 905
! 	{ "standard-binary", STANDARD_BINARY }, // 906
! 	{ "standard-decimal", STANDARD_DECIMAL }, // 907
! 	{ "statement", STATEMENT }, // 908
! 	{ "step", STEP }, // 909
! 	{ "structure", STRUCTURE }, // 910
! 	{ "toward-greater", TOWARD_GREATER }, // 911
! 	{ "toward-lesser", TOWARD_LESSER }, // 912
! 	{ "truncation", TRUNCATION }, // 913
! 	{ "ucs-4", UCS_4 }, // 914
! 	{ "underline", UNDERLINE }, // 915
! 	{ "unsigned", UNSIGNED_kw }, // 916
! 	{ "utf-16", UTF_16 }, // 917
! 	{ "utf-8", UTF_8 }, // 918
! 	{ "xml-declaration", XML_DECLARATION }, // 919
! 	{ "xmlgenerate", XMLGENERATE }, // 920
! 	{ "xmlparse", XMLPARSE }, // 921
! 	{ "address", ADDRESS }, // 922
! 	{ "end-accept", END_ACCEPT }, // 923
! 	{ "end-add", END_ADD }, // 924
! 	{ "end-call", END_CALL }, // 925
! 	{ "end-compute", END_COMPUTE }, // 926
! 	{ "end-delete", END_DELETE }, // 927
! 	{ "end-display", END_DISPLAY }, // 928
! 	{ "end-divide", END_DIVIDE }, // 929
! 	{ "end-evaluate", END_EVALUATE }, // 930
! 	{ "end-multiply", END_MULTIPLY }, // 931
! 	{ "end-perform", END_PERFORM }, // 932
! 	{ "end-read", END_READ }, // 933
! 	{ "end-return", END_RETURN }, // 934
! 	{ "end-rewrite", END_REWRITE }, // 935
! 	{ "end-search", END_SEARCH }, // 936
! 	{ "end-start", END_START }, // 937
! 	{ "end-string", END_STRING }, // 938
! 	{ "end-subtract", END_SUBTRACT }, // 939
! 	{ "end-unstring", END_UNSTRING }, // 940
! 	{ "end-write", END_WRITE }, // 941
! 	{ "end-xml", END_XML }, // 942
! 	{ "end-if", END_IF }, // 943
! 	{ "attributes", ATTRIBUTES }, // 944
! 	{ "element", ELEMENT }, // 945
! 	{ "nonnumeric", NONNUMERIC }, // 946
! 	{ "thru", THRU }, // 947
! 	{ "through", THRU }, // 947
! 	{ "or", OR }, // 948
! 	{ "and", AND }, // 949
! 	{ "not", NOT }, // 950
! 	{ "ne", NE }, // 951
! 	{ "le", LE }, // 952
! 	{ "ge", GE }, // 953
! 	{ "pow", POW }, // 954
! 	{ "neg", NEG }, // 955
  };
  
  // cppcheck-suppress useInitializationList
*************** token_names = {
*** 831,1411 ****
  	"STAR-CBL", // 119 (377)
  	"SUBSCRIPT", // 120 (378)
  	"SUPPRESS", // 121 (379)
! 	"TITLE", // 122 (380)
! 	"TRACE", // 123 (381)
! 	"USE", // 124 (382)
! 	"COBOL-WORDS", // 125 (383)
! 	"EQUATE", // 126 (384)
! 	"UNDEFINE", // 127 (385)
! 	"CDF-DEFINE", // 128 (386)
! 	"CDF-DISPLAY", // 129 (387)
! 	"CDF-IF", // 130 (388)
! 	"CDF-ELSE", // 131 (389)
! 	"CDF-END-IF", // 132 (390)
! 	"CDF-EVALUATE", // 133 (391)
! 	"CDF-WHEN", // 134 (392)
! 	"CDF-END-EVALUATE", // 135 (393)
! 	"CALL-CONVENTION", // 136 (394)
! 	"CALL-COBOL", // 137 (395)
! 	"CALL-VERBATIM", // 138 (396)
! 	"CDF-PUSH", // 139 (397)
! 	"CDF-POP", // 140 (398)
! 	"SOURCE-FORMAT", // 141 (399)
! 	"IF", // 142 (400)
! 	"THEN", // 143 (401)
! 	"ELSE", // 144 (402)
! 	"SENTENCE", // 145 (403)
! 	"ACCEPT", // 146 (404)
! 	"ADD", // 147 (405)
! 	"ALTER", // 148 (406)
! 	"CALL", // 149 (407)
! 	"CANCEL", // 150 (408)
! 	"CLOSE", // 151 (409)
! 	"COMPUTE", // 152 (410)
! 	"CONTINUE", // 153 (411)
! 	"DELETE", // 154 (412)
! 	"DISPLAY", // 155 (413)
! 	"DIVIDE", // 156 (414)
! 	"EVALUATE", // 157 (415)
! 	"EXIT", // 158 (416)
! 	"FILLER", // 159 (417)
! 	"GOBACK", // 160 (418)
! 	"GOTO", // 161 (419)
! 	"INITIALIZE", // 162 (420)
! 	"INSPECT", // 163 (421)
! 	"MERGE", // 164 (422)
! 	"MOVE", // 165 (423)
! 	"MULTIPLY", // 166 (424)
! 	"OPEN", // 167 (425)
! 	"PARAGRAPH", // 168 (426)
! 	"READ", // 169 (427)
! 	"RELEASE", // 170 (428)
! 	"RETURN", // 171 (429)
! 	"REWRITE", // 172 (430)
! 	"SEARCH", // 173 (431)
! 	"SET", // 174 (432)
! 	"SELECT", // 175 (433)
! 	"SORT", // 176 (434)
! 	"SORT-MERGE", // 177 (435)
! 	"STRING", // 178 (436)
! 	"STOP", // 179 (437)
! 	"SUBTRACT", // 180 (438)
! 	"START", // 181 (439)
! 	"UNSTRING", // 182 (440)
! 	"WRITE", // 183 (441)
! 	"WHEN", // 184 (442)
! 	"ARGUMENT-NUMBER", // 185 (443)
! 	"ARGUMENT-VALUE", // 186 (444)
! 	"ENVIRONMENT-NAME", // 187 (445)
! 	"ENVIRONMENT-VALUE", // 188 (446)
! 	"ABS", // 189 (447)
! 	"ACCESS", // 190 (448)
! 	"ACOS", // 191 (449)
! 	"ACTUAL", // 192 (450)
! 	"ADVANCING", // 193 (451)
! 	"AFTER", // 194 (452)
! 	"ALL", // 195 (453)
! 	"ALLOCATE", // 196 (454)
! 	"ALPHABET", // 197 (455)
! 	"ALPHABETIC", // 198 (456)
! 	"ALPHABETIC-LOWER", // 199 (457)
! 	"ALPHABETIC-UPPER", // 200 (458)
! 	"ALPHANUMERIC", // 201 (459)
! 	"ALPHANUMERIC-EDITED", // 202 (460)
! 	"ALSO", // 203 (461)
! 	"ALTERNATE", // 204 (462)
! 	"ANNUITY", // 205 (463)
! 	"ANUM", // 206 (464)
! 	"ANY", // 207 (465)
! 	"ANYCASE", // 208 (466)
! 	"APPLY", // 209 (467)
! 	"ARE", // 210 (468)
! 	"AREA", // 211 (469)
! 	"AREAS", // 212 (470)
! 	"AS", // 213 (471)
! 	"ASCENDING", // 214 (472)
! 	"ACTIVATING", // 215 (473)
! 	"ASIN", // 216 (474)
! 	"ASSIGN", // 217 (475)
! 	"AT", // 218 (476)
! 	"ATAN", // 219 (477)
! 	"BASED", // 220 (478)
! 	"BASECONVERT", // 221 (479)
! 	"BEFORE", // 222 (480)
! 	"BINARY", // 223 (481)
! 	"BIT", // 224 (482)
! 	"BIT-OF", // 225 (483)
! 	"BIT-TO-CHAR", // 226 (484)
! 	"BLANK", // 227 (485)
! 	"BLOCK", // 228 (486)
! 	"BOOLEAN-OF-INTEGER", // 229 (487)
! 	"BOTTOM", // 230 (488)
! 	"BY", // 231 (489)
! 	"BYTE", // 232 (490)
! 	"BYTE-LENGTH", // 233 (491)
! 	"CF", // 234 (492)
! 	"CH", // 235 (493)
! 	"CHANGED", // 236 (494)
! 	"CHAR", // 237 (495)
! 	"CHAR-NATIONAL", // 238 (496)
! 	"CHARACTER", // 239 (497)
! 	"CHARACTERS", // 240 (498)
! 	"CHECKING", // 241 (499)
! 	"CLASS", // 242 (500)
! 	"COBOL", // 243 (501)
! 	"CODE", // 244 (502)
! 	"CODE-SET", // 245 (503)
! 	"COLLATING", // 246 (504)
! 	"COLUMN", // 247 (505)
! 	"COMBINED-DATETIME", // 248 (506)
! 	"COMMA", // 249 (507)
! 	"COMMAND-LINE", // 250 (508)
! 	"COMMAND-LINE-COUNT", // 251 (509)
! 	"COMMIT", // 252 (510)
! 	"COMMON", // 253 (511)
! 	"CONCAT", // 254 (512)
! 	"CONDITION", // 255 (513)
! 	"CONFIGURATION", // 256 (514)
! 	"CONTAINS", // 257 (515)
! 	"CONTENT", // 258 (516)
! 	"CONTROL", // 259 (517)
! 	"CONTROLS", // 260 (518)
! 	"CONVERT", // 261 (519)
! 	"CONVERTING", // 262 (520)
! 	"CORRESPONDING", // 263 (521)
! 	"COS", // 264 (522)
! 	"COUNT", // 265 (523)
! 	"CURRENCY", // 266 (524)
! 	"CURRENT", // 267 (525)
! 	"CURRENT-DATE", // 268 (526)
! 	"DATA", // 269 (527)
! 	"DATE", // 270 (528)
! 	"DATE-COMPILED", // 271 (529)
! 	"DATE-OF-INTEGER", // 272 (530)
! 	"DATE-TO-YYYYMMDD", // 273 (531)
! 	"DATE-WRITTEN", // 274 (532)
! 	"DAY", // 275 (533)
! 	"DAY-OF-INTEGER", // 276 (534)
! 	"DAY-OF-WEEK", // 277 (535)
! 	"DAY-TO-YYYYDDD", // 278 (536)
! 	"DBCS", // 279 (537)
! 	"DE", // 280 (538)
! 	"DEBUGGING", // 281 (539)
! 	"DECIMAL-POINT", // 282 (540)
! 	"DECLARATIVES", // 283 (541)
! 	"DELIMITED", // 284 (542)
! 	"DELIMITER", // 285 (543)
! 	"DEPENDING", // 286 (544)
! 	"DESCENDING", // 287 (545)
! 	"DETAIL", // 288 (546)
! 	"DIRECT", // 289 (547)
! 	"DIRECT-ACCESS", // 290 (548)
! 	"DOWN", // 291 (549)
! 	"DUPLICATES", // 292 (550)
! 	"DYNAMIC", // 293 (551)
! 	"E", // 294 (552)
! 	"EBCDIC", // 295 (553)
! 	"EC", // 296 (554)
! 	"EGCS", // 297 (555)
! 	"ENCODING", // 298 (556)
! 	"ENTRY", // 299 (557)
! 	"ENVIRONMENT", // 300 (558)
! 	"EVERY", // 301 (559)
! 	"EXAMINE", // 302 (560)
! 	"EXHIBIT", // 303 (561)
! 	"EXP", // 304 (562)
! 	"EXP10", // 305 (563)
! 	"EXTEND", // 306 (564)
! 	"EXTERNAL", // 307 (565)
! 	"EXCEPTION-FILE", // 308 (566)
! 	"EXCEPTION-FILE-N", // 309 (567)
! 	"EXCEPTION-LOCATION", // 310 (568)
! 	"EXCEPTION-LOCATION-N", // 311 (569)
! 	"EXCEPTION-STATEMENT", // 312 (570)
! 	"EXCEPTION-STATUS", // 313 (571)
! 	"FACTORIAL", // 314 (572)
! 	"FALSE", // 315 (573)
! 	"FD", // 316 (574)
! 	"FILE-CONTROL", // 317 (575)
! 	"FILE", // 318 (576)
! 	"FILE-LIMIT", // 319 (577)
! 	"FINAL", // 320 (578)
! 	"FINALLY", // 321 (579)
! 	"FIND-STRING", // 322 (580)
! 	"FIRST", // 323 (581)
! 	"FIXED", // 324 (582)
! 	"FOOTING", // 325 (583)
! 	"FOR", // 326 (584)
! 	"FORMATTED-CURRENT-DATE", // 327 (585)
! 	"FORMATTED-DATE", // 328 (586)
! 	"FORMATTED-DATETIME", // 329 (587)
! 	"FORMATTED-TIME", // 330 (588)
! 	"FORM-OVERFLOW", // 331 (589)
! 	"FREE", // 332 (590)
! 	"FRACTION-PART", // 333 (591)
! 	"FROM", // 334 (592)
! 	"FUNCTION", // 335 (593)
! 	"GENERATE", // 336 (594)
! 	"GIVING", // 337 (595)
! 	"GLOBAL", // 338 (596)
! 	"GO", // 339 (597)
! 	"GROUP", // 340 (598)
! 	"HEADING", // 341 (599)
! 	"HEX", // 342 (600)
! 	"HEX-OF", // 343 (601)
! 	"HEX-TO-CHAR", // 344 (602)
! 	"HIGH-VALUES", // 345 (603)
! 	"HIGHEST-ALGEBRAIC", // 346 (604)
! 	"HOLD", // 347 (605)
! 	"IBM-360", // 348 (606)
! 	"IN", // 349 (607)
! 	"INCLUDE", // 350 (608)
! 	"INDEX", // 351 (609)
! 	"INDEXED", // 352 (610)
! 	"INDICATE", // 353 (611)
! 	"INITIAL", // 354 (612)
! 	"INITIATE", // 355 (613)
! 	"INPUT", // 356 (614)
! 	"INSTALLATION", // 357 (615)
! 	"INTERFACE", // 358 (616)
! 	"INTEGER", // 359 (617)
! 	"INTEGER-OF-BOOLEAN", // 360 (618)
! 	"INTEGER-OF-DATE", // 361 (619)
! 	"INTEGER-OF-DAY", // 362 (620)
! 	"INTEGER-OF-FORMATTED-DATE", // 363 (621)
! 	"INTEGER-PART", // 364 (622)
! 	"INTO", // 365 (623)
! 	"INTRINSIC", // 366 (624)
! 	"INVOKE", // 367 (625)
! 	"I-O", // 368 (626)
! 	"I-O-CONTROL", // 369 (627)
! 	"IS", // 370 (628)
! 	"ISNT", // 371 (629)
! 	"KANJI", // 372 (630)
! 	"KEY", // 373 (631)
! 	"LABEL", // 374 (632)
! 	"LAST", // 375 (633)
! 	"LEADING", // 376 (634)
! 	"LEFT", // 377 (635)
! 	"LENGTH", // 378 (636)
! 	"LENGTH-OF", // 379 (637)
! 	"LIMIT", // 380 (638)
! 	"LIMITS", // 381 (639)
! 	"LINE", // 382 (640)
! 	"LINES", // 383 (641)
! 	"LINE-COUNTER", // 384 (642)
! 	"LINAGE", // 385 (643)
! 	"LINKAGE", // 386 (644)
! 	"LOCALE", // 387 (645)
! 	"LOCALE-COMPARE", // 388 (646)
! 	"LOCALE-DATE", // 389 (647)
! 	"LOCALE-TIME", // 390 (648)
! 	"LOCALE-TIME-FROM-SECONDS", // 391 (649)
! 	"LOCAL-STORAGE", // 392 (650)
! 	"LOCATION", // 393 (651)
! 	"LOCK", // 394 (652)
! 	"LOCK-ON", // 395 (653)
! 	"LOG", // 396 (654)
! 	"LOG10", // 397 (655)
! 	"LOWER-CASE", // 398 (656)
! 	"LOW-VALUES", // 399 (657)
! 	"LOWEST-ALGEBRAIC", // 400 (658)
! 	"LPAREN", // 401 (659)
! 	"MANUAL", // 402 (660)
! 	"MAXX", // 403 (661)
! 	"MEAN", // 404 (662)
! 	"MEDIAN", // 405 (663)
! 	"MIDRANGE", // 406 (664)
! 	"MINN", // 407 (665)
! 	"MULTIPLE", // 408 (666)
! 	"MOD", // 409 (667)
! 	"MODE", // 410 (668)
! 	"MODULE-NAME", // 411 (669)
! 	"NAMED", // 412 (670)
! 	"NAT", // 413 (671)
! 	"NATIONAL", // 414 (672)
! 	"NATIONAL-EDITED", // 415 (673)
! 	"NATIONAL-OF", // 416 (674)
! 	"NATIVE", // 417 (675)
! 	"NESTED", // 418 (676)
! 	"NEXT", // 419 (677)
! 	"NO", // 420 (678)
! 	"NOTE", // 421 (679)
! 	"NULLS", // 422 (680)
! 	"NULLPTR", // 423 (681)
! 	"NUMERIC", // 424 (682)
! 	"NUMERIC-EDITED", // 425 (683)
! 	"NUMVAL", // 426 (684)
! 	"NUMVAL-C", // 427 (685)
! 	"NUMVAL-F", // 428 (686)
! 	"OCCURS", // 429 (687)
! 	"OF", // 430 (688)
! 	"OFF", // 431 (689)
! 	"OMITTED", // 432 (690)
! 	"ON", // 433 (691)
! 	"ONLY", // 434 (692)
! 	"OPTIONAL", // 435 (693)
! 	"OPTIONS", // 436 (694)
! 	"ORD", // 437 (695)
! 	"ORDER", // 438 (696)
! 	"ORD-MAX", // 439 (697)
! 	"ORD-MIN", // 440 (698)
! 	"ORGANIZATION", // 441 (699)
! 	"OTHER", // 442 (700)
! 	"OTHERWISE", // 443 (701)
! 	"OUTPUT", // 444 (702)
! 	"PACKED-DECIMAL", // 445 (703)
! 	"PADDING", // 446 (704)
! 	"PAGE", // 447 (705)
! 	"PAGE-COUNTER", // 448 (706)
! 	"PF", // 449 (707)
! 	"PH", // 450 (708)
! 	"PI", // 451 (709)
! 	"PIC", // 452 (710)
! 	"PICTURE", // 453 (711)
! 	"PLUS", // 454 (712)
! 	"PRESENT-VALUE", // 455 (713)
! 	"PRINT-SWITCH", // 456 (714)
! 	"PROCEDURE", // 457 (715)
! 	"PROCEDURES", // 458 (716)
! 	"PROCEED", // 459 (717)
! 	"PROCESSING", // 460 (718)
! 	"PROGRAM-ID", // 461 (719)
! 	"PROGRAM", // 462 (720)
! 	"PROPERTY", // 463 (721)
! 	"PROTOTYPE", // 464 (722)
! 	"PSEUDOTEXT", // 465 (723)
! 	"QUOTES", // 466 (724)
! 	"RANDOM", // 467 (725)
! 	"RANDOM-SEED", // 468 (726)
! 	"RANGE", // 469 (727)
! 	"RAISE", // 470 (728)
! 	"RAISING", // 471 (729)
! 	"RD", // 472 (730)
! 	"RECORD", // 473 (731)
! 	"RECORDING", // 474 (732)
! 	"RECORDS", // 475 (733)
! 	"RECURSIVE", // 476 (734)
! 	"REDEFINES", // 477 (735)
! 	"REEL", // 478 (736)
! 	"REFERENCE", // 479 (737)
! 	"RELATIVE", // 480 (738)
! 	"REM", // 481 (739)
! 	"REMAINDER", // 482 (740)
! 	"REMARKS", // 483 (741)
! 	"REMOVAL", // 484 (742)
! 	"RENAMES", // 485 (743)
! 	"REPLACE", // 486 (744)
! 	"REPLACING", // 487 (745)
! 	"REPORT", // 488 (746)
! 	"REPORTING", // 489 (747)
! 	"REPORTS", // 490 (748)
! 	"REPOSITORY", // 491 (749)
! 	"RERUN", // 492 (750)
! 	"RESERVE", // 493 (751)
! 	"RESTRICTED", // 494 (752)
! 	"RESUME", // 495 (753)
! 	"RETRY", // 496 (754)
! 	"REVERSE", // 497 (755)
! 	"REVERSED", // 498 (756)
! 	"REWIND", // 499 (757)
! 	"RF", // 500 (758)
! 	"RH", // 501 (759)
! 	"RIGHT", // 502 (760)
! 	"ROUNDED", // 503 (761)
! 	"RUN", // 504 (762)
! 	"SAME", // 505 (763)
! 	"SCREEN", // 506 (764)
! 	"SD", // 507 (765)
! 	"SECONDS-FROM-FORMATTED-TIME", // 508 (766)
! 	"SECONDS-PAST-MIDNIGHT", // 509 (767)
! 	"SECURITY", // 510 (768)
! 	"SEPARATE", // 511 (769)
! 	"SEQUENCE", // 512 (770)
! 	"SEQUENTIAL", // 513 (771)
! 	"SHARING", // 514 (772)
! 	"SIMPLE-EXIT", // 515 (773)
! 	"SIGN", // 516 (774)
! 	"SIN", // 517 (775)
! 	"SIZE", // 518 (776)
! 	"SMALLEST-ALGEBRAIC", // 519 (777)
! 	"SOURCE", // 520 (778)
! 	"SOURCE-COMPUTER", // 521 (779)
! 	"SPECIAL-NAMES", // 522 (780)
! 	"SQRT", // 523 (781)
! 	"STACK", // 524 (782)
! 	"STANDARD", // 525 (783)
! 	"STANDARD-1", // 526 (784)
! 	"STANDARD-DEVIATION", // 527 (785)
! 	"STANDARD-COMPARE", // 528 (786)
! 	"STATUS", // 529 (787)
! 	"STRONG", // 530 (788)
! 	"SUBSTITUTE", // 531 (789)
! 	"SUM", // 532 (790)
! 	"SYMBOL", // 533 (791)
! 	"SYMBOLIC", // 534 (792)
! 	"SYNCHRONIZED", // 535 (793)
! 	"TALLYING", // 536 (794)
! 	"TAN", // 537 (795)
! 	"TERMINATE", // 538 (796)
! 	"TEST", // 539 (797)
! 	"TEST-DATE-YYYYMMDD", // 540 (798)
! 	"TEST-DAY-YYYYDDD", // 541 (799)
! 	"TEST-FORMATTED-DATETIME", // 542 (800)
! 	"TEST-NUMVAL", // 543 (801)
! 	"TEST-NUMVAL-C", // 544 (802)
! 	"TEST-NUMVAL-F", // 545 (803)
! 	"THAN", // 546 (804)
! 	"TIME", // 547 (805)
! 	"TIMES", // 548 (806)
! 	"TO", // 549 (807)
! 	"TOP", // 550 (808)
! 	"TOP-LEVEL", // 551 (809)
! 	"TRACKS", // 552 (810)
! 	"TRACK-AREA", // 553 (811)
! 	"TRAILING", // 554 (812)
! 	"TRANSFORM", // 555 (813)
! 	"TRIM", // 556 (814)
! 	"TRUE", // 557 (815)
! 	"TRY", // 558 (816)
! 	"TURN", // 559 (817)
! 	"TYPE", // 560 (818)
! 	"TYPEDEF", // 561 (819)
! 	"ULENGTH", // 562 (820)
! 	"UNBOUNDED", // 563 (821)
! 	"UNIT", // 564 (822)
! 	"UNITS", // 565 (823)
! 	"UNIT-RECORD", // 566 (824)
! 	"UNTIL", // 567 (825)
! 	"UP", // 568 (826)
! 	"UPON", // 569 (827)
! 	"UPOS", // 570 (828)
! 	"UPPER-CASE", // 571 (829)
! 	"USAGE", // 572 (830)
! 	"USING", // 573 (831)
! 	"USUBSTR", // 574 (832)
! 	"USUPPLEMENTARY", // 575 (833)
! 	"UTILITY", // 576 (834)
! 	"UUID4", // 577 (835)
! 	"UVALID", // 578 (836)
! 	"UWIDTH", // 579 (837)
! 	"VALIDATING", // 580 (838)
! 	"VALUE", // 581 (839)
! 	"VARIANCE", // 582 (840)
! 	"VARYING", // 583 (841)
! 	"VOLATILE", // 584 (842)
! 	"WHEN-COMPILED", // 585 (843)
! 	"WITH", // 586 (844)
! 	"WORKING-STORAGE", // 587 (845)
! 	"YEAR-TO-YYYY", // 588 (846)
! 	"YYYYDDD", // 589 (847)
! 	"YYYYMMDD", // 590 (848)
! 	"ARITHMETIC", // 591 (849)
! 	"ATTRIBUTE", // 592 (850)
! 	"AUTO", // 593 (851)
! 	"AUTOMATIC", // 594 (852)
! 	"AWAY-FROM-ZERO", // 595 (853)
! 	"BACKGROUND-COLOR", // 596 (854)
! 	"BELL", // 597 (855)
! 	"BINARY-ENCODING", // 598 (856)
! 	"BLINK", // 599 (857)
! 	"CAPACITY", // 600 (858)
! 	"CENTER", // 601 (859)
! 	"CLASSIFICATION", // 602 (860)
! 	"CYCLE", // 603 (861)
! 	"DECIMAL-ENCODING", // 604 (862)
! 	"ENTRY-CONVENTION", // 605 (863)
! 	"EOL", // 606 (864)
! 	"EOS", // 607 (865)
! 	"ERASE", // 608 (866)
! 	"EXPANDS", // 609 (867)
! 	"FLOAT-BINARY", // 610 (868)
! 	"FLOAT-DECIMAL", // 611 (869)
! 	"FOREGROUND-COLOR", // 612 (870)
! 	"FOREVER", // 613 (871)
! 	"FULL", // 614 (872)
! 	"HIGHLIGHT", // 615 (873)
! 	"HIGH-ORDER-LEFT", // 616 (874)
! 	"HIGH-ORDER-RIGHT", // 617 (875)
! 	"IGNORING", // 618 (876)
! 	"IMPLEMENTS", // 619 (877)
! 	"INITIALIZED", // 620 (878)
! 	"INTERMEDIATE", // 621 (879)
! 	"LC-ALL", // 622 (880)
! 	"LC-COLLATE", // 623 (881)
! 	"LC-CTYPE", // 624 (882)
! 	"LC-MESSAGES", // 625 (883)
! 	"LC-MONETARY", // 626 (884)
! 	"LC-NUMERIC", // 627 (885)
! 	"LC-TIME", // 628 (886)
! 	"LOWLIGHT", // 629 (887)
! 	"NEAREST-AWAY-FROM-ZERO", // 630 (888)
! 	"NEAREST-EVEN", // 631 (889)
! 	"NEAREST-TOWARD-ZERO", // 632 (890)
! 	"NONE", // 633 (891)
! 	"NORMAL", // 634 (892)
! 	"NUMBERS", // 635 (893)
! 	"PREFIXED", // 636 (894)
! 	"PREVIOUS", // 637 (895)
! 	"PROHIBITED", // 638 (896)
! 	"RELATION", // 639 (897)
! 	"REQUIRED", // 640 (898)
! 	"REVERSE-VIDEO", // 641 (899)
! 	"ROUNDING", // 642 (900)
! 	"SECONDS", // 643 (901)
! 	"SECURE", // 644 (902)
! 	"SHORT", // 645 (903)
! 	"SIGNED", // 646 (904)
! 	"STANDARD-BINARY", // 647 (905)
! 	"STANDARD-DECIMAL", // 648 (906)
! 	"STATEMENT", // 649 (907)
! 	"STEP", // 650 (908)
! 	"STRUCTURE", // 651 (909)
! 	"TOWARD-GREATER", // 652 (910)
! 	"TOWARD-LESSER", // 653 (911)
! 	"TRUNCATION", // 654 (912)
! 	"UCS-4", // 655 (913)
! 	"UNDERLINE", // 656 (914)
! 	"UNSIGNED", // 657 (915)
! 	"UTF-16", // 658 (916)
! 	"UTF-8", // 659 (917)
! 	"XMLGENERATE", // 660 (918)
! 	"XMLPARSE", // 661 (919)
! 	"ADDRESS", // 662 (920)
! 	"END-ACCEPT", // 663 (921)
! 	"END-ADD", // 664 (922)
! 	"END-CALL", // 665 (923)
! 	"END-COMPUTE", // 666 (924)
! 	"END-DELETE", // 667 (925)
! 	"END-DISPLAY", // 668 (926)
! 	"END-DIVIDE", // 669 (927)
! 	"END-EVALUATE", // 670 (928)
! 	"END-MULTIPLY", // 671 (929)
! 	"END-PERFORM", // 672 (930)
! 	"END-READ", // 673 (931)
! 	"END-RETURN", // 674 (932)
! 	"END-REWRITE", // 675 (933)
! 	"END-SEARCH", // 676 (934)
! 	"END-START", // 677 (935)
! 	"END-STRING", // 678 (936)
! 	"END-SUBTRACT", // 679 (937)
! 	"END-UNSTRING", // 680 (938)
! 	"END-WRITE", // 681 (939)
! 	"END-XML", // 682 (940)
! 	"END-IF", // 683 (941)
! 	"ATTRIBUTES", // 684 (942)
! 	"ELEMENT", // 685 (943)
! 	"NAMESPACE", // 686 (944)
! 	"NAMESPACE-PREFIX", // 687 (945)
! 	"NONNUMERIC", // 689 (947)
! 	"XML-DECLARATION", // 690 (948)
! 	"THRU", // 692 (950)
! 	"OR", // 693 (951)
! 	"AND", // 694 (952)
! 	"NOT", // 695 (953)
! 	"NE", // 696 (954)
! 	"LE", // 697 (955)
! 	"GE", // 698 (956)
! 	"POW", // 699 (957)
! 	"NEG", // 700 (958)
  };
--- 830,1409 ----
  	"STAR-CBL", // 119 (377)
  	"SUBSCRIPT", // 120 (378)
  	"SUPPRESS", // 121 (379)
! 	"TRACE", // 122 (380)
! 	"USE", // 123 (381)
! 	"COBOL-WORDS", // 124 (382)
! 	"EQUATE", // 125 (383)
! 	"UNDEFINE", // 126 (384)
! 	"CDF-DEFINE", // 127 (385)
! 	"CDF-DISPLAY", // 128 (386)
! 	"CDF-IF", // 129 (387)
! 	"CDF-ELSE", // 130 (388)
! 	"CDF-END-IF", // 131 (389)
! 	"CDF-EVALUATE", // 132 (390)
! 	"CDF-WHEN", // 133 (391)
! 	"CDF-END-EVALUATE", // 134 (392)
! 	"CALL-CONVENTION", // 135 (393)
! 	"CALL-COBOL", // 136 (394)
! 	"CALL-VERBATIM", // 137 (395)
! 	"CDF-PUSH", // 138 (396)
! 	"CDF-POP", // 139 (397)
! 	"SOURCE-FORMAT", // 140 (398)
! 	"IF", // 141 (399)
! 	"THEN", // 142 (400)
! 	"ELSE", // 143 (401)
! 	"SENTENCE", // 144 (402)
! 	"ACCEPT", // 145 (403)
! 	"ADD", // 146 (404)
! 	"ALTER", // 147 (405)
! 	"CALL", // 148 (406)
! 	"CANCEL", // 149 (407)
! 	"CLOSE", // 150 (408)
! 	"COMPUTE", // 151 (409)
! 	"CONTINUE", // 152 (410)
! 	"DELETE", // 153 (411)
! 	"DISPLAY", // 154 (412)
! 	"DIVIDE", // 155 (413)
! 	"EVALUATE", // 156 (414)
! 	"EXIT", // 157 (415)
! 	"FILLER", // 158 (416)
! 	"GOBACK", // 159 (417)
! 	"GOTO", // 160 (418)
! 	"INITIALIZE", // 161 (419)
! 	"INSPECT", // 162 (420)
! 	"MERGE", // 163 (421)
! 	"MOVE", // 164 (422)
! 	"MULTIPLY", // 165 (423)
! 	"OPEN", // 166 (424)
! 	"PARAGRAPH", // 167 (425)
! 	"READ", // 168 (426)
! 	"RELEASE", // 169 (427)
! 	"RETURN", // 170 (428)
! 	"REWRITE", // 171 (429)
! 	"SEARCH", // 172 (430)
! 	"SET", // 173 (431)
! 	"SELECT", // 174 (432)
! 	"SORT", // 175 (433)
! 	"SORT-MERGE", // 176 (434)
! 	"STRING", // 177 (435)
! 	"STOP", // 178 (436)
! 	"SUBTRACT", // 179 (437)
! 	"START", // 180 (438)
! 	"UNSTRING", // 181 (439)
! 	"WRITE", // 182 (440)
! 	"WHEN", // 183 (441)
! 	"ARGUMENT-NUMBER", // 184 (442)
! 	"ARGUMENT-VALUE", // 185 (443)
! 	"ENVIRONMENT-NAME", // 186 (444)
! 	"ENVIRONMENT-VALUE", // 187 (445)
! 	"ABS", // 188 (446)
! 	"ACCESS", // 189 (447)
! 	"ACOS", // 190 (448)
! 	"ACTUAL", // 191 (449)
! 	"ADVANCING", // 192 (450)
! 	"AFTER", // 193 (451)
! 	"ALL", // 194 (452)
! 	"ALLOCATE", // 195 (453)
! 	"ALPHABET", // 196 (454)
! 	"ALPHABETIC", // 197 (455)
! 	"ALPHABETIC-LOWER", // 198 (456)
! 	"ALPHABETIC-UPPER", // 199 (457)
! 	"ALPHANUMERIC", // 200 (458)
! 	"ALPHANUMERIC-EDITED", // 201 (459)
! 	"ALSO", // 202 (460)
! 	"ALTERNATE", // 203 (461)
! 	"ANNUITY", // 204 (462)
! 	"ANUM", // 205 (463)
! 	"ANY", // 206 (464)
! 	"ANYCASE", // 207 (465)
! 	"APPLY", // 208 (466)
! 	"ARE", // 209 (467)
! 	"AREA", // 210 (468)
! 	"AREAS", // 211 (469)
! 	"AS", // 212 (470)
! 	"ASCENDING", // 213 (471)
! 	"ACTIVATING", // 214 (472)
! 	"ASIN", // 215 (473)
! 	"ASSIGN", // 216 (474)
! 	"AT", // 217 (475)
! 	"ATAN", // 218 (476)
! 	"BASED", // 219 (477)
! 	"BASECONVERT", // 220 (478)
! 	"BEFORE", // 221 (479)
! 	"BINARY", // 222 (480)
! 	"BIT", // 223 (481)
! 	"BIT-OF", // 224 (482)
! 	"BIT-TO-CHAR", // 225 (483)
! 	"BLANK", // 226 (484)
! 	"BLOCK", // 227 (485)
! 	"BOOLEAN-OF-INTEGER", // 228 (486)
! 	"BOTTOM", // 229 (487)
! 	"BY", // 230 (488)
! 	"BYTE", // 231 (489)
! 	"BYTE-LENGTH", // 232 (490)
! 	"CF", // 233 (491)
! 	"CH", // 234 (492)
! 	"CHANGED", // 235 (493)
! 	"CHAR", // 236 (494)
! 	"CHAR-NATIONAL", // 237 (495)
! 	"CHARACTER", // 238 (496)
! 	"CHARACTERS", // 239 (497)
! 	"CHECKING", // 240 (498)
! 	"CLASS", // 241 (499)
! 	"COBOL", // 242 (500)
! 	"CODE", // 243 (501)
! 	"CODE-SET", // 244 (502)
! 	"COLLATING", // 245 (503)
! 	"COLUMN", // 246 (504)
! 	"COMBINED-DATETIME", // 247 (505)
! 	"COMMA", // 248 (506)
! 	"COMMAND-LINE", // 249 (507)
! 	"COMMAND-LINE-COUNT", // 250 (508)
! 	"COMMIT", // 251 (509)
! 	"COMMON", // 252 (510)
! 	"CONCAT", // 253 (511)
! 	"CONDITION", // 254 (512)
! 	"CONFIGURATION", // 255 (513)
! 	"CONTAINS", // 256 (514)
! 	"CONTENT", // 257 (515)
! 	"CONTROL", // 258 (516)
! 	"CONTROLS", // 259 (517)
! 	"CONVERT", // 260 (518)
! 	"CONVERTING", // 261 (519)
! 	"CORRESPONDING", // 262 (520)
! 	"COS", // 263 (521)
! 	"COUNT", // 264 (522)
! 	"CURRENCY", // 265 (523)
! 	"CURRENT", // 266 (524)
! 	"CURRENT-DATE", // 267 (525)
! 	"DATA", // 268 (526)
! 	"DATE", // 269 (527)
! 	"DATE-COMPILED", // 270 (528)
! 	"DATE-OF-INTEGER", // 271 (529)
! 	"DATE-TO-YYYYMMDD", // 272 (530)
! 	"DATE-WRITTEN", // 273 (531)
! 	"DAY", // 274 (532)
! 	"DAY-OF-INTEGER", // 275 (533)
! 	"DAY-OF-WEEK", // 276 (534)
! 	"DAY-TO-YYYYDDD", // 277 (535)
! 	"DBCS", // 278 (536)
! 	"DE", // 279 (537)
! 	"DEBUGGING", // 280 (538)
! 	"DECIMAL-POINT", // 281 (539)
! 	"DECLARATIVES", // 282 (540)
! 	"DELIMITED", // 283 (541)
! 	"DELIMITER", // 284 (542)
! 	"DEPENDING", // 285 (543)
! 	"DESCENDING", // 286 (544)
! 	"DETAIL", // 287 (545)
! 	"DIRECT", // 288 (546)
! 	"DIRECT-ACCESS", // 289 (547)
! 	"DOWN", // 290 (548)
! 	"DUPLICATES", // 291 (549)
! 	"DYNAMIC", // 292 (550)
! 	"E", // 293 (551)
! 	"EBCDIC", // 294 (552)
! 	"EC", // 295 (553)
! 	"EGCS", // 296 (554)
! 	"ENCODING", // 297 (555)
! 	"ENTRY", // 298 (556)
! 	"ENVIRONMENT", // 299 (557)
! 	"EVERY", // 300 (558)
! 	"EXAMINE", // 301 (559)
! 	"EXHIBIT", // 302 (560)
! 	"EXP", // 303 (561)
! 	"EXP10", // 304 (562)
! 	"EXTEND", // 305 (563)
! 	"EXTERNAL", // 306 (564)
! 	"EXCEPTION-FILE", // 307 (565)
! 	"EXCEPTION-FILE-N", // 308 (566)
! 	"EXCEPTION-LOCATION", // 309 (567)
! 	"EXCEPTION-LOCATION-N", // 310 (568)
! 	"EXCEPTION-STATEMENT", // 311 (569)
! 	"EXCEPTION-STATUS", // 312 (570)
! 	"FACTORIAL", // 313 (571)
! 	"FALSE", // 314 (572)
! 	"FD", // 315 (573)
! 	"FILE-CONTROL", // 316 (574)
! 	"FILE", // 317 (575)
! 	"FILE-LIMIT", // 318 (576)
! 	"FINAL", // 319 (577)
! 	"FINALLY", // 320 (578)
! 	"FIND-STRING", // 321 (579)
! 	"FIRST", // 322 (580)
! 	"FIXED", // 323 (581)
! 	"FOOTING", // 324 (582)
! 	"FOR", // 325 (583)
! 	"FORMATTED-CURRENT-DATE", // 326 (584)
! 	"FORMATTED-DATE", // 327 (585)
! 	"FORMATTED-DATETIME", // 328 (586)
! 	"FORMATTED-TIME", // 329 (587)
! 	"FORM-OVERFLOW", // 330 (588)
! 	"FREE", // 331 (589)
! 	"FRACTION-PART", // 332 (590)
! 	"FROM", // 333 (591)
! 	"FUNCTION", // 334 (592)
! 	"GENERATE", // 335 (593)
! 	"GIVING", // 336 (594)
! 	"GLOBAL", // 337 (595)
! 	"GO", // 338 (596)
! 	"GROUP", // 339 (597)
! 	"HEADING", // 340 (598)
! 	"HEX", // 341 (599)
! 	"HEX-OF", // 342 (600)
! 	"HEX-TO-CHAR", // 343 (601)
! 	"HIGH-VALUES", // 344 (602)
! 	"HIGHEST-ALGEBRAIC", // 345 (603)
! 	"HOLD", // 346 (604)
! 	"IBM-360", // 347 (605)
! 	"IN", // 348 (606)
! 	"INCLUDE", // 349 (607)
! 	"INDEX", // 350 (608)
! 	"INDEXED", // 351 (609)
! 	"INDICATE", // 352 (610)
! 	"INITIAL", // 353 (611)
! 	"INITIATE", // 354 (612)
! 	"INPUT", // 355 (613)
! 	"INSTALLATION", // 356 (614)
! 	"INTERFACE", // 357 (615)
! 	"INTEGER", // 358 (616)
! 	"INTEGER-OF-BOOLEAN", // 359 (617)
! 	"INTEGER-OF-DATE", // 360 (618)
! 	"INTEGER-OF-DAY", // 361 (619)
! 	"INTEGER-OF-FORMATTED-DATE", // 362 (620)
! 	"INTEGER-PART", // 363 (621)
! 	"INTO", // 364 (622)
! 	"INTRINSIC", // 365 (623)
! 	"INVOKE", // 366 (624)
! 	"I-O", // 367 (625)
! 	"I-O-CONTROL", // 368 (626)
! 	"IS", // 369 (627)
! 	"ISNT", // 370 (628)
! 	"KANJI", // 371 (629)
! 	"KEY", // 372 (630)
! 	"LABEL", // 373 (631)
! 	"LAST", // 374 (632)
! 	"LEADING", // 375 (633)
! 	"LEFT", // 376 (634)
! 	"LENGTH", // 377 (635)
! 	"LENGTH-OF", // 378 (636)
! 	"LIMIT", // 379 (637)
! 	"LIMITS", // 380 (638)
! 	"LINE", // 381 (639)
! 	"LINES", // 382 (640)
! 	"LINE-COUNTER", // 383 (641)
! 	"LINAGE", // 384 (642)
! 	"LINKAGE", // 385 (643)
! 	"LOCALE", // 386 (644)
! 	"LOCALE-COMPARE", // 387 (645)
! 	"LOCALE-DATE", // 388 (646)
! 	"LOCALE-TIME", // 389 (647)
! 	"LOCALE-TIME-FROM-SECONDS", // 390 (648)
! 	"LOCAL-STORAGE", // 391 (649)
! 	"LOCATION", // 392 (650)
! 	"LOCK", // 393 (651)
! 	"LOCK-ON", // 394 (652)
! 	"LOG", // 395 (653)
! 	"LOG10", // 396 (654)
! 	"LOWER-CASE", // 397 (655)
! 	"LOW-VALUES", // 398 (656)
! 	"LOWEST-ALGEBRAIC", // 399 (657)
! 	"LPAREN", // 400 (658)
! 	"MANUAL", // 401 (659)
! 	"MAXX", // 402 (660)
! 	"MEAN", // 403 (661)
! 	"MEDIAN", // 404 (662)
! 	"MIDRANGE", // 405 (663)
! 	"MINN", // 406 (664)
! 	"MULTIPLE", // 407 (665)
! 	"MOD", // 408 (666)
! 	"MODE", // 409 (667)
! 	"MODULE-NAME", // 410 (668)
! 	"NAMED", // 411 (669)
! 	"NAMESPACE", // 412 (670)
! 	"NAMESPACE-PREFIX", // 413 (671)
! 	"NAT", // 414 (672)
! 	"NATIONAL", // 415 (673)
! 	"NATIONAL-EDITED", // 416 (674)
! 	"NATIONAL-OF", // 417 (675)
! 	"NATIVE", // 418 (676)
! 	"NESTED", // 419 (677)
! 	"NEXT", // 420 (678)
! 	"NO", // 421 (679)
! 	"NOTE", // 422 (680)
! 	"NULLS", // 423 (681)
! 	"NULLPTR", // 424 (682)
! 	"NUMERIC", // 425 (683)
! 	"NUMERIC-EDITED", // 426 (684)
! 	"NUMVAL", // 427 (685)
! 	"NUMVAL-C", // 428 (686)
! 	"NUMVAL-F", // 429 (687)
! 	"OCCURS", // 430 (688)
! 	"OF", // 431 (689)
! 	"OFF", // 432 (690)
! 	"OMITTED", // 433 (691)
! 	"ON", // 434 (692)
! 	"ONLY", // 435 (693)
! 	"OPTIONAL", // 436 (694)
! 	"OPTIONS", // 437 (695)
! 	"ORD", // 438 (696)
! 	"ORDER", // 439 (697)
! 	"ORD-MAX", // 440 (698)
! 	"ORD-MIN", // 441 (699)
! 	"ORGANIZATION", // 442 (700)
! 	"OTHER", // 443 (701)
! 	"OTHERWISE", // 444 (702)
! 	"OUTPUT", // 445 (703)
! 	"PACKED-DECIMAL", // 446 (704)
! 	"PADDING", // 447 (705)
! 	"PAGE", // 448 (706)
! 	"PAGE-COUNTER", // 449 (707)
! 	"PF", // 450 (708)
! 	"PH", // 451 (709)
! 	"PI", // 452 (710)
! 	"PIC", // 453 (711)
! 	"PICTURE", // 454 (712)
! 	"PLUS", // 455 (713)
! 	"PRESENT-VALUE", // 456 (714)
! 	"PRINT-SWITCH", // 457 (715)
! 	"PROCEDURE", // 458 (716)
! 	"PROCEDURES", // 459 (717)
! 	"PROCEED", // 460 (718)
! 	"PROCESSING", // 461 (719)
! 	"PROGRAM-ID", // 462 (720)
! 	"PROGRAM", // 463 (721)
! 	"PROPERTY", // 464 (722)
! 	"PROTOTYPE", // 465 (723)
! 	"PSEUDOTEXT", // 466 (724)
! 	"QUOTES", // 467 (725)
! 	"RANDOM", // 468 (726)
! 	"RANDOM-SEED", // 469 (727)
! 	"RANGE", // 470 (728)
! 	"RAISE", // 471 (729)
! 	"RAISING", // 472 (730)
! 	"RD", // 473 (731)
! 	"RECORD", // 474 (732)
! 	"RECORDING", // 475 (733)
! 	"RECORDS", // 476 (734)
! 	"RECURSIVE", // 477 (735)
! 	"REDEFINES", // 478 (736)
! 	"REEL", // 479 (737)
! 	"REFERENCE", // 480 (738)
! 	"RELATIVE", // 481 (739)
! 	"REM", // 482 (740)
! 	"REMAINDER", // 483 (741)
! 	"REMARKS", // 484 (742)
! 	"REMOVAL", // 485 (743)
! 	"RENAMES", // 486 (744)
! 	"REPLACE", // 487 (745)
! 	"REPLACING", // 488 (746)
! 	"REPORT", // 489 (747)
! 	"REPORTING", // 490 (748)
! 	"REPORTS", // 491 (749)
! 	"REPOSITORY", // 492 (750)
! 	"RERUN", // 493 (751)
! 	"RESERVE", // 494 (752)
! 	"RESTRICTED", // 495 (753)
! 	"RESUME", // 496 (754)
! 	"RETRY", // 497 (755)
! 	"REVERSE", // 498 (756)
! 	"REVERSED", // 499 (757)
! 	"REWIND", // 500 (758)
! 	"RF", // 501 (759)
! 	"RH", // 502 (760)
! 	"RIGHT", // 503 (761)
! 	"ROUNDED", // 504 (762)
! 	"RUN", // 505 (763)
! 	"SAME", // 506 (764)
! 	"SCREEN", // 507 (765)
! 	"SD", // 508 (766)
! 	"SECONDS-FROM-FORMATTED-TIME", // 509 (767)
! 	"SECONDS-PAST-MIDNIGHT", // 510 (768)
! 	"SECURITY", // 511 (769)
! 	"SEPARATE", // 512 (770)
! 	"SEQUENCE", // 513 (771)
! 	"SEQUENTIAL", // 514 (772)
! 	"SHARING", // 515 (773)
! 	"SIMPLE-EXIT", // 516 (774)
! 	"SIGN", // 517 (775)
! 	"SIN", // 518 (776)
! 	"SIZE", // 519 (777)
! 	"SMALLEST-ALGEBRAIC", // 520 (778)
! 	"SOURCE", // 521 (779)
! 	"SOURCE-COMPUTER", // 522 (780)
! 	"SPECIAL-NAMES", // 523 (781)
! 	"SQRT", // 524 (782)
! 	"STACK", // 525 (783)
! 	"STANDARD", // 526 (784)
! 	"STANDARD-1", // 527 (785)
! 	"STANDARD-DEVIATION", // 528 (786)
! 	"STANDARD-COMPARE", // 529 (787)
! 	"STATUS", // 530 (788)
! 	"STRONG", // 531 (789)
! 	"SUBSTITUTE", // 532 (790)
! 	"SUM", // 533 (791)
! 	"SYMBOL", // 534 (792)
! 	"SYMBOLIC", // 535 (793)
! 	"SYNCHRONIZED", // 536 (794)
! 	"TALLYING", // 537 (795)
! 	"TAN", // 538 (796)
! 	"TERMINATE", // 539 (797)
! 	"TEST", // 540 (798)
! 	"TEST-DATE-YYYYMMDD", // 541 (799)
! 	"TEST-DAY-YYYYDDD", // 542 (800)
! 	"TEST-FORMATTED-DATETIME", // 543 (801)
! 	"TEST-NUMVAL", // 544 (802)
! 	"TEST-NUMVAL-C", // 545 (803)
! 	"TEST-NUMVAL-F", // 546 (804)
! 	"THAN", // 547 (805)
! 	"TIME", // 548 (806)
! 	"TIMES", // 549 (807)
! 	"TO", // 550 (808)
! 	"TOP", // 551 (809)
! 	"TOP-LEVEL", // 552 (810)
! 	"TRACKS", // 553 (811)
! 	"TRACK-AREA", // 554 (812)
! 	"TRAILING", // 555 (813)
! 	"TRANSFORM", // 556 (814)
! 	"TRIM", // 557 (815)
! 	"TRUE", // 558 (816)
! 	"TRY", // 559 (817)
! 	"TURN", // 560 (818)
! 	"TYPE", // 561 (819)
! 	"TYPEDEF", // 562 (820)
! 	"ULENGTH", // 563 (821)
! 	"UNBOUNDED", // 564 (822)
! 	"UNIT", // 565 (823)
! 	"UNITS", // 566 (824)
! 	"UNIT-RECORD", // 567 (825)
! 	"UNTIL", // 568 (826)
! 	"UP", // 569 (827)
! 	"UPON", // 570 (828)
! 	"UPOS", // 571 (829)
! 	"UPPER-CASE", // 572 (830)
! 	"USAGE", // 573 (831)
! 	"USING", // 574 (832)
! 	"USUBSTR", // 575 (833)
! 	"USUPPLEMENTARY", // 576 (834)
! 	"UTILITY", // 577 (835)
! 	"UUID4", // 578 (836)
! 	"UVALID", // 579 (837)
! 	"UWIDTH", // 580 (838)
! 	"VALIDATING", // 581 (839)
! 	"VALUE", // 582 (840)
! 	"VARIANCE", // 583 (841)
! 	"VARYING", // 584 (842)
! 	"VOLATILE", // 585 (843)
! 	"WHEN-COMPILED", // 586 (844)
! 	"WITH", // 587 (845)
! 	"WORKING-STORAGE", // 588 (846)
! 	"YEAR-TO-YYYY", // 589 (847)
! 	"YYYYDDD", // 590 (848)
! 	"YYYYMMDD", // 591 (849)
! 	"ARITHMETIC", // 592 (850)
! 	"ATTRIBUTE", // 593 (851)
! 	"AUTO", // 594 (852)
! 	"AUTOMATIC", // 595 (853)
! 	"AWAY-FROM-ZERO", // 596 (854)
! 	"BACKGROUND-COLOR", // 597 (855)
! 	"BELL", // 598 (856)
! 	"BINARY-ENCODING", // 599 (857)
! 	"BLINK", // 600 (858)
! 	"CAPACITY", // 601 (859)
! 	"CENTER", // 602 (860)
! 	"CLASSIFICATION", // 603 (861)
! 	"CYCLE", // 604 (862)
! 	"DECIMAL-ENCODING", // 605 (863)
! 	"ENTRY-CONVENTION", // 606 (864)
! 	"EOL", // 607 (865)
! 	"EOS", // 608 (866)
! 	"ERASE", // 609 (867)
! 	"EXPANDS", // 610 (868)
! 	"FLOAT-BINARY", // 611 (869)
! 	"FLOAT-DECIMAL", // 612 (870)
! 	"FOREGROUND-COLOR", // 613 (871)
! 	"FOREVER", // 614 (872)
! 	"FULL", // 615 (873)
! 	"HIGHLIGHT", // 616 (874)
! 	"HIGH-ORDER-LEFT", // 617 (875)
! 	"HIGH-ORDER-RIGHT", // 618 (876)
! 	"IGNORING", // 619 (877)
! 	"IMPLEMENTS", // 620 (878)
! 	"INITIALIZED", // 621 (879)
! 	"INTERMEDIATE", // 622 (880)
! 	"LC-ALL", // 623 (881)
! 	"LC-COLLATE", // 624 (882)
! 	"LC-CTYPE", // 625 (883)
! 	"LC-MESSAGES", // 626 (884)
! 	"LC-MONETARY", // 627 (885)
! 	"LC-NUMERIC", // 628 (886)
! 	"LC-TIME", // 629 (887)
! 	"LOWLIGHT", // 630 (888)
! 	"NEAREST-AWAY-FROM-ZERO", // 631 (889)
! 	"NEAREST-EVEN", // 632 (890)
! 	"NEAREST-TOWARD-ZERO", // 633 (891)
! 	"NONE", // 634 (892)
! 	"NORMAL", // 635 (893)
! 	"NUMBERS", // 636 (894)
! 	"PREFIXED", // 637 (895)
! 	"PREVIOUS", // 638 (896)
! 	"PROHIBITED", // 639 (897)
! 	"RELATION", // 640 (898)
! 	"REQUIRED", // 641 (899)
! 	"REVERSE-VIDEO", // 642 (900)
! 	"ROUNDING", // 643 (901)
! 	"SECONDS", // 644 (902)
! 	"SECURE", // 645 (903)
! 	"SHORT", // 646 (904)
! 	"SIGNED", // 647 (905)
! 	"STANDARD-BINARY", // 648 (906)
! 	"STANDARD-DECIMAL", // 649 (907)
! 	"STATEMENT", // 650 (908)
! 	"STEP", // 651 (909)
! 	"STRUCTURE", // 652 (910)
! 	"TOWARD-GREATER", // 653 (911)
! 	"TOWARD-LESSER", // 654 (912)
! 	"TRUNCATION", // 655 (913)
! 	"UCS-4", // 656 (914)
! 	"UNDERLINE", // 657 (915)
! 	"UNSIGNED", // 658 (916)
! 	"UTF-16", // 659 (917)
! 	"UTF-8", // 660 (918)
! 	"XML-DECLARATION", // 661 (919)
! 	"XMLGENERATE", // 662 (920)
! 	"XMLPARSE", // 663 (921)
! 	"ADDRESS", // 664 (922)
! 	"END-ACCEPT", // 665 (923)
! 	"END-ADD", // 666 (924)
! 	"END-CALL", // 667 (925)
! 	"END-COMPUTE", // 668 (926)
! 	"END-DELETE", // 669 (927)
! 	"END-DISPLAY", // 670 (928)
! 	"END-DIVIDE", // 671 (929)
! 	"END-EVALUATE", // 672 (930)
! 	"END-MULTIPLY", // 673 (931)
! 	"END-PERFORM", // 674 (932)
! 	"END-READ", // 675 (933)
! 	"END-RETURN", // 676 (934)
! 	"END-REWRITE", // 677 (935)
! 	"END-SEARCH", // 678 (936)
! 	"END-START", // 679 (937)
! 	"END-STRING", // 680 (938)
! 	"END-SUBTRACT", // 681 (939)
! 	"END-UNSTRING", // 682 (940)
! 	"END-WRITE", // 683 (941)
! 	"END-XML", // 684 (942)
! 	"END-IF", // 685 (943)
! 	"ATTRIBUTES", // 686 (944)
! 	"ELEMENT", // 687 (945)
! 	"NONNUMERIC", // 688 (946)
! 	"THRU", // 689 (947)
! 	"OR", // 690 (948)
! 	"AND", // 691 (949)
! 	"NOT", // 692 (950)
! 	"NE", // 693 (951)
! 	"LE", // 694 (952)
! 	"GE", // 695 (953)
! 	"POW", // 696 (954)
! 	"NEG", // 697 (955)
  };
diff -Nrcpad gcc-17-20260816/gcc/cobol/util.cc gcc-17-20260823/gcc/cobol/util.cc
*** gcc-17-20260816/gcc/cobol/util.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/cobol/util.cc	Sun Aug 23 22:32:07 2026
*************** cdf_file_name( const cbl_file_t *file )
*** 345,356 ****
    return file->name;
  }
  
- 
  void
  cdf_field_add( const cbl_loc_t& loc, const std::string& name, const cdfval_t& value ) {
    if( symbols_begin() < symbols_end() ) {
      cbl_field_t field = cdf_literalize(loc, name, value);
!     symbol_field_add(current_program_index(), &field);                    
    }
  }
  
--- 345,358 ----
    return file->name;
  }
  
  void
  cdf_field_add( const cbl_loc_t& loc, const std::string& name, const cdfval_t& value ) {
+   void scanner_cache_update( const symbol_elem_t *elem );
+ 
    if( symbols_begin() < symbols_end() ) {
      cbl_field_t field = cdf_literalize(loc, name, value);
!     auto e = symbol_field_add(current_program_index(), &field);
!     scanner_cache_update( e );
    }
  }
  
diff -Nrcpad gcc-17-20260816/gcc/combine.cc gcc-17-20260823/gcc/combine.cc
*** gcc-17-20260816/gcc/combine.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/combine.cc	Sun Aug 23 22:32:07 2026
*************** combine_simplify_rtx (rtx x, machine_mod
*** 5954,5959 ****
--- 5954,5963 ----
    /* A little bit of algebraic simplification here.  */
    switch (code)
      {
+     case PREFETCH:
+       /* A prefetch reaches memory through an address, and targets recognize
+ 	 that address with the same predicates they use for a MEM, so it
+ 	 needs the same treatment.  */
      case MEM:
        /* Ensure that our address has any ASHIFTs converted to MULT in case
  	 address-recognizing predicates are called later.  */
diff -Nrcpad gcc-17-20260816/gcc/common.opt gcc-17-20260823/gcc/common.opt
*** gcc-17-20260816/gcc/common.opt	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/common.opt	Sun Aug 23 22:32:07 2026
*************** Common Var(flag_omit_frame_pointer) Opti
*** 2503,2514 ****
  When possible do not generate stack frames.
  
  fopenmp-ompt
! Common Var(flag_openmp_ompt) EnabledBy(fopenmp-ompt-detailed)
! Emit additional calls into libgomp, enabling OMPT callbacks before and after some OpenMP worksharing constructs.
  
! fopenmp-ompt-detailed
! Common Var(flag_openmp_ompt_detailed)
! Like -fopenmp-ompt, and emit additional calls into libgomp, enabling OMPT dispatch callbacks.
  
  fopenmp-target-simd-clone
  Common Alias(fopenmp-target-simd-clone=,any,none)
--- 2503,2525 ----
  When possible do not generate stack frames.
  
  fopenmp-ompt
! Common Alias(fopenmp-ompt=,basic) RejectNegative
  
! fopenmp-ompt=
! Common Joined RejectNegative Enum(ompt_level) Var(flag_openmp_ompt) Init(OMP_OMPT_LEVEL_MINIMAL)
! Control how much detail GCC reports to an OMPT tool.
! 
! Enum
! Name(ompt_level) Type(int)
! 
! EnumValue
! Enum(ompt_level) String(minimal) Value(OMP_OMPT_LEVEL_MINIMAL)
! 
! EnumValue
! Enum(ompt_level) String(basic) Value(OMP_OMPT_LEVEL_BASIC)
! 
! EnumValue
! Enum(ompt_level) String(extended) Value(OMP_OMPT_LEVEL_EXTENDED)
  
  fopenmp-target-simd-clone
  Common Alias(fopenmp-target-simd-clone=,any,none)
diff -Nrcpad gcc-17-20260816/gcc/common.opt.urls gcc-17-20260823/gcc/common.opt.urls
*** gcc-17-20260816/gcc/common.opt.urls	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/common.opt.urls	Sun Aug 23 22:32:07 2026
*************** fomit-frame-pointer
*** 1337,1346 ****
  UrlSuffix(gcc/Optimize-Options.html#index-fno-omit-frame-pointer)
  
  fopenmp-ompt
! UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fno-openmp-ompt)
  
! fopenmp-ompt-detailed
! UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fno-openmp-ompt-detailed)
  
  fopenmp-target-simd-clone
  UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fno-openmp-target-simd-clone)
--- 1337,1346 ----
  UrlSuffix(gcc/Optimize-Options.html#index-fno-omit-frame-pointer)
  
  fopenmp-ompt
! UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fopenmp-ompt)
  
! fopenmp-ompt=
! UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fopenmp-ompt)
  
  fopenmp-target-simd-clone
  UrlSuffix(gcc/OpenMP-and-OpenACC-Options.html#index-fno-openmp-target-simd-clone)
diff -Nrcpad gcc-17-20260816/gcc/compare-elim.cc gcc-17-20260823/gcc/compare-elim.cc
*** gcc-17-20260816/gcc/compare-elim.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/compare-elim.cc	Sun Aug 23 22:32:07 2026
*************** find_comparison_dom_walker::before_dom_c
*** 465,471 ****
  	  FOR_EACH_EDGE (e, ei, bb->succs)
  	    {
  	      basic_block dest = e->dest;
! 	      if (bitmap_bit_p (df_get_live_in (bb), targetm.flags_regnum)
  		  && !single_pred_p (dest))
  		{
  		  last_cmp->missing_uses = true;
--- 465,471 ----
  	  FOR_EACH_EDGE (e, ei, bb->succs)
  	    {
  	      basic_block dest = e->dest;
! 	      if (bitmap_bit_p (df_get_live_in (dest), targetm.flags_regnum)
  		  && !single_pred_p (dest))
  		{
  		  last_cmp->missing_uses = true;
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-acle-builtins.h gcc-17-20260823/gcc/config/aarch64/aarch64-acle-builtins.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64-acle-builtins.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-acle-builtins.h	Sun Aug 23 22:32:07 2026
*************** function_expander::result_mode () const
*** 1815,1820 ****
--- 1815,1870 ----
  #define TYPES_mop_i16i64_unsigned(S, D, T) \
    D (za64, u16)
  
+ // svmop4a[_1x1]_za32[_f32]
+ // svmop4a[_1x1]_za32[_f16_f16]
+ // svmop4a[_1x1]_za32[_bf16_bf16]
+ // svmop4a[_1x1]_za32[_s16_s16]
+ // svmop4a[_1x1]_za32[_u16_u16]
+ // svmop4a[_1x1]_za32[_s8_s8]
+ // svmop4a[_1x1]_za32[_u8_u8]
+ // svmop4a[_1x1]_za32[_s8_u8]
+ // svmop4a[_1x1]_za32[_u8_s8]
+ #define TYPES_mop4_base(S, D, T) \
+   T (za32, f32, f32), \
+   T (za32, f16, f16), \
+   T (za32, bf16, bf16), \
+   T (za32, s16, s16), \
+   T (za32, u16, u16), \
+   T (za32, s8, s8), \
+   T (za32, u8, u8), \
+   T (za32, s8, u8), \
+   T (za32, u8, s8)
+ 
+ // svmop4a[_1x1]_za16[_bf16_bf16] (only if __ARM_FEATURE_SME_B16B16 != 0)
+ #define TYPES_mop4_b16b16(S, D, T) \
+   T (za16, bf16, bf16)
+ 
+ // svmop4a[_1x1]_za16[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F16 != 0)
+ #define TYPES_mop4_f8f16(S, D, T) \
+   T (za16, mf8, mf8)
+ 
+ // svmop4a[_1x1]_za32[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F32 != 0)
+ #define TYPES_mop4_f8f32(S, D, T) \
+   T (za32, mf8, mf8)
+ 
+ // svmop4a[_1x1]_za16[_f16_f16] (only if __ARM_FEATURE_SME_F16F16 != 0)
+ #define TYPES_mop4_f16f16(S, D, T) \
+   T (za16, f16, f16)
+ 
+ // svmop4a[_1x1]_za64[_f64_f64] (only if __ARM_FEATURE_SME_F64F64 != 0)
+ #define TYPES_mop4_f64f64(S, D, T) \
+   T (za64, f64, f64)
+ 
+ // svmop4a[_1x1]_za64[_s16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_s16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ #define TYPES_mop4_i16i64(S, D, T) \
+   T (za64, s16, s16), \
+   T (za64, u16, u16), \
+   T (za64, s16, u16), \
+   T (za64, u16, s16)
+ 
  /* _za.  */
  #define TYPES_za(S, D, T) \
    S (za)
*************** DEF_SVE_TYPES_ARRAY (mop_base_unsigned);
*** 2107,2112 ****
--- 2157,2169 ----
  DEF_SVE_TYPES_ARRAY (mop_i16i64);
  DEF_SVE_TYPES_ARRAY (mop_i16i64_signed);
  DEF_SVE_TYPES_ARRAY (mop_i16i64_unsigned);
+ DEF_SVE_TYPES_ARRAY (mop4_f16f16);
+ DEF_SVE_TYPES_ARRAY (mop4_b16b16);
+ DEF_SVE_TYPES_ARRAY (mop4_base);
+ DEF_SVE_TYPES_ARRAY (mop4_f64f64);
+ DEF_SVE_TYPES_ARRAY (mop4_i16i64);
+ DEF_SVE_TYPES_ARRAY (mop4_f8f16);
+ DEF_SVE_TYPES_ARRAY (mop4_f8f32);
  DEF_SVE_TYPES_ARRAY (za);
  
  DEF_SVE_TYPES_ARRAY (b_float);
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-c.cc gcc-17-20260823/gcc/config/aarch64/aarch64-c.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64-c.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-c.cc	Sun Aug 23 22:32:07 2026
*************** aarch64_update_cpp_builtins (cpp_reader
*** 317,322 ****
--- 317,324 ----
  			"__ARM_FEATURE_SME_F16F16", pfile);
    aarch64_def_or_undef (TARGET_SME_F64F64, "__ARM_FEATURE_SME_F64F64", pfile);
    aarch64_def_or_undef (TARGET_SME2, "__ARM_FEATURE_SME2", pfile);
+   aarch64_def_or_undef (AARCH64_HAVE_ISA (SME_MOP4), "__ARM_FEATURE_SME_MOP4",
+ 			pfile);
    aarch64_def_or_undef (AARCH64_HAVE_ISA (SME2p1),
  			"__ARM_FEATURE_SME2p1", pfile);
    aarch64_def_or_undef (TARGET_SME2p2, "__ARM_FEATURE_SME2p2", pfile);
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-simd.md gcc-17-20260823/gcc/config/aarch64/aarch64-simd.md
*** gcc-17-20260816/gcc/config/aarch64/aarch64-simd.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-simd.md	Sun Aug 23 22:32:07 2026
***************
*** 509,514 ****
--- 509,531 ----
    "TARGET_SIMD"
    "")
  
+ ;; RBIT reverses the bits within each byte, so a wider element needs its bytes
+ ;; put in the opposite order as well.  The 64-bit elements are left out because
+ ;; nothing reaches them: they have no CLZ to pair with in ctz<mode>2, and the
+ ;; vectorizer does not yet handle IFN_BITREVERSE.
+ (define_expand "bitreverse<mode>2"
+   [(set (match_operand:VDQHS 0 "register_operand")
+ 	(bitreverse:VDQHS (match_operand:VDQHS 1 "register_operand")))]
+   "TARGET_SIMD"
+   {
+     emit_insn (gen_bswap<mode>2 (operands[0], operands[1]));
+     machine_mode qimode = <bitsize> == 64 ? V8QImode : V16QImode;
+     rtx bytes = force_subreg (qimode, operands[0], <MODE>mode, 0);
+     emit_insn (gen_aarch64_rbit (qimode, bytes, bytes));
+     DONE;
+   }
+ )
+ 
  (define_insn "@aarch64_rbit<mode><vczle><vczbe>"
    [(set (match_operand:VB 0 "register_operand" "=w")
  	(bitreverse:VB (match_operand:VB 1 "register_operand" "w")))]
***************
*** 517,531 ****
    [(set_attr "type" "neon_rbit")]
  )
  
  (define_expand "ctz<mode>2"
!   [(set (match_operand:VS 0 "register_operand")
!         (ctz:VS (match_operand:VS 1 "register_operand")))]
    "TARGET_SIMD"
    {
!      emit_insn (gen_bswap<mode>2 (operands[0], operands[1]));
!      rtx op0_castsi2qi = force_subreg (<VS:VSI2QI>mode, operands[0],
! 				       <MODE>mode, 0);
!      emit_insn (gen_aarch64_rbit<VS:vsi2qi> (op0_castsi2qi, op0_castsi2qi));
       emit_insn (gen_clz<mode>2 (operands[0], operands[0]));
       DONE;
    }
--- 534,548 ----
    [(set_attr "type" "neon_rbit")]
  )
  
+ ;; Reversing the bits of an element turns its trailing zeros into leading ones,
+ ;; so counting them is a bit reversal followed by a CLZ.  The 64-bit elements
+ ;; have no CLZ and are left to the generic expansion.
  (define_expand "ctz<mode>2"
!   [(set (match_operand:VDQ_BHSI 0 "register_operand")
! 	(ctz:VDQ_BHSI (match_operand:VDQ_BHSI 1 "register_operand")))]
    "TARGET_SIMD"
    {
!      emit_insn (gen_bitreverse<mode>2 (operands[0], operands[1]));
       emit_insn (gen_clz<mode>2 (operands[0], operands[0]));
       DONE;
    }
***************
*** 6154,6159 ****
--- 6171,6184 ----
    [(set_attr "type" "neon_qadd<q>")]
  )
  
+ ;; The saturating narrowing conversion that the vectoriser asks for through
+ ;; IFN_SAT_TRUNC.  The RTL is what aarch64_<su>qmovn<mode> below matches.
+ (define_expand "<sat_trunc_op>trunc<mode><Vnarrowq>2"
+   [(set (match_operand:<VNARROWQ> 0 "register_operand")
+ 	(SAT_TRUNC:<VNARROWQ> (match_operand:VQN 1 "register_operand")))]
+   "TARGET_SIMD"
+ )
+ 
  ;; sqmovn and uqmovn
  
  (define_insn "aarch64_<su>qmovn<mode><vczle><vczbe>"
***************
*** 7977,7983 ****
  	(neg:DI
  	  (COMPARISONS:DI
  	    (match_operand:DI 1 "register_operand" "w,w,r")
! 	    (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz,r")
  	  )))
       (clobber (reg:CC CC_REGNUM))]
    "TARGET_SIMD"
--- 8002,8008 ----
  	(neg:DI
  	  (COMPARISONS:DI
  	    (match_operand:DI 1 "register_operand" "w,w,r")
! 	    (match_operand:DI 2 "aarch64_simd_reg_or_zero" "w,ZDz,rZ")
  	  )))
       (clobber (reg:CC CC_REGNUM))]
    "TARGET_SIMD"
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sme.md gcc-17-20260823/gcc/config/aarch64/aarch64-sme.md
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sme.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sme.md	Sun Aug 23 22:32:07 2026
***************
*** 1814,1819 ****
--- 1814,1868 ----
    "<optab>\tza%0.s, %1/m, %2/m, %3.s, %4.s"
  )
  
+ ;; _za32_s16_s16
+ ;; _za32_u16_u16
+ (define_insn "@aarch64_mop4_<optab><VNx4SI_ONLY:mode><SVE_FULL_HIx12:mode><SVE_FULL_HIx12_2:mode>"
+   [(set (reg:VNx4SI_ONLY ZA_REGNUM)
+ 	(unspec:VNx4SI_ONLY
+ 	  [(reg:VNx4SI_ONLY ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_HIx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_HIx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_INT_MOP4))]
+   "TARGET_SME_MOP4"
+   "<optab>\tza%0.<VNx4SI_ONLY:Vetype>, %1<SVE_FULL_HIx12:z_suffix>, %2<SVE_FULL_HIx12_2:z_suffix>"
+ )
+ 
+ ;; _za32_s8_s8
+ ;; _za32_u8_u8
+ ;; _za32_s8_u8
+ ;; _za32_u8_s8
+ (define_insn "@aarch64_mop4_<optab><VNx4SI_ONLY:mode><SVE_FULL_BIx12:mode><SVE_FULL_BIx12_2:mode>"
+   [(set (reg:VNx4SI_ONLY ZA_REGNUM)
+ 	(unspec:VNx4SI_ONLY
+ 	  [(reg:VNx4SI_ONLY ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_BIx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_BIx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_INT_MOP4))]
+   "TARGET_SME_MOP4"
+   "<optab>\tza%0.<VNx4SI_ONLY:Vetype>, %1<SVE_FULL_BIx12:z_suffix>, %2<SVE_FULL_BIx12_2:z_suffix>"
+ )
+ 
+ ;; _za64_s16_s16 (only if __ARM_FEATURE_SME_I16I64 != 0)
+ ;; _za64_u16_u16 (only if __ARM_FEATURE_SME_I16I64 != 0)
+ ;; _za64_s16_u16 (only if __ARM_FEATURE_SME_I16I64 != 0)
+ ;; _za64_u16_s16 (only if __ARM_FEATURE_SME_I16I64 != 0)
+ (define_insn "@aarch64_mop4_<optab><VNx2DI_ONLY:Vetype><SVE_FULL_HIx12:mode><SVE_FULL_HIx12_2:mode>"
+   [(set (reg:VNx2DI_ONLY ZA_REGNUM)
+ 	(unspec:VNx2DI_ONLY
+ 	  [(reg:VNx2DI_ONLY ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_HIx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_HIx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_INT_MOP4))]
+   "TARGET_SME_MOP4 && TARGET_SME_I16I64"
+   "<optab>\tza%0.<VNx2DI_ONLY:Vetype>, %1<SVE_FULL_HIx12:z_suffix>, %2<SVE_FULL_HIx12_2:z_suffix>"
+ )
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [FP] Dot product
  ;; -------------------------------------------------------------------------
***************
*** 2689,2694 ****
--- 2738,2753 ----
  ;; - FMOPS
  ;; - FMOPA (SME_F8F16)
  ;; - FMOPA (SME_F8F32)
+ ;; - BFMOP4A (SME_B16B16)
+ ;; - BFMOP4S (SME_B16B16)
+ ;; - UMOP4A (SME_MOP4)
+ ;; - UMOP4S (SME_MOP4)
+ ;; - SMOP4A (SME_MOP4)
+ ;; - SMOP4S (SME_MOP4)
+ ;; - SUMOP4A (SME_MOP4)
+ ;; - USMOP4S (SME_MOP4)
+ ;; - FMOP4A (SME_MOP4)
+ ;; - FMOP4S (SME_MOP4)
  ;; -------------------------------------------------------------------------
  
  (define_insn "@aarch64_sme_<optab><mode><mode>"
***************
*** 2737,2742 ****
--- 2796,2875 ----
    "<optab>\tza%0.<SME_ZA_F8F16_32:Vetype>, %1/m, %2/m, %3.b, %4.b"
  )
  
+ ;; _za16_f16_f16 (only if __ARM_FEATURE_SME_F16F16 != 0)
+ ;; _za32_f16_f16
+ (define_insn "@aarch64_mop4_<optab><SME_MOP4_F16:mode><SVE_FULL_HF_NO_BFx12:mode><SVE_FULL_HF_NO_BFx12_2:mode>"
+   [(set (reg:SME_MOP4_F16 ZA_REGNUM)
+ 	(unspec:SME_MOP4_F16
+ 	  [(reg:SME_MOP4_F16 ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_HF_NO_BFx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_HF_NO_BFx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_FP_MOP4))]
+   "TARGET_SME_MOP4"
+   "<optab>\tza%0.<SME_MOP4_F16:Vetype>, %1<SVE_FULL_HF_NO_BFx12:z_suffix>, %2<SVE_FULL_HF_NO_BFx12_2:z_suffix>"
+ )
+ 
+ ;; _za16_bf16_bf16 (only if __ARM_FEATURE_SME_B16B16 != 0)
+ ;; _za32_bf16_bf16
+ (define_insn "@aarch64_mop4_<optab><SME_MOP4_BF16:mode><SVE_FULL_BFx12:mode><SVE_FULL_BFx12_2:mode>"
+   [(set (reg:SME_MOP4_BF16 ZA_REGNUM)
+ 	(unspec:SME_MOP4_BF16
+ 	  [(reg:SME_MOP4_BF16 ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_BFx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_BFx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_FP_MOP4))]
+   "TARGET_SME_MOP4"
+   "b<optab>\tza%0.<SME_MOP4_BF16:Vetype>, %1<SVE_FULL_BFx12:z_suffix>, %2<SVE_FULL_BFx12_2:z_suffix>"
+ )
+ 
+ ;; _za32_f32_f32
+ (define_insn "@aarch64_mop4_<optab><VNx4SI_ONLY:mode><SVE_FULL_SFx12:mode><SVE_FULL_SFx12_2:mode>"
+   [(set (reg:VNx4SI_ONLY ZA_REGNUM)
+ 	(unspec:VNx4SI_ONLY
+ 	  [(reg:VNx4SI_ONLY ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_SFx12   1 "aligned_register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_SFx12_2 2 "aligned_register_operand" "Uz2")]
+ 	  SME_FP_MOP4))]
+   "TARGET_SME_MOP4"
+   "<optab>\tza%0.<VNx4SI_ONLY:Vetype>, %1<SVE_FULL_SFx12:z_suffix>, %2<SVE_FULL_SFx12_2:z_suffix>"
+ )
+ 
+ ;; _za64_f64_f64   (only if __ARM_FEATURE_SME_F64F64 != 0)
+ (define_insn "@aarch64_mop4_<optab><VNx2DI_ONLY:mode><SVE_FULL_DFx12:mode><SVE_FULL_DFx12_2:mode>"
+   [(set (reg:VNx2DI_ONLY ZA_REGNUM)
+ 	(unspec:VNx2DI_ONLY
+ 	  [(reg:VNx2DI_ONLY ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_DFx12   1 "register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_DFx12_2 2 "register_operand" "Uz2")]
+ 	  SME_FP_MOP4))]
+   "TARGET_SME_MOP4 && TARGET_SME_F64F64"
+   "<optab>\tza%0.<VNx2DI_ONLY:Vetype>, %1<SVE_FULL_DFx12:z_suffix>, %2<SVE_FULL_DFx12_2:z_suffix>"
+ )
+ 
+ ;; _za16_mf8_mf8_fpm (only if __ARM_FEATURE_SME_F8F16 != 0)
+ ;; _za32_mf8_mf8_fpm (only if __ARM_FEATURE_SME_F8F32 != 0)
+ (define_insn "@aarch64_mop4_<optab><SME_ZA_MF8:mode><SVE_FULL_BIx12:mode><SVE_FULL_BIx12_2:mode>"
+   [(set (reg:SME_ZA_MF8 ZA_REGNUM)
+ 	(unspec:SME_ZA_MF8
+ 	  [(reg:SME_ZA_MF8 ZA_REGNUM)
+ 	   (reg:DI SME_STATE_REGNUM)
+ 	   (match_operand:DI 0 "const_int_operand")
+ 	   (match_operand:SVE_FULL_BIx12   1 "register_operand" "Ux2")
+ 	   (match_operand:SVE_FULL_BIx12_2 2 "register_operand" "Uz2")
+ 	   (reg:DI FPM_REGNUM)]
+ 	  SME_FP8_MOP4))]
+   "TARGET_SME_MOP4"
+   "<optab>\tza%0.<SME_ZA_MF8:Vetype>, %1<SVE_FULL_BIx12:z_suffix>, %2<SVE_FULL_BIx12_2:z_suffix>"
+ )
+ 
  ;; =========================================================================
  ;; == Table lookup
  ;; =========================================================================
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Sun Aug 23 22:32:07 2026
*************** class svbrk_unary_impl : public function
*** 346,351 ****
--- 346,371 ----
  public:
    constexpr svbrk_unary_impl (unspec unspec) : m_unspec (unspec) {}
  
+   gimple *
+   fold (gimple_folder &f) const override
+   {
+     tree pg = f.gp_value (f.call);
+     if ((f.pred == PRED_z || f.pred == PRED_m)
+ 	&& is_ptrue (pg, f.type_suffix (0).element_bytes))
+       {
+ 	tree pn = gimple_call_arg (f.call, f.gp_index + 1);
+ 	if (is_pfalse (pn))
+ 	  return f.fold_to_ptrue ();
+ 	if (is_ptrue (pn, f.type_suffix (0).element_bytes))
+ 	  {
+ 	    if (m_unspec == UNSPEC_BRKA)
+ 	      return f.fold_to_vl_pred (1);
+ 	    return f.fold_to_pfalse ();
+ 	  }
+       }
+     return nullptr;
+   }
+ 
    rtx
    expand (function_expander &e) const override
    {
*************** public:
*** 2565,2570 ****
--- 2585,2601 ----
    expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
+     if (m_unspec == UNSPEC_PFIRST
+ 	&& rtx_equal_p (e.args[0], CONSTM1_RTX (mode))
+ 	&& rtx_equal_p (e.args[1], CONST0_RTX (mode)))
+       {
+ 	rtx pattern = gen_int_mode (AARCH64_SV_VL1, SImode);
+ 	rtvec vec = gen_rtvec (2, pattern, CONST0_RTX (mode));
+ 	rtx ptrue = gen_rtx_CONST (VNx16BImode,
+ 				   gen_rtx_UNSPEC (VNx16BImode, vec,
+ 						   UNSPEC_PTRUE));
+ 	return force_reg (VNx16BImode, ptrue);
+       }
      e.add_ptrue_hint (0, mode);
      return e.use_exact_insn (code_for_aarch64_sve (m_unspec, mode));
    }
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Sun Aug 23 22:32:07 2026
*************** public:
*** 508,513 ****
--- 508,565 ----
    }
  };
  
+ class sme_mop4 : public read_write_za<unspec_based_function_base>
+ {
+ private:
+   unspec m_unspec_for_suint;
+   unspec m_unspec_for_usint;
+ 
+ public:
+   using parent = read_write_za<unspec_based_function_base>;
+ 
+   constexpr sme_mop4 (unspec unspec_for_sint, unspec unspec_for_uint,
+ 		      unspec unspec_for_fp, unspec unspec_for_suint,
+ 		      unspec unspec_for_usint)
+     : parent (unspec_for_sint, unspec_for_uint,
+ 	      unspec_for_fp, unspec_for_fp, 1),
+       m_unspec_for_suint (unspec_for_suint),
+       m_unspec_for_usint (unspec_for_usint)
+   {}
+ 
+   rtx expand (function_expander &e) const override
+   {
+     machine_mode za_mode = e.vector_mode (0);
+     machine_mode v1_mode = e.tuple_mode (1);
+     machine_mode v2_mode = e.tuple_mode (1);
+ 
+     switch (e.mode_suffix_id)
+       {
+       case MODE_1x1:
+ 	break;
+       case MODE_1x2:
+ 	v2_mode = targetm.array_mode (v2_mode, 2).require ();
+ 	break;
+       case MODE_2x1:
+ 	v1_mode = targetm.array_mode (v1_mode, 2).require ();
+ 	break;
+       case MODE_2x2:
+ 	v1_mode = targetm.array_mode (v1_mode, 2).require ();
+ 	v2_mode = targetm.array_mode (v2_mode, 2).require ();
+ 	break;
+       default:
+ 	gcc_unreachable ();
+       }
+ 
+     unspec unspec = (e.type_suffix (1).unsigned_p == e.type_suffix (2).unsigned_p)
+ 		   ? unspec_for (e)
+ 		   : (e.type_suffix (1).unsigned_p ? m_unspec_for_usint
+ 						   : m_unspec_for_suint);
+ 
+     insn_code icode = code_for_aarch64_mop4 (unspec, za_mode, v1_mode, v2_mode);
+     return e.use_exact_insn (icode);
+   }
+ };
+ 
  using sme_2mode_function
    = sme_2mode_function_t<code_for_aarch64_sme, code_for_aarch64_sme_single>;
  
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Sun Aug 23 22:32:07 2026
*************** SHAPE (luti4_lane_zt);
*** 3464,3469 ****
--- 3464,3514 ----
  using luti4_zt_def = luti_zt_base<4>;
  SHAPE (luti4_zt);
  
+ struct mop4_def : public overloaded_base<1>
+ {
+   void build (function_builder &b,
+ 	      const function_group_info &group) const override
+   {
+     b.add_overloaded_functions (group, MODE_none);
+     build_all (b, "_,su64,v1,v2", group, MODE_1x1);
+     build_all (b, "_,su64,v1,u2", group, MODE_1x2);
+     build_all (b, "_,su64,u1,v2", group, MODE_2x1);
+     build_all (b, "_,su64,u1,u2", group, MODE_2x2);
+   }
+ 
+   tree resolve (function_resolver &r) const override
+   {
+     mode_suffix_index mode = MODE_1x1;
+     sve_type type1;
+     sve_type type2;
+ 
+     if (!r.check_num_arguments (3 + (r.fpm_mode == FPM_set))
+ 	|| !r.require_scalar_type (0, "uint64_t")
+ 	|| !r.require_integer_immediate (0)
+ 	|| !(type1 = r.infer_sve_type (1))
+ 	|| !(type2 = r.infer_sve_type (2)))
+       return error_mark_node;
+ 
+     if (type1.num_vectors == 1 && type2.num_vectors == 1)
+       mode = MODE_1x1;
+     else if (type1.num_vectors == 1 && type2.num_vectors == 2)
+       mode = MODE_1x2;
+     else if (type1.num_vectors == 2 && type2.num_vectors == 1)
+       mode = MODE_2x1;
+     else if (type1.num_vectors == 2 && type2.num_vectors == 2)
+       mode = MODE_2x2;
+ 
+     return r.resolve_to (mode, r.type_suffix_ids[0], type1.type, type2.type,
+ 			 GROUP_none);
+   }
+ 
+   bool check (function_checker &c) const override
+   {
+     return c.require_immediate_range (0, 0, c.num_za_tiles () - 1);
+   }
+ };
+ SHAPE (mop4);
+ 
  /* svbool_t svfoo(enum svpattern).  */
  struct pattern_pred_def : public nonoverloaded_base
  {
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-shapes.h gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-shapes.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Sun Aug 23 22:32:07 2026
*************** namespace aarch64_acle
*** 173,178 ****
--- 173,179 ----
      extern const function_shape *const luti4_lane_zt;
      extern const function_shape *const luti4_zt;
      extern const function_shape *const mmla;
+     extern const function_shape *const mop4;
      extern const function_shape *const pattern_pred;
      extern const function_shape *const pmov_from_vector;
      extern const function_shape *const pmov_from_vector_lane;
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.cc gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.cc	Sun Aug 23 22:32:07 2026
*************** FUNCTION (svmls_za, sme_2mode_function,
*** 652,657 ****
--- 652,663 ----
  FUNCTION (svmls_lane_za, sme_2mode_lane_function, (UNSPEC_SME_SMLS,
  						   UNSPEC_SME_UMLS,
  						   UNSPEC_SME_FMLS))
+ FUNCTION (svmop4a_za, sme_mop4,
+ 	  (UNSPEC_SME_SMOP4A, UNSPEC_SME_UMOP4A, UNSPEC_SME_FMOP4A,
+ 	   UNSPEC_SME_SUMOP4A, UNSPEC_SME_USMOP4A))
+ FUNCTION (svmop4s_za, sme_mop4,
+ 	  (UNSPEC_SME_SMOP4S, UNSPEC_SME_UMOP4S, UNSPEC_SME_FMOP4S,
+ 	   UNSPEC_SME_SUMOP4S, UNSPEC_SME_USMOP4S))
  FUNCTION (svmopa_za, sme_2mode_function, (UNSPEC_SME_SMOPA, UNSPEC_SME_UMOPA,
  					  UNSPEC_SME_FMOPA, UNSPEC_SME_FMOPA))
  FUNCTION (svmops_za, sme_2mode_function, (UNSPEC_SME_SMOPS, UNSPEC_SME_UMOPS,
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.def gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.def
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.def	Sun Aug 23 22:32:07 2026
*************** DEF_SME_ZA_FUNCTION_GS_FPM (svmla, binar
*** 313,318 ****
--- 313,385 ----
  DEF_SME_ZA_FUNCTION_GS_FPM (svmopa, binary_za_m, za_s_mf8, none, za_m, set)
  #undef REQUIRED_EXTENSIONS
  
+ // All svmop4a functions also have `_1x2`, `2x1` and `2x2` variants, and all
+ // functions except `mf8_mf8` have `svmop4s` variants.
+ 
+ // svmop4a[_1x1]_za32[_f32_f32]
+ // svmop4a[_1x1]_za32[_f16_f16]
+ // svmop4a[_1x1]_za32[_bf16_bf16]
+ // svmop4a[_1x1]_za32[_s16_s16]
+ // svmop4a[_1x1]_za32[_u16_u16]
+ // svmop4a[_1x1]_za32[_s8_s8]
+ // svmop4a[_1x1]_za32[_u8_u8]
+ // svmop4a[_1x1]_za32[_s8_u8]
+ // svmop4a[_1x1]_za32[_u8_s8]
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4)
+ DEF_SME_ZA_FUNCTION_GS (svmop4a, mop4, mop4_base, none, none)
+ DEF_SME_ZA_FUNCTION_GS (svmop4s, mop4, mop4_base, none, none)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za16[_f16_f16] (only if __ARM_FEATURE_SME_F16F16 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_F16F16)
+ DEF_SME_ZA_FUNCTION_GS (svmop4a, mop4, mop4_f16f16, none, none)
+ DEF_SME_ZA_FUNCTION_GS (svmop4s, mop4, mop4_f16f16, none, none)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za16[_bf16_bf16] (only if __ARM_FEATURE_SME_B16B16 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_B16B16)
+ DEF_SME_ZA_FUNCTION_GS (svmop4a, mop4, mop4_b16b16, none, none)
+ DEF_SME_ZA_FUNCTION_GS (svmop4s, mop4, mop4_b16b16, none, none)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za64[_f64_f64] (only if __ARM_FEATURE_SME_F64F64 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_F64F64)
+ DEF_SME_ZA_FUNCTION_GS (svmop4a, mop4, mop4_f64f64, none, none)
+ DEF_SME_ZA_FUNCTION_GS (svmop4s, mop4, mop4_f64f64, none, none)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za64[_s16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_s16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_I16I64)
+ DEF_SME_ZA_FUNCTION_GS (svmop4a, mop4, mop4_i16i64, none, none)
+ DEF_SME_ZA_FUNCTION_GS (svmop4s, mop4, mop4_i16i64, none, none)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za16[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F16 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_F8F16)
+ DEF_SME_ZA_FUNCTION_GS_FPM (svmop4a, mop4, mop4_f8f16, none, none, set)
+ #undef REQUIRED_EXTENSIONS
+ 
+ // svmop4a[_1x1]_za32[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F32 != 0)
+ #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2 \
+ 					  | AARCH64_FL_SME_MOP4 \
+ 					  | AARCH64_FL_SME_F8F32)
+ DEF_SME_ZA_FUNCTION_GS_FPM (svmop4a, mop4, mop4_f8f32, none, none, set)
+ #undef REQUIRED_EXTENSIONS
+ 
  #undef DEF_SME_ZA_FUNCTION
  #undef DEF_SME_ZA_FUNCTION_GS
  #undef DEF_SME_ZA_FUNCTION_GS_FPM
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.h gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sme.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sme.h	Sun Aug 23 22:32:07 2026
*************** namespace aarch64_acle
*** 51,56 ****
--- 51,58 ----
      extern const function_base *const svmla_lane_za;
      extern const function_base *const svmls_za;
      extern const function_base *const svmls_lane_za;
+     extern const function_base *const svmop4a_za;
+     extern const function_base *const svmop4s_za;
      extern const function_base *const svmopa_za;
      extern const function_base *const svmops_za;
      extern const function_base *const svread_za;
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Sun Aug 23 22:32:07 2026
*************** public:
*** 1052,1057 ****
--- 1052,1059 ----
  namespace aarch64_acle {
  
  FUNCTION (svaba, svaba_impl,)
+ FUNCTION (svabal, unspec_based_add_function, (UNSPEC_SABAL,
+ 					      UNSPEC_UABAL, UNSPEC_NONE))
  FUNCTION (svabalb, unspec_based_add_function, (UNSPEC_SABDLB, UNSPEC_UABDLB))
  FUNCTION (svabalt, unspec_based_add_function, (UNSPEC_SABDLT, UNSPEC_UABDLT))
  FUNCTION (svabdlb, unspec_based_function, (UNSPEC_SABDLB, UNSPEC_UABDLB))
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Sun Aug 23 22:32:07 2026
*************** DEF_SVE_FUNCTION_GS (svqshrn, shift_righ
*** 340,345 ****
--- 340,346 ----
  		     qshr_x2, x2, none)
  DEF_SVE_FUNCTION_GS (svqshrun, shift_right_imm_narrowxn,
  		     qshru_x2, x2, none)
+ DEF_SVE_FUNCTION (svabal, ternary_long_opt_n, hsd_integer, none)
  #undef REQUIRED_EXTENSIONS
  
  #define REQUIRED_EXTENSIONS streaming_only (AARCH64_FL_SME2)
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.h gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Sun Aug 23 22:32:07 2026
*************** namespace aarch64_acle
*** 25,30 ****
--- 25,31 ----
    namespace functions
    {
      extern const function_base *const svaba;
+     extern const function_base *const svabal;
      extern const function_base *const svabalb;
      extern const function_base *const svabalt;
      extern const function_base *const svabdlb;
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins.def gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins.def
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sve-builtins.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sve-builtins.def	Sun Aug 23 22:32:07 2026
*************** DEF_SVE_MODE (u64base_u64offset, svuint6
*** 119,124 ****
--- 119,128 ----
  DEF_SVE_MODE (u64index, none, svuint64_t, elements)
  DEF_SVE_MODE (u64offset, none, svuint64_t, bytes)
  DEF_SVE_MODE (vnum, none, none, vectors)
+ DEF_SVE_MODE (1x1, none, none, none)
+ DEF_SVE_MODE (1x2, none, none, none)
+ DEF_SVE_MODE (2x1, none, none, none)
+ DEF_SVE_MODE (2x2, none, none, none)
  
  DEF_SVE_TYPE (svbool_t, 10, __SVBool_t, boolean_type_node)
  DEF_SVE_TYPE (svcount_t, 11, __SVCount_t, boolean_type_node)
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64-sys-regs.def gcc-17-20260823/gcc/config/aarch64/aarch64-sys-regs.def
*** gcc-17-20260816/gcc/config/aarch64/aarch64-sys-regs.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64-sys-regs.def	Sun Aug 23 22:32:07 2026
***************
*** 1357,1362 ****
--- 1357,1370 ----
    SYSREG ("tindex_el2",		CPENC (3,4,4,0,3),	0,		AARCH64_FEATURE (POE2))
    SYSREG ("tindex_el3",		CPENC (3,6,4,0,3),	0,		AARCH64_FEATURE (POE2))
    SYSREG ("tlbididr_el1",	CPENC (3,0,10,4,6),	F_REG_READ,	AARCH64_FEATURE (TLBID))
+   SYSREG ("tpcr0_el0",		CPENC (3,3,2,2,4),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr0_el1",		CPENC (3,0,2,2,4),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr0_el12",		CPENC (3,5,2,2,4),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr0_el2",		CPENC (3,4,2,2,4),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr1_el0",		CPENC (3,3,2,2,5),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr1_el1",		CPENC (3,0,2,2,5),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr1_el12",		CPENC (3,5,2,2,5),	0,		AARCH64_NO_FEATURES)
+   SYSREG ("tpcr1_el2",		CPENC (3,4,2,2,5),	0,		AARCH64_NO_FEATURES)
    SYSREG ("tpidr2_el0",		CPENC (3,3,13,0,5),	0,		AARCH64_FEATURE (SME))
    SYSREG ("tpidr3_el0",		CPENC (3,3,13,0,0),     0,		AARCH64_FEATURE (POE2))
    SYSREG ("tpidr3_el1",		CPENC (3,0,13,0,0),	0,		AARCH64_FEATURE (POE2))
***************
*** 1368,1389 ****
    SYSREG ("tpidr_el2",		CPENC (3,4,13,0,2),	0,		AARCH64_NO_FEATURES)
    SYSREG ("tpidr_el3",		CPENC (3,6,13,0,2),	0,		AARCH64_NO_FEATURES)
    SYSREG ("tpidrro_el0",	CPENC (3,3,13,0,3),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax0_el0",		CPENC (3,3,2,2,5),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax0_el1",		CPENC (3,0,2,2,5),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax0_el12",	CPENC (3,5,2,2,5),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax0_el2",		CPENC (3,4,2,2,5),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax1_el0",		CPENC (3,3,2,2,7),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax1_el1",		CPENC (3,0,2,2,7),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax1_el12",	CPENC (3,5,2,2,7),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmax1_el2",		CPENC (3,4,2,2,7),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin0_el0",		CPENC (3,3,2,2,4),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin0_el1",		CPENC (3,0,2,2,4),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin0_el12",	CPENC (3,5,2,2,4),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin0_el2",		CPENC (3,4,2,2,4),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin1_el0",		CPENC (3,3,2,2,6),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin1_el1",		CPENC (3,0,2,2,6),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin1_el12",	CPENC (3,5,2,2,6),	0,		AARCH64_NO_FEATURES)
-   SYSREG ("tpmin1_el2",		CPENC (3,4,2,2,6),	0,		AARCH64_NO_FEATURES)
    SYSREG ("trbbaser_el1",	CPENC (3,0,9,11,2),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
    SYSREG ("trbidr_el1",		CPENC (3,0,9,11,7),	F_REG_READ,	AARCH64_FEATURE (V9A)) /* TRBE */
    SYSREG ("trblimitr_el1",	CPENC (3,0,9,11,0),	0,		AARCH64_FEATURE (V9A)) /* TRBE */
--- 1376,1381 ----
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64.cc gcc-17-20260823/gcc/config/aarch64/aarch64.cc
*** gcc-17-20260816/gcc/config/aarch64/aarch64.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64.cc	Sun Aug 23 22:32:07 2026
*************** aarch64_hard_regno_nregs (unsigned regno
*** 2456,2461 ****
--- 2456,2462 ----
      case FP_REGS:
      case FP_LO_REGS:
      case FP_LO8_REGS:
+     case FP_HI_REGS:
        {
  	unsigned int vec_flags = aarch64_classify_vector_mode (mode);
  	if (vec_flags & VEC_SVE_DATA)
*************** aarch64_class_max_nregs (reg_class_t reg
*** 14293,14298 ****
--- 14294,14300 ----
      case FP_REGS:
      case FP_LO_REGS:
      case FP_LO8_REGS:
+     case FP_HI_REGS:
        vec_flags = aarch64_classify_vector_mode (mode);
        if ((vec_flags & VEC_SVE_DATA)
  	  && constant_multiple_p (GET_MODE_SIZE (mode),
*************** aarch64_evpc_ext (struct expand_vec_perm
*** 28261,28266 ****
--- 28263,28308 ----
    return true;
  }
  
+ /* Return true if D describes a scalable-vector permutation that takes the
+    last DIST elements from the first input and the remaining elements from
+    the second input.  */
+ 
+ static bool
+ aarch64_evpc_splice (struct expand_vec_perm_d *d)
+ {
+   poly_int64 nelt = d->perm.length ();
+   HOST_WIDE_INT dist;
+ 
+   if (d->vec_flags != VEC_SVE_DATA
+       || d->one_vector_p
+       || nelt.is_constant ()
+       || !(nelt - d->perm[0]).is_constant (&dist)
+       || !IN_RANGE (dist, 1, INT_MAX)
+       || !d->perm.series_p (0, 1, nelt - dist, 1))
+     return false;
+ 
+   machine_mode pred_mode = aarch64_sve_pred_mode (d->vmode);
+   if (aarch64_svpattern_for_vl (pred_mode, dist)
+       == AARCH64_NUM_SVPATTERNS)
+     return false;
+ 
+   if (d->testing_p)
+     return true;
+ 
+   rtx_vector_builder builder (pred_mode, dist, 2);
+   for (HOST_WIDE_INT i = 0; i < dist; ++i)
+     builder.quick_push (CONST1_RTX (BImode));
+   for (HOST_WIDE_INT i = 0; i < dist; ++i)
+     builder.quick_push (CONST0_RTX (BImode));
+ 
+   rtx head = force_reg (pred_mode, builder.build ());
+   rtx pred = gen_reg_rtx (pred_mode);
+   emit_insn (gen_aarch64_sve_rev (pred_mode, pred, head));
+   emit_insn (gen_aarch64_sve_splice (d->vmode, d->target, pred,
+ 				     d->op0, d->op1));
+   return true;
+ }
+ 
  /* Recognize patterns for the REV{64,32,16} insns, which reverse elements
     within each 64-bit, 32-bit or 16-bit granule.  */
  
*************** aarch64_expand_vec_perm_const_1 (struct
*** 28772,28777 ****
--- 28814,28820 ----
      {
        d->perm.rotate_inputs (1);
        std::swap (d->op0, d->op1);
+       std::swap (d->zero_op0_p, d->zero_op1_p);
      }
  
    if (((d->vec_flags == VEC_ADVSIMD && TARGET_SIMD)
*************** aarch64_expand_vec_perm_const_1 (struct
*** 28786,28791 ****
--- 28829,28836 ----
  	    return true;
  	  else if (aarch64_evpc_rev_global (d))
  	    return true;
+ 	  else if (aarch64_evpc_splice (d))
+ 	    return true;
  	  else if (aarch64_evpc_ext (d))
  	    return true;
  	  else if (aarch64_evpc_dup (d))
*************** aarch64_estimated_poly_value (poly_int64
*** 31283,31288 ****
--- 31328,31341 ----
    return val.coeffs[0] + val.coeffs[1] * over_128 / 128;
  }
  
+ /* Implement TARGET_POLY_INT_INDETERMINATE_BOUND.  */
+ 
+ static poly_uint64
+ aarch64_poly_int_indeterminate_bound ()
+ {
+   return poly_uint64 (0, 15);
+ }
+ 
  
  /* Return true for types that could be supported as SIMD return or
     argument types.  */
*************** aarch64_libgcc_floating_mode_supported_p
*** 34605,34610 ****
--- 34658,34666 ----
  #undef TARGET_ESTIMATED_POLY_VALUE
  #define TARGET_ESTIMATED_POLY_VALUE aarch64_estimated_poly_value
  
+ #undef TARGET_POLY_INT_INDETERMINATE_BOUND
+ #define TARGET_POLY_INT_INDETERMINATE_BOUND aarch64_poly_int_indeterminate_bound
+ 
  #undef TARGET_ATTRIBUTE_TABLE
  #define TARGET_ATTRIBUTE_TABLE aarch64_attribute_table
  
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/aarch64.h gcc-17-20260823/gcc/config/aarch64/aarch64.h
*** gcc-17-20260816/gcc/config/aarch64/aarch64.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/aarch64.h	Sun Aug 23 22:32:07 2026
*************** constexpr auto AARCH64_FL_DEFAULT_ISA_MO
*** 511,516 ****
--- 511,518 ----
     elements are enabled through +sme-lutv2.  */
  #define TARGET_SME_LUTv2 AARCH64_HAVE_ISA (SME_LUTv2)
  
+ #define TARGET_SME_MOP4 (AARCH64_HAVE_ISA (SME_MOP4) && TARGET_STREAMING)
+ 
  /* Prefer different predicate registers for the output of a predicated
     operation over re-using an existing input predicate.  */
  #define TARGET_SVE_PRED_CLOBBER (TARGET_SVE \
*************** enum reg_class
*** 929,934 ****
--- 931,937 ----
    POINTER_REGS,
    FP_LO8_REGS,
    FP_LO_REGS,
+   FP_HI_REGS,
    FP_REGS,
    POINTER_AND_FP_REGS,
    PR_LO_REGS,
*************** enum reg_class
*** 956,961 ****
--- 959,965 ----
    "POINTER_REGS",				\
    "FP_LO8_REGS",				\
    "FP_LO_REGS",					\
+   "FP_HI_REGS",					\
    "FP_REGS",					\
    "POINTER_AND_FP_REGS",			\
    "PR_LO_REGS",					\
*************** enum reg_class
*** 980,985 ****
--- 984,990 ----
    { 0xffffffff, 0x00000000, 0x00000003 },	/* POINTER_REGS */	\
    { 0x00000000, 0x000000ff, 0x00000000 },       /* FP_LO8_REGS  */	\
    { 0x00000000, 0x0000ffff, 0x00000000 },       /* FP_LO_REGS  */	\
+   { 0x00000000, 0xffff0000, 0x00000000 },       /* FP_HI_REGS */	\
    { 0x00000000, 0xffffffff, 0x00000000 },       /* FP_REGS  */		\
    { 0xffffffff, 0xffffffff, 0x00000003 },	/* POINTER_AND_FP_REGS */\
    { 0x00000000, 0x00000000, 0x00000ff0 },	/* PR_LO_REGS */	\
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/constraints.md gcc-17-20260823/gcc/config/aarch64/constraints.md
*** gcc-17-20260816/gcc/config/aarch64/constraints.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/constraints.md	Sun Aug 23 22:32:07 2026
***************
*** 40,59 ****
     veneer.")
  
  (define_register_constraint "w" "FP_REGS"
!   "Floating point and SIMD vector registers.")
  
  (define_register_constraint "x" "FP_LO_REGS"
!   "Floating point and SIMD vector registers V0 - V15.")
  
  (define_register_constraint "y" "FP_LO8_REGS"
!   "Floating point and SIMD vector registers V0 - V7.")
  
  (define_register_constraint "Uw2" "FP_REGS"
!   "Even floating point and SIMD vector registers."
    "regno % 2 == 0")
  
  (define_register_constraint "Uw4" "FP_REGS"
!   "4-tuple-aligned floating point and SIMD vector registers."
    "regno % 4 == 0")
  
  (define_register_constraint "Uwd" "FP_REGS"
--- 40,70 ----
     veneer.")
  
  (define_register_constraint "w" "FP_REGS"
!   "SVE/AdvSIMD/FP registers, V0 - V31.")
  
  (define_register_constraint "x" "FP_LO_REGS"
!   "SVE/AdvSIMD/FP registers, V0 - V15.")
  
  (define_register_constraint "y" "FP_LO8_REGS"
!   "SVE/AdvSIMD/FP  registers, V0 - V7.")
! 
! (define_register_constraint "z" "FP_HI_REGS"
!   "SVE/AdvSIMD/FP registers, V16 - V31.")
! 
! (define_register_constraint "Ux2" "FP_LO_REGS"
!   "Even SVE/AdvSIMD/FP registers, V0, V2, ..., V14."
!   "regno % 2 == 0")
! 
! (define_register_constraint "Uz2" "FP_HI_REGS"
!   "Even SVE/AdvSIMD/FP registers, V16, V18, ..., V30."
!   "regno % 2 == 0")
  
  (define_register_constraint "Uw2" "FP_REGS"
!   "Even SVE/AdvSIMD/FP registers, V0, V2, ..., V30."
    "regno % 2 == 0")
  
  (define_register_constraint "Uw4" "FP_REGS"
!   "4-tuple-aligned SVE/AdvSIMD/FP registers, V0, V4, ..., V28."
    "regno % 4 == 0")
  
  (define_register_constraint "Uwd" "FP_REGS"
diff -Nrcpad gcc-17-20260816/gcc/config/aarch64/iterators.md gcc-17-20260823/gcc/config/aarch64/iterators.md
*** gcc-17-20260816/gcc/config/aarch64/iterators.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/aarch64/iterators.md	Sun Aug 23 22:32:07 2026
***************
*** 560,565 ****
--- 560,573 ----
  				   (VNx4SF "TARGET_SVE2p1_OR_SME2")
  				   (VNx2DF "TARGET_SVE2p1_OR_SME2")])
  
+ ;; {u8, s8, mf8}{x1,x2}
+ (define_mode_iterator SVE_FULL_BIx12   [VNx16QI VNx32QI])
+ (define_mode_iterator SVE_FULL_BIx12_2 [SVE_FULL_BIx12])
+ 
+ ;; {u16, s16}{x1,x2}
+ (define_mode_iterator SVE_FULL_HIx12   [VNx8HI VNx16HI])
+ (define_mode_iterator SVE_FULL_HIx12_2 [SVE_FULL_HIx12])
+ 
  ;; Fully-packed SVE integer vector modes that have 8-bit or 16-bit elements.
  (define_mode_iterator SVE_FULL_BHI [VNx16QI VNx8HI])
  
***************
*** 576,581 ****
--- 584,593 ----
  ;; Pairs of the above.
  (define_mode_iterator SVE_FULL_HFx2 [VNx16BF VNx16HF])
  
+ ;; {f16}{x1,x2}
+ (define_mode_iterator SVE_FULL_HF_NO_BFx12   [VNx8HF VNx16HF])
+ (define_mode_iterator SVE_FULL_HF_NO_BFx12_2 [SVE_FULL_HF_NO_BFx12])
+ 
  ;; Fully-packed SVE vector modes that have 16-bit, 32-bit or 64-bit elements.
  (define_mode_iterator SVE_FULL_HSD [VNx8HI VNx4SI VNx2DI
  				    VNx8BF VNx8HF VNx4SF VNx2DF])
***************
*** 596,601 ****
--- 608,625 ----
  ;; elements.
  (define_mode_iterator SVE_FULL_HSF [VNx8HF VNx4SF])
  
+ ;; {bf16}{x1,x2}
+ (define_mode_iterator SVE_FULL_BFx12   [VNx8BF VNx16BF])
+ (define_mode_iterator SVE_FULL_BFx12_2 [SVE_FULL_BFx12])
+ 
+ ;; {f32}{x1,x2}
+ (define_mode_iterator SVE_FULL_SFx12   [VNx4SF VNx8SF])
+ (define_mode_iterator SVE_FULL_SFx12_2 [SVE_FULL_SFx12])
+ 
+ ;; {f64, f64x2}
+ (define_mode_iterator SVE_FULL_DFx12 [VNx2DF VNx4DF])
+ (define_mode_iterator SVE_FULL_DFx12_2 [SVE_FULL_DFx12])
+ 
  ;; Like SVE_FULL_HSF, but selectively enables those modes that are valid
  ;; for the variant of the SVE2 FP8 FDOT instruction associated with that
  ;; mode.
***************
*** 812,817 ****
--- 836,844 ----
  (define_mode_iterator SME_ZA_I [VNx16QI VNx8HI VNx4SI VNx2DI VNx1TI])
  (define_mode_iterator SME_ZA_SDI [VNx4SI (VNx2DI "TARGET_SME_I16I64")])
  
+ (define_mode_iterator SME_ZA_MF8 [(VNx8HI "TARGET_STREAMING_SME_F8F16")
+ 				  (VNx4SI "TARGET_STREAMING_SME_F8F32")])
+ 
  (define_mode_iterator SME_ZA_BIx24 [VNx32QI VNx64QI])
  
  (define_mode_iterator SME_ZA_BHIx124 [VNx16QI VNx32QI VNx64QI
***************
*** 858,863 ****
--- 885,899 ----
  				    (VNx2DF "TARGET_SME_F64F64")
  				    (VNx8HF "TARGET_STREAMING_SME_F16F16")
  				    (VNx8BF "TARGET_STREAMING_SME_B16B16")])
+ (define_mode_iterator SME_MOP4_F16 [
+ 	(VNx8HI "TARGET_STREAMING_SME_F16F16")
+ 	VNx4SI
+ ])
+ 
+ (define_mode_iterator SME_MOP4_BF16 [
+ 	(VNx8HI "TARGET_STREAMING_SME_B16B16")
+ 	VNx4SI
+ ])
  
  ;; ------------------------------------------------------------------
  ;; Unspec enumerations for Advance SIMD. These could well go into
***************
*** 1192,1197 ****
--- 1228,1234 ----
      UNSPEC_RSHRNT	; Used in aarch64-sve2.md.
      UNSPEC_RSUBHNB	; Used in aarch64-sve2.md.
      UNSPEC_RSUBHNT	; Used in aarch64-sve2.md.
+     UNSPEC_SABAL	; Used in aarch64-sve2.md.
      UNSPEC_SABDLB	; Used in aarch64-sve2.md.
      UNSPEC_SABDLT	; Used in aarch64-sve2.md.
      UNSPEC_SADDLB	; Used in aarch64-sve2.md.
***************
*** 1252,1257 ****
--- 1289,1295 ----
      UNSPEC_SUBHNT	; Used in aarch64-sve2.md.
      UNSPEC_TBL2		; Used in aarch64-sve2.md.
      UNSPEC_TRN		; Used in aarch64-builtins.cc
+     UNSPEC_UABAL	; Used in aarch64-sve2.md.
      UNSPEC_UABDLB	; Used in aarch64-sve2.md.
      UNSPEC_UABDLT	; Used in aarch64-sve2.md.
      UNSPEC_UADDLB	; Used in aarch64-sve2.md.
***************
*** 1362,1367 ****
--- 1400,1407 ----
      UNSPEC_SME_FMLA
      UNSPEC_SME_FMLAL
      UNSPEC_SME_FMLS
+     UNSPEC_SME_FMOP4A
+     UNSPEC_SME_FMOP4S
      UNSPEC_SME_FMOPA
      UNSPEC_SME_FMOPS
      UNSPEC_SME_FSUB
***************
*** 1377,1382 ****
--- 1417,1424 ----
      UNSPEC_SME_SVDOT
      UNSPEC_SME_SMLA
      UNSPEC_SME_SMLS
+     UNSPEC_SME_SMOP4A
+     UNSPEC_SME_SMOP4S
      UNSPEC_SME_SMOPA
      UNSPEC_SME_SMOPS
      UNSPEC_SME_ST1_HOR
***************
*** 1385,1400 ****
--- 1427,1448 ----
      UNSPEC_SME_SUB_WRITE
      UNSPEC_SME_SUDOT
      UNSPEC_SME_SUVDOT
+     UNSPEC_SME_SUMOP4A
+     UNSPEC_SME_SUMOP4S
      UNSPEC_SME_SUMOPA
      UNSPEC_SME_SUMOPS
      UNSPEC_SME_UDOT
      UNSPEC_SME_UVDOT
      UNSPEC_SME_UMLA
      UNSPEC_SME_UMLS
+     UNSPEC_SME_UMOP4A
+     UNSPEC_SME_UMOP4S
      UNSPEC_SME_UMOPA
      UNSPEC_SME_UMOPS
      UNSPEC_SME_USDOT
      UNSPEC_SME_USVDOT
+     UNSPEC_SME_USMOP4A
+     UNSPEC_SME_USMOP4S
      UNSPEC_SME_USMOPA
      UNSPEC_SME_USMOPS
      UNSPEC_SME_WRITE
***************
*** 2984,2989 ****
--- 3032,3039 ----
  (define_mode_attr z_suffix [(VNx16QI ".b") (VNx32QI "") (VNx64QI "")
  			    (VNx8BF ".h") (VNx16BF "") (VNx32BF "")
  			    (VNx8HF ".h") (VNx16HF "") (VNx32HF "")
+ 			    (VNx4SF ".s") (VNx8SF "") (VNx16SF "")
+ 			    (VNx2DF ".d") (VNx4DF "") (VNx8DF "")
  			    (VNx8HI ".h") (VNx16HI "") (VNx32HI "")])
  
  ;; The number of bytes controlled by a predicate
***************
*** 3416,3421 ****
--- 3466,3474 ----
  (define_code_attr TRUNC_SHIFT [(ss_truncate "ashiftrt")
  			       (us_truncate "lshiftrt") (truncate "lshiftrt")])
  
+ ;; The optab prefix of a saturating truncation.
+ (define_code_attr sat_trunc_op [(ss_truncate "ss") (us_truncate "us")])
+ 
  (define_code_attr shrn_op [(ss_truncate "sq")
  			   (us_truncate "uq") (truncate "")])
  
***************
*** 3995,4001 ****
  (define_int_iterator SVE2_INT_BINARY_LANE [UNSPEC_SQDMULH
  					   UNSPEC_SQRDMULH])
  
! (define_int_iterator SVE2_INT_BINARY_LONG [UNSPEC_SABDLB
  					   UNSPEC_SABDLT
  					   UNSPEC_SADDLB
  					   UNSPEC_SADDLBT
--- 4048,4055 ----
  (define_int_iterator SVE2_INT_BINARY_LANE [UNSPEC_SQDMULH
  					   UNSPEC_SQRDMULH])
  
! (define_int_iterator SVE2_INT_BINARY_LONG [UNSPEC_SABAL
! 					   UNSPEC_SABDLB
  					   UNSPEC_SABDLT
  					   UNSPEC_SADDLB
  					   UNSPEC_SADDLBT
***************
*** 4008,4013 ****
--- 4062,4068 ----
  					   UNSPEC_SSUBLBT
  					   UNSPEC_SSUBLT
  					   UNSPEC_SSUBLTB
+ 					   UNSPEC_UABAL
  					   UNSPEC_UABDLB
  					   UNSPEC_UABDLT
  					   UNSPEC_UADDLB
***************
*** 4154,4163 ****
  				    UNSPEC_CDOT180
  				    UNSPEC_CDOT270])
  
! (define_int_iterator SVE2_INT_ADD_BINARY_LONG [UNSPEC_SABDLB
  					       UNSPEC_SABDLT
  					       UNSPEC_SMULLB
  					       UNSPEC_SMULLT
  					       UNSPEC_UABDLB
  					       UNSPEC_UABDLT
  					       UNSPEC_UMULLB
--- 4209,4220 ----
  				    UNSPEC_CDOT180
  				    UNSPEC_CDOT270])
  
! (define_int_iterator SVE2_INT_ADD_BINARY_LONG [UNSPEC_SABAL
! 					       UNSPEC_SABDLB
  					       UNSPEC_SABDLT
  					       UNSPEC_SMULLB
  					       UNSPEC_SMULLT
+ 					       UNSPEC_UABAL
  					       UNSPEC_UABDLB
  					       UNSPEC_UABDLT
  					       UNSPEC_UMULLB
***************
*** 4304,4309 ****
--- 4361,4373 ----
  
  (define_int_iterator SME_FP_MOP [UNSPEC_SME_FMOPA UNSPEC_SME_FMOPS])
  
+ (define_int_iterator SME_FP_MOP4 [UNSPEC_SME_FMOP4A UNSPEC_SME_FMOP4S])
+ (define_int_iterator SME_FP8_MOP4 [UNSPEC_SME_FMOP4A])
+ (define_int_iterator SME_INT_MOP4 [UNSPEC_SME_UMOP4A UNSPEC_SME_UMOP4S
+ 				   UNSPEC_SME_SMOP4A UNSPEC_SME_SMOP4S
+ 				   UNSPEC_SME_SUMOP4A UNSPEC_SME_SUMOP4S
+ 				   UNSPEC_SME_USMOP4A UNSPEC_SME_USMOP4S])
+ 
  (define_int_iterator SME2_BMOP [UNSPEC_SME_BMOPA UNSPEC_SME_BMOPS])
  
  (define_int_iterator SME_BINARY_SLICE_SDI [UNSPEC_SME_ADD UNSPEC_SME_SUB])
***************
*** 4495,4500 ****
--- 4559,4566 ----
  			(UNSPEC_SME_FMLA "fmla")
  			(UNSPEC_SME_FMLAL "fmlal")
  			(UNSPEC_SME_FMLS "fmls")
+ 			(UNSPEC_SME_FMOP4A "fmop4a")
+ 			(UNSPEC_SME_FMOP4S "fmop4s")
  			(UNSPEC_SME_FMOPA "fmopa")
  			(UNSPEC_SME_FMOPS "fmops")
  			(UNSPEC_SME_FSUB "fsub")
***************
*** 4508,4513 ****
--- 4574,4581 ----
  			(UNSPEC_SME_SVDOT "svdot")
  			(UNSPEC_SME_SMLA "smla")
  			(UNSPEC_SME_SMLS "smls")
+ 			(UNSPEC_SME_SMOP4A "smop4a")
+ 			(UNSPEC_SME_SMOP4S "smop4s")
  			(UNSPEC_SME_SMOPA "smopa")
  			(UNSPEC_SME_SMOPS "smops")
  			(UNSPEC_SME_ST1_HOR "st1_hor")
***************
*** 4516,4531 ****
--- 4584,4605 ----
  			(UNSPEC_SME_SUB_WRITE "sub_write")
  			(UNSPEC_SME_SUDOT "sudot")
  			(UNSPEC_SME_SUVDOT "suvdot")
+ 			(UNSPEC_SME_SUMOP4A "sumop4a")
+ 			(UNSPEC_SME_SUMOP4S "sumop4s")
  			(UNSPEC_SME_SUMOPA "sumopa")
  			(UNSPEC_SME_SUMOPS "sumops")
  			(UNSPEC_SME_UDOT "udot")
  			(UNSPEC_SME_UVDOT "uvdot")
  			(UNSPEC_SME_UMLA "umla")
  			(UNSPEC_SME_UMLS "umls")
+ 			(UNSPEC_SME_UMOP4A "umop4a")
+ 			(UNSPEC_SME_UMOP4S "umop4s")
  			(UNSPEC_SME_UMOPA "umopa")
  			(UNSPEC_SME_UMOPS "umops")
  			(UNSPEC_SME_USDOT "usdot")
  			(UNSPEC_SME_USVDOT "usvdot")
+ 			(UNSPEC_SME_USMOP4A "usmop4a")
+ 			(UNSPEC_SME_USMOP4S "usmop4s")
  			(UNSPEC_SME_USMOPA "usmopa")
  			(UNSPEC_SME_USMOPS "usmops")
  			(UNSPEC_SME_WRITE_HOR "write_hor")
***************
*** 4583,4589 ****
  			(UNSPEC_COND_FRINTA "round")
  			(UNSPEC_COND_FRINTI "nearbyint")
  			(UNSPEC_COND_FRINTM "floor")
! 			(UNSPEC_COND_FRINTN "frintn")
  			(UNSPEC_COND_FRINTP "ceil")
  			(UNSPEC_COND_FRINTX "rint")
  			(UNSPEC_COND_FRINTZ "btrunc")
--- 4657,4663 ----
  			(UNSPEC_COND_FRINTA "round")
  			(UNSPEC_COND_FRINTI "nearbyint")
  			(UNSPEC_COND_FRINTM "floor")
! 			(UNSPEC_COND_FRINTN "roundeven")
  			(UNSPEC_COND_FRINTP "ceil")
  			(UNSPEC_COND_FRINTX "rint")
  			(UNSPEC_COND_FRINTZ "btrunc")
***************
*** 4942,4947 ****
--- 5016,5022 ----
  			     (UNSPEC_RSQRTE "ursqrte")
  			     (UNSPEC_RSUBHNB "rsubhnb")
  			     (UNSPEC_RSUBHNT "rsubhnt")
+ 			     (UNSPEC_SABAL "sabal")
  			     (UNSPEC_SABDLB "sabdlb")
  			     (UNSPEC_SABDLT "sabdlt")
  			     (UNSPEC_SADALP "sadalp")
***************
*** 5013,5018 ****
--- 5088,5094 ----
  			     (UNSPEC_SUBHNB "subhnb")
  			     (UNSPEC_SUBHNT "subhnt")
  			     (UNSPEC_SUQADD "suqadd")
+ 			     (UNSPEC_UABAL "uabal")
  			     (UNSPEC_UABDLB "uabdlb")
  			     (UNSPEC_UABDLT "uabdlt")
  			     (UNSPEC_UADALP "uadalp")
***************
*** 5064,5073 ****
  				 (UNSPEC_URHADD "urhadd")
  				 (UNSPEC_URSHL "urshlr")])
  
! (define_int_attr sve_int_add_op [(UNSPEC_SABDLB "sabalb")
  				 (UNSPEC_SABDLT "sabalt")
  				 (UNSPEC_SMULLB "smlalb")
  				 (UNSPEC_SMULLT "smlalt")
  				 (UNSPEC_UABDLB "uabalb")
  				 (UNSPEC_UABDLT "uabalt")
  				 (UNSPEC_UMULLB "umlalb")
--- 5140,5151 ----
  				 (UNSPEC_URHADD "urhadd")
  				 (UNSPEC_URSHL "urshlr")])
  
! (define_int_attr sve_int_add_op [(UNSPEC_SABAL "sabal")
! 				 (UNSPEC_SABDLB "sabalb")
  				 (UNSPEC_SABDLT "sabalt")
  				 (UNSPEC_SMULLB "smlalb")
  				 (UNSPEC_SMULLT "smlalt")
+ 				 (UNSPEC_UABAL "uabal")
  				 (UNSPEC_UABDLB "uabalb")
  				 (UNSPEC_UABDLT "uabalt")
  				 (UNSPEC_UMULLB "umlalb")
***************
*** 5132,5137 ****
--- 5210,5216 ----
  				  (UNSPEC_SBCLT "int_general")
  				  (UNSPEC_SQRDMLAH "int_mul")
  				  (UNSPEC_SQRDMLSH "int_mul")
+ 				  (UNSPEC_SABAL "int_general")
  				  (UNSPEC_SABDLB "int_general")
  				  (UNSPEC_SABDLT "int_general")
  				  (UNSPEC_SADDLB "int_general")
***************
*** 5146,5151 ****
--- 5225,5231 ----
  				  (UNSPEC_SSUBLBT "int_general")
  				  (UNSPEC_SSUBLT "int_general")
  				  (UNSPEC_SSUBLTB "int_general")
+ 				  (UNSPEC_UABAL "int_general")
  				  (UNSPEC_UABDLB "int_general")
  				  (UNSPEC_UABDLT "int_general")
  				  (UNSPEC_UADDLB "int_general")
diff -Nrcpad gcc-17-20260816/gcc/config/alpha/alpha.cc gcc-17-20260823/gcc/config/alpha/alpha.cc
*** gcc-17-20260816/gcc/config/alpha/alpha.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/alpha/alpha.cc	Sun Aug 23 22:32:07 2026
*************** alpha_option_override (void)
*** 435,440 ****
--- 435,446 ----
  	error ("bad value %qs for %<-mfp-rounding-mode%> switch",
  	       alpha_fprm_string);
      }
+   else if (flag_rounding_math && !TARGET_FLOAT_VAX)
+     /* Honoring a rounding mode chosen at run time requires instructions
+        that take their rounding mode from the FPCR.  Without this, code
+        built with -frounding-math silently ignores fesetround.  The VAX
+        floating-point instructions have no dynamic rounding qualifier.  */
+     alpha_fprm = ALPHA_FPRM_DYN;
  
    if (alpha_fptm_string)
      {
diff -Nrcpad gcc-17-20260816/gcc/config/avr/avr-log.cc gcc-17-20260823/gcc/config/avr/avr-log.cc
*** gcc-17-20260816/gcc/config/avr/avr-log.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/avr/avr-log.cc	Sun Aug 23 22:32:07 2026
***************
*** 20,25 ****
--- 20,26 ----
  
  #define IN_TARGET_CODE 1
  
+ #define INCLUDE_ALGORITHM
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
*************** static void avr_log_vadump (FILE*, const
*** 82,87 ****
--- 83,92 ----
     chars after a %-code, or 0 if unrecognized and nothing consumed.  */
  static int avr_forward_to_printf (FILE*, const char*, va_list);
  
+ /* Helpers for avr_log_node to print TREE_OPERAND(s) of node.  */
+ static void avr_log_operands (FILE*, tree, int n_operands, int tab);
+ static void avr_log_operand (FILE*, tree, const char*, int num, int tab);
+ 
  /* Wrapper for avr_log_vadump.  If STREAM is NULL we are called by avr_dump,
     i.e. output to dump_file if available.  The 2nd argument is __FUNCTION__.
     The 3rd argument is the format string. */
*************** static void
*** 109,122 ****
  avr_log_node (FILE *file, tree node, int tab, const char *tag = nullptr)
  {
    tab += 3;
- 
-   auto code = TREE_CODE (node);
- 
    fprintf (file, "%*s", tab, "");
  
    print_node_brief (file, "", node, 0);
    if (tag)
      fprintf (file, " %s", tag);
    if (DECL_P (node) && DECL_ARTIFICIAL (node))
      fprintf (file, " artificial");
    if (code == VAR_DECL || code == PARM_DECL || code == FIELD_DECL)
--- 114,136 ----
  avr_log_node (FILE *file, tree node, int tab, const char *tag = nullptr)
  {
    tab += 3;
    fprintf (file, "%*s", tab, "");
  
+   if (node == NULL_TREE)
+     {
+       fprintf (file, "<NULL-TREE>");
+       if (tag)
+ 	fprintf (file, " %s", tag);
+       fprintf (file, "\n");
+       return;
+     }
+ 
    print_node_brief (file, "", node, 0);
    if (tag)
      fprintf (file, " %s", tag);
+ 
+   auto code = TREE_CODE (node);
+ 
    if (DECL_P (node) && DECL_ARTIFICIAL (node))
      fprintf (file, " artificial");
    if (code == VAR_DECL || code == PARM_DECL || code == FIELD_DECL)
*************** avr_log_node (FILE *file, tree node, int
*** 124,129 ****
--- 138,145 ----
        fprintf (file, " read-only");
    if (TYPE_P (node) && TYPE_READONLY (node))
      fprintf (file, " read-only");
+   if (code == POINTER_TYPE)
+     fprintf (file, " %s", GET_MODE_NAME (SCALAR_INT_TYPE_MODE (node)));
  
    fprintf (file, "\n");
  
*************** avr_log_node (FILE *file, tree node, int
*** 156,169 ****
--- 172,238 ----
        avr_log_node (file, TREE_TYPE (node), tab);
        break;
  
+     case ADDR_EXPR:
+       avr_log_operands (file, node, 1, tab);
+       break;
+ 
+     case POINTER_PLUS_EXPR:
+     case POINTER_DIFF_EXPR:
+       avr_log_operands (file, node, 2, tab);
+       break;
+ 
+     case ADDR_SPACE_CONVERT_EXPR:
+     case CONVERT_EXPR:
+     case NOP_EXPR:
+       avr_log_node (file, TREE_TYPE (node), tab);
+       avr_log_operands (file, node, 1, tab);
+       break;
+ 
+     case MEM_REF:
+       avr_log_node (file, TREE_TYPE (node), tab);
+       avr_log_operands (file, node, 2, tab);
+       break;
+ 
+     case CONSTRUCTOR:
+       {
+ 	unsigned HOST_WIDE_INT cnt;
+ 	tree index, value;
+ 	FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (node), cnt, index, value)
+ 	  {
+ 	    (void) index;
+ 	    avr_log_operand (file, value, "elt", (int) cnt, tab);
+ 	  }
+       }
+       break;
+ 
      default:
        if (DECL_P (node))
  	avr_log_node (file, TREE_TYPE (node), tab);
+       if (VAR_P (node)
+ 	  && DECL_INITIAL (node))
+ 	avr_log_node (file, DECL_INITIAL (node), tab, "initial");
        break;
      }
  }
  
  
+ static void
+ avr_log_operand (FILE *file, tree op, const char *name, int num, int tab)
+ {
+   char s_op[20] = { '\0' };
+   if (name)
+     sprintf (s_op, "%s:%d", name, std::min (num, 999));
+   avr_log_node (file, op, tab, name ? s_op : nullptr);
+ }
+ 
+ static void
+ avr_log_operands (FILE *file, tree node, int n_operands, int tab)
+ {
+   for (int i = 0; i < n_operands; ++i)
+     avr_log_operand (file, TREE_OPERAND (node, i), "arg", i, tab);
+ }
+ 
+ 
  /* Worker function implementing the %-codes and forwarding to
     respective print/dump function.  */
  
diff -Nrcpad gcc-17-20260816/gcc/config/avr/avr-passes.cc gcc-17-20260823/gcc/config/avr/avr-passes.cc
*** gcc-17-20260816/gcc/config/avr/avr-passes.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/avr/avr-passes.cc	Sun Aug 23 22:32:07 2026
***************
*** 28,33 ****
--- 28,34 ----
  #include "backend.h"
  #include "target.h"
  #include "rtl.h"
+ #include "rtl-iter.h"
  #include "tree.h"
  #include "diagnostic-core.h"
  #include "cfghooks.h"
*************** struct insninfo_t
*** 1053,1058 ****
--- 1054,1081 ----
      else
        gcc_unreachable ();
    }
+ 
+   gprmask_t scratch_mask () const
+   {
+     gprmask_t mask = m_scratch
+       ? regmask (m_scratch, 1)
+       : 0;
+ 
+     if (m_insn)
+       {
+ 	subrtx_iterator::array_type array;
+ 	FOR_EACH_SUBRTX (iter, array, PATTERN (m_insn), NONCONST)
+ 	  {
+ 	    rtx scratch_reg;
+ 	    if (GET_CODE (*iter) == CLOBBER
+ 		&& REG_P (scratch_reg = XEXP (*iter, 0))
+ 		&& END_REGNO (scratch_reg) <= REG_32)
+ 	      mask |= regmask (scratch_reg);
+ 	  }
+       }
+ 
+     return mask;
+   }
  }; // insninfo_t
  
  
*************** optimize_data_t::emit_sequence (basic_bl
*** 1186,1191 ****
--- 1209,1215 ----
  	  avr_dump ("INCOMPLETE APPLICATION:\n");
  	  m2.dump ("regs old route=%s\n\n");
  	  n2.dump ("regs new route=%s\n\n");
+ 	  avr_dump ("ignore_mask = %08x\n\n", (unsigned) ignore_mask);
  	  avr_dump ("The new insns are:\n%L", insns);
  
  	  fatal_insn ("incomplete application of insn", insns);
*************** optimize_data_t::try_split_ldi (bbinfo_t
*** 2715,2722 ****
  
        n_new_insns = bbinfo_t::fpd->solution.emit_insns (curr.ii, curr.regs);
  
!       if (curr.ii.m_scratch)
! 	ignore_mask = regmask (curr.ii.m_scratch, 1);
      }
  
    return found;
--- 2739,2745 ----
  
        n_new_insns = bbinfo_t::fpd->solution.emit_insns (curr.ii, curr.regs);
  
!       ignore_mask = curr.ii.scratch_mask ();
      }
  
    return found;
*************** optimize_data_t::try_split_any (bbinfo_t
*** 3057,3064 ****
  	return fail ("too expensive");
      }
  
!   if (ii.m_scratch)
!     ignore_mask = regmask (ii.m_scratch, 1);
  
    return true;
  }
--- 3080,3086 ----
  	return fail ("too expensive");
      }
  
!   ignore_mask = ii.scratch_mask ();
  
    return true;
  }
diff -Nrcpad gcc-17-20260816/gcc/config/avr/avr.cc gcc-17-20260823/gcc/config/avr/avr.cc
*** gcc-17-20260816/gcc/config/avr/avr.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/avr/avr.cc	Sun Aug 23 22:32:07 2026
*************** avr_addr_space_convert (rtx src, tree ty
*** 15404,15429 ****
  }
  
  
! /* Implement `TARGET_ADDR_SPACE_SUBSET_P'.  */
  
  static bool
! avr_addr_space_subset_p (addr_space_t /*subset*/, addr_space_t /*superset*/)
  {
!   /* Allow any kind of pointer mess.  */
! 
!   return true;
  }
  
  
! /* Helps the next function.  */
  
  static bool
! avr_addr_space_contains (addr_space_t super, addr_space_t sub)
  {
!   return (super == sub
! 	  || super == ADDR_SPACE_MEMX
! 	  || (super == ADDR_SPACE_FLASHX
! 	      && sub != ADDR_SPACE_MEMX && ! ADDR_SPACE_GENERIC_P (sub)));
  }
  
  
--- 15404,15429 ----
  }
  
  
! /* Helps the next two functions.  */
  
  static bool
! avr_addr_space_contains (addr_space_t super, addr_space_t sub)
  {
!   return (super == sub
! 	  || super == ADDR_SPACE_MEMX
! 	  || (super == ADDR_SPACE_FLASHX
! 	      && sub != ADDR_SPACE_MEMX && ! ADDR_SPACE_GENERIC_P (sub)));
  }
  
  
! /* Implement `TARGET_ADDR_SPACE_SUBSET_P'.  */
  
  static bool
! avr_addr_space_subset_p (addr_space_t subset, addr_space_t superset)
  {
!   // Allow any kind of pointer casts with -mno-strict-addr-space-subsets.
!   return (!avropt_strict_addr_space_subsets
! 	  || avr_addr_space_contains (superset, subset));
  }
  
  
diff -Nrcpad gcc-17-20260816/gcc/config/avr/avr.opt gcc-17-20260823/gcc/config/avr/avr.opt
*** gcc-17-20260816/gcc/config/avr/avr.opt	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/avr/avr.opt	Sun Aug 23 22:32:07 2026
*************** msplit-ldst
*** 115,120 ****
--- 115,124 ----
  Target Var(avropt_split_ldst) Init(0) Optimization
  Optimization. Split most of the load and store instructions into byte load and stores.
  
+ mstrict-addr-space-subsets
+ Target Var(avropt_strict_addr_space_subsets) Init(0)
+ Implement strict named address space subset relations.
+ 
  mstrict-X
  Target Var(avropt_strict_X) Init(0) Optimization
  Optimization. When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decrement, post-increment and indirect addressing with the X register.  Without this option, the compiler may assume that there is an addressing mode X+const similar to Y+const and Z+const and emit instructions to emulate such an addressing mode for X.
diff -Nrcpad gcc-17-20260816/gcc/config/avr/avr.opt.urls gcc-17-20260823/gcc/config/avr/avr.opt.urls
*** gcc-17-20260816/gcc/config/avr/avr.opt.urls	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/avr/avr.opt.urls	Sun Aug 23 22:32:07 2026
*************** UrlSuffix(gcc/AVR-Options.html#index-msp
*** 60,65 ****
--- 60,68 ----
  msplit-ldst
  UrlSuffix(gcc/AVR-Options.html#index-msplit-ldst)
  
+ mstrict-addr-space-subsets
+ UrlSuffix(gcc/AVR-Options.html#index-mstrict-addr-space-subsets)
+ 
  mstrict-X
  UrlSuffix(gcc/AVR-Options.html#index-mstrict-X)
  
diff -Nrcpad gcc-17-20260816/gcc/config/darwin.cc gcc-17-20260823/gcc/config/darwin.cc
*** gcc-17-20260816/gcc/config/darwin.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/darwin.cc	Sun Aug 23 22:32:07 2026
*************** darwin_override_options (void)
*** 3576,3587 ****
        flag_asynchronous_unwind_tables = 0;
      }
  
!   if (flag_var_tracking_uninit == 0
        && generating_for_darwin_version >= 9
        && (flag_gtoggle ? (debug_info_level == DINFO_LEVEL_NONE)
!       : (debug_info_level >= DINFO_LEVEL_NORMAL))
        && dwarf_debuginfo_p ())
!     flag_var_tracking_uninit = flag_var_tracking;
  
    if (OPTION_SET_P (flag_pie) && flag_pie)
      {
--- 3576,3588 ----
        flag_asynchronous_unwind_tables = 0;
      }
  
!   if (!OPTION_SET_P (flag_var_tracking_uninit)
!       && flag_var_tracking_uninit == 0
        && generating_for_darwin_version >= 9
        && (flag_gtoggle ? (debug_info_level == DINFO_LEVEL_NONE)
! 	  : (debug_info_level >= DINFO_LEVEL_NORMAL))
        && dwarf_debuginfo_p ())
!     flag_var_tracking_uninit = 1;
  
    if (OPTION_SET_P (flag_pie) && flag_pie)
      {
diff -Nrcpad gcc-17-20260816/gcc/config/darwin.h gcc-17-20260823/gcc/config/darwin.h
*** gcc-17-20260816/gcc/config/darwin.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/darwin.h	Sun Aug 23 22:32:07 2026
*************** extern GTY(()) int darwin_ms_struct;
*** 433,439 ****
      %{!r:%{!nostdlib:%{!nodefaultlibs: " DARWIN_WEAK_CRTS "}}} \
      %o \
      %{!r:%{!nostdlib:%{!nodefaultlibs:\
!       %{fprofile-arcs|fcondition-coverage|fprofile-generate*|coverage:-lgcov} \
        %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
  	%{static|static-libgcc|static-libstdc++|static-libgfortran: \
  	  libgomp.a%s; : -lgomp }} \
--- 433,440 ----
      %{!r:%{!nostdlib:%{!nodefaultlibs: " DARWIN_WEAK_CRTS "}}} \
      %o \
      %{!r:%{!nostdlib:%{!nodefaultlibs:\
!       %{fprofile-arcs|fcondition-coverage|fpath-coverage|\
! 	fprofile-generate*|coverage:-lgcov} \
        %{fopenacc|fopenmp|%:gt(%{ftree-parallelize-loops=*:%*} 1): \
  	%{static|static-libgcc|static-libstdc++|static-libgfortran: \
  	  libgomp.a%s; : -lgomp }} \
diff -Nrcpad gcc-17-20260816/gcc/config/i386/avx10v2auxintrin.h gcc-17-20260823/gcc/config/i386/avx10v2auxintrin.h
*** gcc-17-20260816/gcc/config/i386/avx10v2auxintrin.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/avx10v2auxintrin.h	Sun Aug 23 22:32:07 2026
*************** _mm512_maskz_cvthf6_hf8 (__mmask64 __U,
*** 1566,1571 ****
--- 1566,1858 ----
  						       (__mmask64) __U);
  }
  
+ // VPMOVSSDB - 128-bit
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtss_epi32_epi8 (__m128i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb128_mask ((__v4si) __A,
+ 						     (__v16qi)
+ 						     _mm_undefined_si128 (),
+ 						     (__mmask8) -1);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cvtss_epi32_epi8 (__m128i __W, __mmask8 __U, __m128i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb128_mask ((__v4si) __A,
+ 						     (__v16qi) __W,
+ 						     (__mmask8) __U);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_cvtss_epi32_epi8 (__mmask8 __U, __m128i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb128_mask ((__v4si) __A,
+ 						     (__v16qi)
+ 						     _mm_setzero_si128 (),
+ 						     (__mmask8) __U);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_cvtss_epi32_storeu_epi8 (void * __P, __mmask8 __U, __m128i __A)
+ {
+   __builtin_ia32_vpmovssdb128mem_mask ((unsigned int *) __P,
+ 				       (__v4si) __A,
+ 				       (__mmask8) __U);
+ }
+ 
+ // VPMOVSSDB - 256-bit
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtss_epi32_epi8 (__m256i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb256_mask ((__v8si) __A,
+ 						     (__v16qi)
+ 						     _mm_undefined_si128 (),
+ 						     (__mmask8) -1);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cvtss_epi32_epi8 (__m128i __W, __mmask8 __U, __m256i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb256_mask ((__v8si) __A,
+ 						     (__v16qi) __W,
+ 						     (__mmask8) __U);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_maskz_cvtss_epi32_epi8 (__mmask8 __U, __m256i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb256_mask ((__v8si) __A,
+ 						     (__v16qi)
+ 						     _mm_setzero_si128 (),
+ 						     (__mmask8) __U);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_cvtss_epi32_storeu_epi8 (void * __P, __mmask8 __U, __m256i __A)
+ {
+   __builtin_ia32_vpmovssdb256mem_mask ((unsigned long long *) __P,
+ 				       (__v8si) __A,
+ 				       (__mmask8) __U);
+ }
+ 
+ // VPMOVSSDB - 512-bit
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_cvtss_epi32_epi8 (__m512i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb512_mask ((__v16si) __A,
+ 						     (__v16qi)
+ 						     _mm_undefined_si128 (),
+ 						     (__mmask16) -1);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_cvtss_epi32_epi8 (__m128i __W, __mmask16 __U, __m512i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb512_mask ((__v16si) __A,
+ 						     (__v16qi) __W,
+ 						     (__mmask16) __U);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_maskz_cvtss_epi32_epi8 (__mmask16 __U, __m512i __A)
+ {
+   return (__m128i) __builtin_ia32_vpmovssdb512_mask ((__v16si) __A,
+ 						     (__v16qi)
+ 						     _mm_setzero_si128 (),
+ 						     (__mmask16) __U);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_cvtss_epi32_storeu_epi8 (void * __P, __mmask16 __U, __m512i __A)
+ {
+   __builtin_ia32_vpmovssdb512mem_mask ((__v16qi *) __P,
+ 				       (__v16si) __A,
+ 				       (__mmask16) __U);
+ }
+ 
+ // VUNPACKB - 128-bit
+ #ifdef __OPTIMIZE__
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_unpack_epi8 (__m128i __A, const int __B)
+ {
+   return (__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi) __A,
+ 						    (const int) __B,
+ 						    (__v16qi)
+ 						    _mm_undefined_si128 (),
+ 						    (__mmask16) -1);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_mask_unpack_epi8 (__m128i __W, __mmask16 __U,
+ 		      __m128i __A, const int __B)
+ {
+   return (__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi) __A,
+ 						    (const int) __B,
+ 						    (__v16qi) __W,
+ 						    (__mmask16) __U);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_maskz_unpack_epi8 (__mmask16 __U, __m128i __A, const int __B)
+ {
+   return (__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi) __A,
+ 						    (const int) __B,
+ 						    (__v16qi)
+ 						    _mm_setzero_si128 (),
+ 						    (__mmask16) __U);
+ }
+ 
+ // VUNPACKB - 256-bit
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_unpack_epi8 (__m256i __A, const int __B)
+ {
+   return (__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi) __A,
+ 						    (const int) __B,
+ 						    (__v32qi)
+ 						    _mm256_undefined_si256 (),
+ 						    (__mmask32) -1);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_mask_unpack_epi8 (__m256i __W, __mmask32 __U,
+ 			 __m256i __A, const int __B)
+ {
+   return (__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi) __A,
+ 						    (const int) __B,
+ 						    (__v32qi) __W,
+ 						    (__mmask32) __U);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_maskz_unpack_epi8 (__mmask32 __U, __m256i __A, const int __B)
+ {
+   return (__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi) __A,
+ 						    (const int) __B,
+ 						    (__v32qi)
+ 						    _mm256_setzero_si256 (),
+ 						    (__mmask32) __U);
+ }
+ 
+ // VUNPACKB - 512-bit
+ 
+ extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_unpack_epi8 (__m512i __A, const int __B)
+ {
+   return (__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi) __A,
+ 						    (const int) __B,
+ 						    (__v64qi)
+ 						    _mm512_undefined_si512 (),
+ 						    (__mmask64) -1);
+ }
+ 
+ extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_mask_unpack_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
+ 			 const int __B)
+ {
+   return (__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi) __A,
+ 						    (const int) __B,
+ 						    (__v64qi) __W,
+ 						    (__mmask64) __U);
+ }
+ 
+ extern __inline __m512i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm512_maskz_unpack_epi8 (__mmask64 __U, __m512i __A, const int __B)
+ {
+   return (__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi) __A,
+ 						    (const int) __B,
+ 						    (__v64qi)
+ 						    _mm512_setzero_si512 (),
+ 						    (__mmask64) __U);
+ }
+ 
+ #else
+ #define _mm_unpack_epi8(A, imm)					\
+   ((__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi)(__m128i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v16qi)(__m128i)	\
+ 					      (_mm_undefined_si128 ()),	\
+ 					      (__mmask16)(-1)))
+ 
+ #define _mm_mask_unpack_epi8(W, U, A, imm)				\
+   ((__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi)(__m128i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v16qi)(__m128i)(W),	\
+ 					      (__mmask16)(U)))
+ 
+ #define _mm_maskz_unpack_epi8(U, A, imm)				\
+   ((__m128i) __builtin_ia32_vunpackb128_mask ((__v16qi)(__m128i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v16qi)(__m128i)	\
+ 					      (_mm_undefined_si128 ()),	\
+ 					      (__mmask16)(U)))
+ 
+ #define _mm256_unpack_epi8(A, imm)					\
+   ((__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi)(__m256i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v32qi)(__m256i)	\
+ 					      (_mm256_undefined_si256 ()),  \
+ 					      (__mmask32)(-1)))
+ 
+ #define _mm256_mask_unpack_epi8(W, U, A, imm)				\
+   ((__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi)(__m256i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v32qi)(__m256i)(W),	\
+ 					      (__mmask32)(U)))
+ 
+ #define _mm256_maskz_unpack_epi8(U, A, imm)				\
+   ((__m256i) __builtin_ia32_vunpackb256_mask ((__v32qi)(__m256i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v32qi)(__m256i)	\
+ 					      (_mm256_undefined_si256 ()),  \
+ 					      (__mmask32)(U)))
+ 
+ #define _mm512_unpack_epi8(A, imm)					\
+   ((__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi)(__m512i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v64qi)(__m512i)	\
+ 					      (_mm512_undefined_si512 ()),  \
+ 					      (__mmask64)(-1)))
+ 
+ #define _mm512_mask_unpack_epi8(W, U, A, imm)				\
+   ((__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi)(__m512i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v64qi)(__m512i)(W),	\
+ 					      (__mmask64)(U)))
+ 
+ #define _mm512_maskz_unpack_epi8(U, A, imm)				\
+   ((__m512i) __builtin_ia32_vunpackb512_mask ((__v64qi)(__m512i)(A),	\
+ 					      (int)(imm),		\
+ 					      (__v64qi)(__m512i)	\
+ 					      (_mm512_undefined_si512 ()),  \
+ 					      (__mmask64)(U)))
+ #endif
+ 
  #ifdef __DISABLE_AVX10V2AUX__
  #undef __DISABLE_AVX10V2AUX__
  #pragma GCC pop_options
diff -Nrcpad gcc-17-20260816/gcc/config/i386/i386-builtin-types.def gcc-17-20260823/gcc/config/i386/i386-builtin-types.def
*** gcc-17-20260816/gcc/config/i386/i386-builtin-types.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/i386-builtin-types.def	Sun Aug 23 22:32:07 2026
*************** DEF_FUNCTION_TYPE (V16SF, V16QI, V16SF,
*** 1487,1492 ****
--- 1487,1495 ----
  DEF_FUNCTION_TYPE (V16QI, V32QI)
  DEF_FUNCTION_TYPE (V32QI, V64QI)
  DEF_FUNCTION_TYPE (V64QI, V32QI, V64QI, UDI)
+ DEF_FUNCTION_TYPE (V16QI, V16QI, INT, V16QI, UHI)
+ DEF_FUNCTION_TYPE (V32QI, V32QI, INT, V32QI, USI)
+ DEF_FUNCTION_TYPE (V64QI, V64QI, INT, V64QI, UDI)
  
  
  # SM4 builtins
diff -Nrcpad gcc-17-20260816/gcc/config/i386/i386-builtin.def gcc-17-20260823/gcc/config/i386/i386-builtin.def
*** gcc-17-20260816/gcc/config/i386/i386-builtin.def	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/i386-builtin.def	Sun Aug 23 22:32:07 2026
*************** BDESC (OPTION_MASK_ISA_64BIT, OPTION_MAS
*** 523,528 ****
--- 523,533 ----
  BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_MOVRS | OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vmovrsqv2di_mask, "__builtin_ia32_vmovrsq128_mask", IX86_BUILTIN_VMOVRSQ_128, UNKNOWN, (int) V2DI_FTYPE_PCV2DI_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_MOVRS | OPTION_MASK_ISA2_AVX10_2, CODE_FOR_avx10_2_vmovrswv8hi_mask, "__builtin_ia32_vmovrsw128_mask", IX86_BUILTIN_VMOVRSW_128, UNKNOWN, (int) V8HI_FTYPE_PCV8HI_V8HI_UQI)
  
+ /* AVX10V2AUX.  */
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev4siv4qi2_mask_store_2, "__builtin_ia32_vpmovssdb128mem_mask", IX86_BUILTIN_VPMOVSSDB128_MEM, UNKNOWN, (int) VOID_FTYPE_PUSI_V4SI_UQI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev8siv8qi2_mask_store_2, "__builtin_ia32_vpmovssdb256mem_mask", IX86_BUILTIN_VPMOVSSDB256_MEM, UNKNOWN, (int) VOID_FTYPE_PUDI_V8SI_UQI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev16siv16qi2_mask_store, "__builtin_ia32_vpmovssdb512mem_mask", IX86_BUILTIN_VPMOVSSDB512_MEM, UNKNOWN, (int) VOID_FTYPE_PV16QI_V16SI_UHI)
+ 
  BDESC_END (SPECIAL_ARGS, PURE_ARGS)
  
  /* AVX */
*************** BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, C
*** 3427,3432 ****
--- 3432,3443 ----
  BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vcvthf62hf8v16qi_mask, "__builtin_ia32_vcvthf62hf8128_mask", IX86_BUILTIN_VCVTHF62HF8128_MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI_UHI)
  BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vcvthf62hf8v32qi_mask, "__builtin_ia32_vcvthf62hf8256_mask", IX86_BUILTIN_VCVTHF62HF8256_MASK, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI_USI)
  BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vcvthf62hf8v64qi_mask, "__builtin_ia32_vcvthf62hf8512_mask", IX86_BUILTIN_VCVTHF62HF8512_MASK, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_UDI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vunpackbv16qi_mask, "__builtin_ia32_vunpackb128_mask", IX86_BUILTIN_VUNPACKB128_MASK, UNKNOWN, (int) V16QI_FTYPE_V16QI_INT_V16QI_UHI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vunpackbv32qi_mask, "__builtin_ia32_vunpackb256_mask", IX86_BUILTIN_VUNPACKB256_MASK, UNKNOWN, (int) V32QI_FTYPE_V32QI_INT_V32QI_USI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_vunpackbv64qi_mask, "__builtin_ia32_vunpackb512_mask", IX86_BUILTIN_VUNPACKB512_MASK, UNKNOWN, (int) V64QI_FTYPE_V64QI_INT_V64QI_UDI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev4siv4qi2_mask, "__builtin_ia32_vpmovssdb128_mask", IX86_BUILTIN_VPMOVSSDB128_MASK, UNKNOWN, (int) V16QI_FTYPE_V4SI_V16QI_UQI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev8siv8qi2_mask, "__builtin_ia32_vpmovssdb256_mask", IX86_BUILTIN_VPMOVSSDB256_MASK, UNKNOWN, (int) V16QI_FTYPE_V8SI_V16QI_UQI)
+ BDESC (0, OPTION_MASK_ISA2_AVX10V2AUX, CODE_FOR_avx10v2aux_sym_truncatev16siv16qi2_mask, "__builtin_ia32_vpmovssdb512_mask", IX86_BUILTIN_VPMOVSSDB512_MASK, UNKNOWN, (int) V16QI_FTYPE_V16SI_V16QI_UHI)
  
  /* Builtins with rounding support.  */
  BDESC_END (ARGS, ROUND_ARGS)
diff -Nrcpad gcc-17-20260816/gcc/config/i386/i386-expand.cc gcc-17-20260823/gcc/config/i386/i386-expand.cc
*** gcc-17-20260816/gcc/config/i386/i386-expand.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/i386-expand.cc	Sun Aug 23 22:32:07 2026
*************** ix86_expand_args_builtin (const struct b
*** 13322,13327 ****
--- 13322,13330 ----
      case V4DF_FTYPE_V8DF_INT_V4DF_UQI:
      case V4SF_FTYPE_V16SF_INT_V4SF_UQI:
      case V8DI_FTYPE_V8DI_INT_V8DI_UQI:
+     case V16QI_FTYPE_V16QI_INT_V16QI_UHI:
+     case V32QI_FTYPE_V32QI_INT_V32QI_USI:
+     case V64QI_FTYPE_V64QI_INT_V64QI_UDI:
        nargs = 4;
        mask_pos = 2;
        nargs_constant = 1;
*************** ix86_expand_args_builtin (const struct b
*** 13592,13597 ****
--- 13595,13616 ----
  		  }
  		return const0_rtx;
  	      }
+ 	  if ((icode == CODE_FOR_vunpackbv16qi_mask
+ 	       || icode == CODE_FOR_vunpackbv32qi_mask
+ 	       || icode == CODE_FOR_vunpackbv64qi_mask)
+ 	      && CONST_INT_P (op))
+ 	    {
+ 	      char val = INTVAL (op);
+ 	      if ((val & 0xc0)
+ 		  || (!(val & 0x18))
+ 		  || ((val & 0x02) && ((val & 0x1c) != 0x08))
+ 		  || ((val & 0x01) && (((val & 0x1c) >> 2) > 0x4)))
+ 		{
+ 		  error ("the last argument must not use reserved value "
+ 			 "immediate");
+ 		  return const0_rtx;
+ 		}
+ 	    }
  	}
        else
  	{
diff -Nrcpad gcc-17-20260816/gcc/config/i386/i386.cc gcc-17-20260823/gcc/config/i386/i386.cc
*** gcc-17-20260816/gcc/config/i386/i386.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/i386.cc	Sun Aug 23 22:32:07 2026
*************** ix86_preferred_reload_class (rtx x, reg_
*** 21077,21090 ****
    if (x == CONST0_RTX (mode))
      return regclass;
  
!   /* Force constants into memory if we are loading a (nonzero) constant into
!      an MMX, SSE or MASK register.  This is because there are no MMX/SSE/MASK
!      instructions to load from a constant.  */
!   if (CONSTANT_P (x)
!       && (MAYBE_MMX_CLASS_P (regclass)
! 	  || MAYBE_SSE_CLASS_P (regclass)
! 	  || MAYBE_MASK_CLASS_P (regclass)))
!     return NO_REGS;
  
    /* Floating-point constants need more complex checks.  */
    if (CONST_DOUBLE_P (x))
--- 21077,21097 ----
    if (x == CONST0_RTX (mode))
      return regclass;
  
!   /* Force constants into memory if we are loading a non-zero constant
!      into an MMX, SSE or MASK register.  This is because there are no
!      MMX/SSE/MASK instructions to load from a constant.  Exceptions are
!      minus ones for MASK register and standard SSE constants for SSE
!      register.  */
!   if (CONSTANT_P (x))
!     {
!       if (MAYBE_MMX_CLASS_P (regclass))
! 	return NO_REGS;
!        if (MAYBE_MASK_CLASS_P (regclass))
! 	 return x == constm1_rtx ? regclass : NO_REGS;
!        if (MAYBE_SSE_CLASS_P (regclass))
! 	 return (mode != VOIDmode && standard_sse_constant_p (x, mode)
! 		 ? regclass : NO_REGS);
!     }
  
    /* Floating-point constants need more complex checks.  */
    if (CONST_DOUBLE_P (x))
diff -Nrcpad gcc-17-20260816/gcc/config/i386/sse.md gcc-17-20260823/gcc/config/i386/sse.md
*** gcc-17-20260816/gcc/config/i386/sse.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/i386/sse.md	Sun Aug 23 22:32:07 2026
***************
*** 279,284 ****
--- 279,286 ----
    UNSPEC_VCVTHF82HF6S
    UNSPEC_VCVTBF62HF8
    UNSPEC_VCVTHF62HF8
+   UNSPEC_VUNPACKB
+   UNSPEC_VPMOVSSDB
  ])
  
  (define_c_enum "unspecv" [
***************
*** 34683,34685 ****
--- 34685,34923 ----
    "vcvt<convertfp62hf8>\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
    [(set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
+ 
+ ;; VUNPACKB - Sub-byte element extraction
+ 
+ (define_insn "vunpackb<mode><mask_name>"
+   [(set (match_operand:VI1_AVX512VL 0 "register_operand" "=v")
+        (unspec:VI1_AVX512VL
+ 	[(match_operand:VI1_AVX512VL 1 "nonimmediate_operand" "vm")
+ 	(match_operand:QI 2 "const_0_to_255_operand")]
+ 	UNSPEC_VUNPACKB))]
+   "TARGET_AVX10V2AUX"
+   "vunpackb\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
+   [(set_attr "prefix" "evex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ ;; VPMOVSSDB - Symmetric signed saturation narrow (32-bit to 8-bit)
+ 
+ (define_mode_attr pmovss_mem_dest
+   [(V4SI "SI") (V8SI "DI")])
+ 
+ (define_mode_attr pmovss_sel_vec
+   [(V4SI "V4SI") (V8SI "V2DI")])
+ 
+ (define_expand "avx10v2aux_sym_truncatev4siv4qi2"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand")
+ 	(vec_concat:V16QI
+ 	  (unspec:V4QI
+ 	    [(match_operand:V4SI 1 "register_operand")]
+ 	    UNSPEC_VPMOVSSDB)
+ 	  (match_dup 2)))]
+   "TARGET_AVX10V2AUX"
+   "operands[2] = CONST0_RTX (V12QImode);")
+ 
+ (define_insn "*avx10v2aux_sym_truncatev4siv4qi2"
+   [(set (match_operand:V16QI 0 "register_operand" "=v")
+ 	(vec_concat:V16QI
+ 	  (unspec:V4QI
+ 	   [(match_operand:V4SI 1 "register_operand" "v")]
+ 	   UNSPEC_VPMOVSSDB)
+ 	(match_operand:V12QI 2 "const0_operand")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "TI")])
+ 
+ (define_expand "avx10v2aux_sym_truncatev8siv8qi2"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand")
+ 	(vec_concat:V16QI
+ 	  (unspec:V8QI
+ 	    [(match_operand:V8SI 1 "register_operand")]
+ 	    UNSPEC_VPMOVSSDB)
+ 	  (match_dup 2)))]
+   "TARGET_AVX10V2AUX"
+   "operands[2] = CONST0_RTX (V8QImode);")
+ 
+ (define_insn "*avx10v2aux_sym_truncatev8siv8qi2"
+   [(set (match_operand:V16QI 0 "register_operand" "=v")
+ 	(vec_concat:V16QI
+ 	 (unspec:V8QI
+ 	  [(match_operand:V8SI 1 "register_operand" "v")]
+ 	  UNSPEC_VPMOVSSDB)
+ 	 (match_operand:V8QI 2 "const0_operand")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "OI")])
+ 
+ (define_expand "avx10v2aux_sym_truncatev4siv4qi2_mask"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand")
+ 	(vec_concat:V16QI
+ 	(vec_merge:V4QI
+ 	  (unspec:V4QI
+ 	   [(match_operand:V4SI 1 "register_operand")]
+ 	    UNSPEC_VPMOVSSDB)
+ 	  (vec_select:V4QI
+ 	   (match_operand:V16QI 2 "nonimm_or_0_operand")
+ 	   (parallel [(const_int 0) (const_int 1)
+ 		      (const_int 2) (const_int 3)]))
+ 	  (match_operand:QI 3 "register_operand"))
+ 	(match_dup 4)))]
+   "TARGET_AVX10V2AUX"
+   "operands[4] = CONST0_RTX (V12QImode);")
+ 
+ (define_insn "*avx10v2aux_sym_truncatev4siv4qi2_mask"
+   [(set (match_operand:V16QI 0 "register_operand" "=v")
+ 	(vec_concat:V16QI
+ 	  (vec_merge:V4QI
+ 	    (unspec:V4QI
+ 	     [(match_operand:V4SI 1 "register_operand" "v")]
+ 	      UNSPEC_VPMOVSSDB)
+ 	    (vec_select:V4QI
+ 	      (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)]))
+ 	    (match_operand:QI 3 "register_operand" "Yk"))
+ 	  (match_operand:V12QI 4 "const0_operand")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "TI")])
+ 
+ (define_expand "avx10v2aux_sym_truncatev8siv8qi2_mask"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand")
+ 	(vec_concat:V16QI
+ 	  (vec_merge:V8QI
+ 	    (unspec:V8QI
+ 	     [(match_operand:V8SI 1 "register_operand")]
+ 	      UNSPEC_VPMOVSSDB)
+ 	    (vec_select:V8QI
+ 	      (match_operand:V16QI 2 "nonimm_or_0_operand")
+ 		(parallel [(const_int 0) (const_int 1)
+ 			   (const_int 2) (const_int 3)
+ 			   (const_int 4) (const_int 5)
+ 			   (const_int 6) (const_int 7)]))
+ 	    (match_operand:QI 3 "register_operand"))
+ 	(match_dup 4)))]
+   "TARGET_AVX10V2AUX"
+   "operands[4] = CONST0_RTX (V8QImode);")
+ 
+ (define_insn "*avx10v2aux_sym_truncatev8siv8qi2_mask"
+   [(set (match_operand:V16QI 0 "register_operand" "=v")
+ 	(vec_concat:V16QI
+ 	  (vec_merge:V8QI
+ 	    (unspec:V8QI
+ 	     [(match_operand:V8SI 1 "register_operand" "v")]
+ 	      UNSPEC_VPMOVSSDB)
+ 	    (vec_select:V8QI
+ 	      (match_operand:V16QI 2 "nonimm_or_0_operand" "0C")
+ 		(parallel [(const_int 0) (const_int 1)
+ 			   (const_int 2) (const_int 3)
+ 			   (const_int 4) (const_int 5)
+ 			   (const_int 6) (const_int 7)]))
+ 	    (match_operand:QI 3 "register_operand" "Yk"))
+ 	(match_operand:V8QI 4 "const0_operand")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "OI")])
+ 
+ (define_insn "*avx10v2aux_sym_truncatev16siv16qi2"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand" "=v,m")
+ 	(unspec:V16QI
+ 	 [(match_operand:V16SI 1 "register_operand" "v,v")]
+ 	 UNSPEC_VPMOVSSDB))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "memory" "none,store")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "XI")])
+ 
+ (define_insn "avx10v2aux_sym_truncatev16siv16qi2_mask"
+   [(set (match_operand:V16QI 0 "nonimmediate_operand" "=v,m")
+ 	(vec_merge:V16QI
+ 	  (unspec:V16QI
+ 	   [(match_operand:V16SI 1 "register_operand" "v,v")]
+ 	   UNSPEC_VPMOVSSDB)
+ 	  (match_operand:V16QI 2 "nonimm_or_0_operand" "0C,0")
+ 	  (match_operand:HI 3 "register_operand" "Yk,Yk")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "memory" "none,store")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "XI")])
+ 
+ (define_expand "avx10v2aux_sym_truncatev16siv16qi2_mask_store"
+   [(set (match_operand:V16QI 0 "memory_operand")
+ 	(vec_merge:V16QI
+ 	  (unspec:V16QI
+ 	   [(match_operand:V16SI 1 "register_operand")]
+ 	   UNSPEC_VPMOVSSDB)
+ 	  (match_dup 0)
+ 	  (match_operand:HI 2 "register_operand")))]
+   "TARGET_AVX10V2AUX")
+ 
+ (define_insn "*avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_store_1"
+   [(set (match_operand:<pmov_dst_3> 0 "memory_operand" "=m")
+ 	(unspec:<pmov_dst_3>
+ 	  [(match_operand:VI4_AVX2 1 "register_operand" "v")]
+ 	  UNSPEC_VPMOVSSDB))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "memory" "store")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_insn_and_split "*avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_store_2"
+   [(set (match_operand:<pmovss_mem_dest> 0 "memory_operand")
+ 	(vec_select:<pmovss_mem_dest>
+ 	  (subreg:<pmovss_sel_vec>
+ 	    (vec_concat:V16QI
+ 	      (unspec:<pmov_dst_3>
+ 		[(match_operand:VI4_AVX2 1 "register_operand")]
+ 		UNSPEC_VPMOVSSDB)
+ 	      (match_operand:<pmov_dst_zeroed_3> 2 "const0_operand")) 0)
+ 	  (parallel [(const_int 0)])))]
+   "TARGET_AVX10V2AUX && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(unspec:<pmov_dst_3> [(match_dup 1)] UNSPEC_VPMOVSSDB))]
+   "operands[0] = adjust_address_nv (operands[0], <pmov_dst_3>mode, 0);")
+ 
+ (define_insn "avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_mask_store_1"
+   [(set (match_operand:<pmov_dst_3> 0 "memory_operand" "=m")
+ 	(vec_merge:<pmov_dst_3>
+ 	  (unspec:<pmov_dst_3>
+ 	   [(match_operand:VI4_AVX2 1 "register_operand" "v")]
+ 	   UNSPEC_VPMOVSSDB)
+ 	  (match_dup 0)
+ 	  (match_operand:<avx512fmaskmode> 2 "register_operand" "Yk")))]
+   "TARGET_AVX10V2AUX"
+   "vpmovssdb\t{%1, %0%{%2%}|%0%{%2%}, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "memory" "store")
+    (set_attr "prefix" "evex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_expand "avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_mask_store_2"
+   [(match_operand:<pmov_dst_3> 0 "memory_operand")
+     (unspec:<pmov_dst_3>
+      [(match_operand:VI4_AVX2 1 "register_operand")]
+       UNSPEC_VPMOVSSDB)
+     (match_operand:<avx512fmaskmode> 2 "register_operand")]
+   "TARGET_AVX10V2AUX"
+ {
+   operands[0] = adjust_address_nv (operands[0], <pmov_dst_3>mode, 0);
+   emit_insn (gen_avx10v2aux_sym_truncate<mode>v<ssescalarnum>qi2_mask_store_1
+ 	    (operands[0], operands[1], operands[2]));
+   DONE;
+ })
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/autovec.md gcc-17-20260823/gcc/config/riscv/autovec.md
*** gcc-17-20260816/gcc/config/riscv/autovec.md	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/riscv/autovec.md	Sun Aug 23 22:32:07 2026
***************
*** 1396,1402 ****
  
        /* Here we set VL = offset + 1.  */
        rtx length = gen_reg_rtx (Pmode);
!       operands[2] = gen_lowpart (Pmode, operands[2]);
        if (CONST_INT_P (operands[2]))
  	  emit_move_insn (length, GEN_INT (INTVAL (operands[2]) + 1));
        else
--- 1396,1402 ----
  
        /* Here we set VL = offset + 1.  */
        rtx length = gen_reg_rtx (Pmode);
!       operands[2] = convert_to_mode (Pmode, operands[2], true);
        if (CONST_INT_P (operands[2]))
  	  emit_move_insn (length, GEN_INT (INTVAL (operands[2]) + 1));
        else
***************
*** 1452,1458 ****
  
      /* Emit the slide down to index 0 in a new vector.  */
      tmp = gen_reg_rtx (<MODE>mode);
!     operands[2] = gen_lowpart (Pmode, operands[2]);
      rtx ops[] = {tmp, operands[1], operands[2]};
      riscv_vector::emit_vlmax_insn
        (code_for_pred_slide (UNSPEC_VSLIDEDOWN, <MODE>mode),
--- 1452,1458 ----
  
      /* Emit the slide down to index 0 in a new vector.  */
      tmp = gen_reg_rtx (<MODE>mode);
!     operands[2] = convert_to_mode (Pmode, operands[2], true);
      rtx ops[] = {tmp, operands[1], operands[2]};
      riscv_vector::emit_vlmax_insn
        (code_for_pred_slide (UNSPEC_VSLIDEDOWN, <MODE>mode),
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/riscv-fusion.cc gcc-17-20260823/gcc/config/riscv/riscv-fusion.cc
*** gcc-17-20260816/gcc/config/riscv/riscv-fusion.cc	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/riscv/riscv-fusion.cc	Sun Aug 23 22:32:07 2026
*************** riscv_fuse_auipc_ld (rtx_insn *prev, rtx
*** 561,629 ****
    return false;
  }
  
- /* Check for RISCV_FUSE_CACHE_ALIGNED_STD fusion.
-    prev (sd) == (set (mem:DI (rs1, offset1)) (reg:DI rs2))
-    curr (sd) == (set (mem:DI (rs1, offset2)) (reg:DI rs3))
- 
-    Constraints:
-      rs1 has at least 128-bit pointer alignment
-      min (offset1, offset2) is 16-byte aligned
-      abs (offset1 - offset2) == 8.  */
- 
- static bool
- riscv_fuse_cache_aligned_std (rtx_insn *prev, rtx_insn *curr)
- {
-   rtx prev_set = single_set (prev);
-   rtx curr_set = single_set (curr);
-   if (!prev_set || !curr_set || any_condjump_p (curr))
-     return false;
- 
-   if (MEM_P (SET_DEST (prev_set))
-       && MEM_P (SET_DEST (curr_set))
-       && SCALAR_INT_MODE_P (GET_MODE (SET_DEST (curr_set)))
-       /* We can probably relax this condition.  The documentation is a bit
- 	 unclear about sub-word cases.  So we just model DImode for now.  */
-       && GET_MODE (SET_DEST (curr_set)) == DImode
-       && GET_MODE (SET_DEST (prev_set)) == DImode)
-     {
-       rtx base_prev, base_curr, offset_prev, offset_curr;
- 
-       extract_base_offset_in_addr (SET_DEST (prev_set),
- 				   &base_prev, &offset_prev);
-       extract_base_offset_in_addr (SET_DEST (curr_set),
- 				   &base_curr, &offset_curr);
- 
-       /* Proceed only if we find both bases, both bases are register and
- 	 bases are the same register.  */
-       if (base_prev != NULL_RTX && base_curr != NULL_RTX
- 	  && REG_P (base_prev) && REG_P (base_curr)
- 	  && REGNO (base_prev) == REGNO (base_curr)
- 	  /* The alignment of the base pointer is more useful than the
- 	     alignment of the memory reference for determining if we're
- 	     on opposite sides of a cache line.  */
- 	  && REGNO_POINTER_ALIGN (ORIGINAL_REGNO (base_prev)) >= 128)
- 	{
- 	  /* The two stores must be contained within opposite halves of
- 	     the same 16 byte aligned block of memory.  We know the
- 	     pointer has suitable alignment, so we just need to check
- 	     the offsets of the two stores for suitable alignment.  */
- 
- 	  /* Get the smaller offset into OFFSET_PREV.  */
- 	  if (INTVAL (offset_prev) > INTVAL (offset_curr))
- 	    std::swap (offset_prev, offset_curr);
- 
- 	  /* We have a match if the smaller offset (OFFSET_PREV) is 16
- 	     byte aligned and the higher offset is 8 bytes more than
- 	     the lower offset.  */
- 	  if ((INTVAL (offset_prev) % 16) == 0
- 	      && (INTVAL (offset_prev) + 8 == INTVAL (offset_curr)))
- 	    return true;
- 	}
-     }
- 
-   return false;
- }
- 
  /* Check for RISCV_FUSE_ALIGNED_STD fusion.
     prev (store) == (set (mem (rs1, offset1)) (reg rs2))
     curr (store) == (set (mem (rs1, offset2)) (reg rs3))
--- 561,566 ----
*************** static const struct riscv_fusion_entry r
*** 850,857 ****
      riscv_fuse_lui_ld, "RISCV_FUSE_LUI_LD" },
    { RISCV_FUSE_AUIPC_LD,
      riscv_fuse_auipc_ld, "RISCV_FUSE_AUIPC_LD" },
-   { RISCV_FUSE_CACHE_ALIGNED_STD,
-     riscv_fuse_cache_aligned_std, "RISCV_FUSE_CACHE_ALIGNED_STD" },
    { RISCV_FUSE_ALIGNED_STD,
      riscv_fuse_aligned_std, "RISCV_FUSE_ALIGNED_STD" },
    { RISCV_FUSE_BFEXT,
--- 787,792 ----
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/riscv-protos.h gcc-17-20260823/gcc/config/riscv/riscv-protos.h
*** gcc-17-20260816/gcc/config/riscv/riscv-protos.h	Sun Aug 16 22:32:06 2026
--- gcc-17-20260823/gcc/config/riscv/riscv-protos.h	Sun Aug 23 22:32:07 2026
*************** enum riscv_fusion_pairs
*** 863,872 ****
    RISCV_FUSE_AUIPC_LD = HOST_WIDE_INT_1U << 7,
    RISCV_FUSE_LDPREINCREMENT = HOST_WIDE_INT_1U << 8,
    RISCV_FUSE_ALIGNED_STD = HOST_WIDE_INT_1U << 9,
!   RISCV_FUSE_CACHE_ALIGNED_STD = HOST_WIDE_INT_1U << 10,
!   RISCV_FUSE_BFEXT = HOST_WIDE_INT_1U << 11,
!   RISCV_FUSE_EXPANDED_LD = HOST_WIDE_INT_1U << 12,
!   RISCV_FUSE_B_ALUI = HOST_WIDE_INT_1U << 13,
  };
  
  extern bool riscv_macro_fusion_p (void);
--- 863,871 ----
    RISCV_FUSE_AUIPC_LD = HOST_WIDE_INT_1U << 7,
    RISCV_FUSE_LDPREINCREMENT = HOST_WIDE_INT_1U << 8,
    RISCV_FUSE_ALIGNED_STD = HOST_WIDE_INT_1U << 9,
!   RISCV_FUSE_BFEXT = HOST_WIDE_INT_1U << 10,
!   RISCV_FUSE_EXPANDED_LD = HOST_WIDE_INT_1U << 11,
!   RISCV_FUSE_B_ALUI = HOST_WIDE_INT_1U << 12,
  };
  
  extern bool riscv_macro_fusion_p (void);
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/riscv.cc gcc-17-20260823/gcc/config/riscv/riscv.cc
*** gcc-17-20260816/gcc/config/riscv/riscv.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/config/riscv/riscv.cc	Sun Aug 23 22:32:07 2026
*************** struct riscv_tune_param
*** 305,310 ****
--- 305,315 ----
    unsigned short vec_reassoc_width = 1;
    unsigned int small_loop_unroll_ninsns = 4;
    unsigned int small_loop_unroll_factor = 2;
+   enum riscv_autoprefetch_model
+   {
+     AUTOPREFETCHER_OFF,
+     AUTOPREFETCHER_WEAK
+   } autoprefetcher_model = AUTOPREFETCHER_OFF;
  };
  
  
*************** static const struct riscv_tune_param xt_
*** 747,752 ****
--- 752,758 ----
    1,						/* vec_reassoc_width.  */
    4,	/* small_loop_unroll_ninsns.  */
    8,	/* small_loop_unroll_factor.  */
+   riscv_tune_param::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model */
  };
  
  /* Costs to use when optimizing for Tenstorrent Ascalon 8 wide.  */
*************** riscv_pass_aggregate_in_vr (struct riscv
*** 7206,7212 ****
    int n = riscv_flatten_aggregate_argument (type, fields, true, true,
  					    /* vls_p */ true, abi_vlen);
  
!   if (n == -1)
      return NULL_RTX;
  
    /* Check all field has same size.  */
--- 7212,7218 ----
    int n = riscv_flatten_aggregate_argument (type, fields, true, true,
  					    /* vls_p */ true, abi_vlen);
  
!   if (n <= 0)
      return NULL_RTX;
  
    /* Check all field has same size.  */
*************** riscv_override_options_internal (struct
*** 12195,12200 ****
--- 12201,12222 ----
        opts->x_flag_cf_protection
        = (cf_protection_level) (opts->x_flag_cf_protection | CF_SET);
      }
+ 
+   int queue_depth = 0;
+   switch (cpu->tune_param->autoprefetcher_model)
+     {
+       case riscv_tune_param::AUTOPREFETCHER_OFF:
+        queue_depth = -1;
+        break;
+       case riscv_tune_param::AUTOPREFETCHER_WEAK:
+        queue_depth = 0;
+        break;
+       default:
+        gcc_unreachable ();
+     }
+ 
+   SET_OPTION_IF_UNSET (&global_options, &global_options_set,
+ 		       param_sched_autopref_queue_depth, queue_depth);
  }
  
  /* Implement TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE.  */
*************** riscv_scalar_mode_supported_p (scalar_mo
*** 13197,13202 ****
--- 13219,13239 ----
      return default_scalar_mode_supported_p (mode);
  }
  
+ /* Implement TARGET_OPTAB_SUPPORTED_P.  */
+ 
+ static bool
+ riscv_optab_supported_p (int op, machine_mode, machine_mode result_mode,
+ 			 optimization_type opt_type)
+ {
+   /* The second CRC optab mode is the result mode.  The CLMUL expansion
+      requires room for a quotient wider than the CRC value itself.  */
+   if (op == crc_rev_optab && opt_type != OPTIMIZE_FOR_SPEED)
+     return ((TARGET_ZBKC || TARGET_ZBC || TARGET_ZVBC)
+ 	    && result_mode < word_mode);
+ 
+   return true;
+ }
+ 
  /* Implement TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P - return TRUE
     if MODE is HFmode or BFmode, and punt to the generic implementation
     otherwise.  */
*************** riscv_memtag_tag_bitsize ()
*** 16859,16864 ****
--- 16896,16904 ----
  #undef TARGET_SCALAR_MODE_SUPPORTED_P
  #define TARGET_SCALAR_MODE_SUPPORTED_P riscv_scalar_mode_supported_p
  
+ #undef TARGET_OPTAB_SUPPORTED_P
+ #define TARGET_OPTAB_SUPPORTED_P riscv_optab_supported_p
+ 
  #undef TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P
  #define TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P                                \
    riscv_libgcc_floating_mode_supported_p
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/riscv.md gcc-17-20260823/gcc/config/riscv/riscv.md
*** gcc-17-20260816/gcc/config/riscv/riscv.md	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/config/riscv/riscv.md	Sun Aug 23 22:32:07 2026
***************
*** 5375,5381 ****
--- 5375,5383 ----
  	 (match_operand:DI 5 "const_int_operand")))
     (clobber (match_operand:DI 6 "register_operand"))]
    "(TARGET_64BIT
+     && INTVAL (operands[3]) == 0
      && INTVAL (operands[2]) + INTVAL (operands[4]) == 32
+     && sext_hwi (INTVAL (operands[5]), 32) == INTVAL (operands[5])
      && SMALL_OPERAND (INTVAL (operands[5]) >> INTVAL (operands[4])))"
    [(set (match_dup 6) (and:DI (match_dup 1) (match_dup 5)))
     (set (match_dup 0) (sign_extend:DI (ashift:SI (match_dup 7) (match_dup 4))))]
diff -Nrcpad gcc-17-20260816/gcc/config/riscv/vector.md gcc-17-20260823/gcc/config/riscv/vector.md
*** gcc-17-20260816/gcc/config/riscv/vector.md	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/config/riscv/vector.md	Sun Aug 23 22:32:07 2026
***************
*** 4172,4194 ****
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar"
!   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
! 	     (match_operand 5 "vector_length_operand"              "  rvl,  rvl")
! 	     (match_operand 6 "const_int_operand"                  "    i,    i")
! 	     (match_operand 7 "const_int_operand"                  "    i,    i")
! 	     (match_operand 8 "const_int_operand"                  "    i,    i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (any_widen_binop:VWEXTI
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
  	    (any_extend:VWEXTI
  	      (vec_duplicate:<V_DOUBLE_TRUNC>
! 		(match_operand:<VSUBEL> 4 "reg_or_0_operand"       "   rJ,   rJ"))))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
    "TARGET_VECTOR"
    "vw<any_widen_binop:insn><any_extend:u>.vx\t%0,%3,%z4%p1"
    [(set_attr "type" "vi<widen_binop_insn_type>")
--- 4172,4194 ----
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar"
!   [(set (match_operand:VWEXTI 0 "register_operand"                 "=vr, vr, vd, vd")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"           "Wc1,Wc1, vm, vm")
! 	     (match_operand 5 "vector_length_operand"              "rvl,rvl,rvl,rvl")
! 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i")
! 	     (match_operand 8 "const_int_operand"                  "  i,  i,  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (any_widen_binop:VWEXTI
  	    (any_extend:VWEXTI
! 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "Wvr,Wvr,Wvr,Wvr"))
  	    (any_extend:VWEXTI
  	      (vec_duplicate:<V_DOUBLE_TRUNC>
! 		(match_operand:<VSUBEL> 4 "reg_or_0_operand"       " rJ, rJ, rJ, rJ"))))
! 	  (match_operand:VWEXTI 2 "vector_merge_operand"           " vu,  0, vu,  0")))]
    "TARGET_VECTOR"
    "vw<any_widen_binop:insn><any_extend:u>.vx\t%0,%3,%z4%p1"
    [(set_attr "type" "vi<widen_binop_insn_type>")
***************
*** 6120,6142 ****
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_widen_mul_plussu<mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
! 	     (match_operand 5 "vector_length_operand"                "  rvl")
! 	     (match_operand 6 "const_int_operand"                    "    i")
! 	     (match_operand 7 "const_int_operand"                    "    i")
! 	     (match_operand 8 "const_int_operand"                    "    i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (plus:VWEXTI
  	    (mult:VWEXTI
  	      (sign_extend:VWEXTI
! 	        (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr"))
  	      (zero_extend:VWEXTI
! 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
! 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
  	  (match_dup 2)))]
    "TARGET_VECTOR"
    "vwmaccsu.vv\t%0,%3,%4%p1"
--- 6120,6142 ----
     (set_attr "mode" "<V_DOUBLE_TRUNC>")])
  
  (define_insn "@pred_widen_mul_plussu<mode>"
!   [(set (match_operand:VWEXTI 0 "register_operand"                   "=vr, vd")
  	(if_then_else:VWEXTI
  	  (unspec:<VM>
! 	    [(match_operand:<VM> 1 "vector_mask_operand"             "Wc1, vm")
! 	     (match_operand 5 "vector_length_operand"                "rvl,rvl")
! 	     (match_operand 6 "const_int_operand"                    "  i,  i")
! 	     (match_operand 7 "const_int_operand"                    "  i,  i")
! 	     (match_operand 8 "const_int_operand"                    "  i,  i")
  	     (reg:SI VL_REGNUM)
  	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
  	  (plus:VWEXTI
  	    (mult:VWEXTI
  	      (sign_extend:VWEXTI
! 	        (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "Wvr, Wvr"))
  	      (zero_extend:VWEXTI
! 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "Wvr, Wvr")))
! 	    (match_operand:VWEXTI 2 "register_operand"               "  0,   0"))
  	  (match_dup 2)))]
    "TARGET_VECTOR"
    "vwmaccsu.vv\t%0,%3,%4%p1"
diff -Nrcpad gcc-17-20260816/gcc/cp/ChangeLog gcc-17-20260823/gcc/cp/ChangeLog
*** gcc-17-20260816/gcc/cp/ChangeLog	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/ChangeLog	Sun Aug 23 22:32:07 2026
***************
*** 1,3 ****
--- 1,103 ----
+ 2026-08-22  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124888
+ 	* pt.cc (tsubst_expr): Pass type to {get,build}_typeid.
+ 	* rtti.cc (build_typeid, get_typeid): Take it.
+ 	(type_info_ptr_type): Remove.
+ 	(get_tinfo_ptr): Take tinfo_ptr_type instead of voidp.
+ 	(get_tinfo_ptr_dynamic): Likewise.
+ 	(get_void_tinfo_ptr): Pass const_ptr_type_node.
+ 	* cp-tree.h (build_typeid, get_typeid): Adjust.
+ 
+ 2026-08-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* contracts.cc: Replace use of attribute lists to hold
+ 	function contract specifiers with tree-vecs.
+ 	* contracts.h (CONTRACT_SOURCE_LOCATION_WRAPPER,
+ 	CONTRACT_SOURCE_LOCATION, CONTRACT_STATEMENT): Remove.
+ 	(finish_contract_specifier): Remove.
+ 	(build_contract_specifiers): Use tree-vec for contracts.
+ 	(contract_specifiers_concat): Likewise.
+ 	* decl.cc (start_decl): Use tree-vec for contracts.
+ 	(grokdeclarator): Likewise.
+ 	* module.cc (trees_out::fn_parms_init): Likewise.
+ 	* parser.cc (cp_parser_late_contracts): Likewise.
+ 	(cp_parser_function_contract_specifier_seq): Likewise.
+ 	* pt.cc (tsubst_contract_specifier): Likewise.
+ 	(tsubst_contract_specifiers): Likewise.
+ 
+ 2026-08-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	* typeck.cc (lookup_destructor): Pass complain to lookup_member.
+ 
+ 2026-08-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	* cp-tree.h (can_convert_eh): Remove declaration.
+ 	* except.cc (can_convert_eh): Remove.
+ 	(check_handlers_1): Use handler_match_for_exception_type instead.
+ 	* cp-lang.cc (LANG_HOOKS_EXCEPTION_MATCHES_TYPE_P): Likewise.
+ 	* call.cc (handler_match_for_exception_type): Allow type argument,
+ 	fix private base handling.
+ 
+ 2026-08-20  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124983
+ 	* search.cc (lookup_member): Skip access checks for declarations
+ 	from dependent scope.
+ 
+ 2026-08-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* reflect.cc (check_splice_expr): Reject splicing a direct base
+ 	class relationship without an object.
+ 
+ 2026-08-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126918
+ 	* constexpr.cc (class constexpr_global_ctx): Extend description of
+ 	caught_exceptions vector.
+ 	(cxx_eval_cxa_builtin_fn): When catching a pointer-to-member and
+ 	the current exception is nullptr or pointer-to-member with different
+ 	type, create a temporary, initialize it from the exception value and
+ 	return address of it.  Make sure to free these temporaries at
+ 	__cxa_end_catch time.
+ 	* call.cc (handler_match_for_exception_type): Allow NULLPTR_TYPE
+ 	exception type or different pointer-to-member type even for
+ 	TYPE_PTRMEMFUNC_P types, not just TYPE_PTRDATAMEM_P types.
+ 
+ 2026-08-19  Eczbek  <eczbek.void@gmail.com>
+ 
+ 	PR c++/70097
+ 	* decl.cc (grokdeclarator): If rqual is REF_QUAL_NONE, set it to
+ 	result of type_memfn_rqual before passing to build_memfn_type.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126867
+ 	* tree.cc (record_has_unique_obj_representations): Use
+ 	location_of (const_cast <tree> (t)) rather than
+ 	DECL_SOURCE_LOCATION (t).
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126752
+ 	* init.cc (build_vec_init): Assert TREE_PURPOSE of the
+ 	last *cleanup_flags element is rval rather than iterator.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126093
+ 	* mangle.cc (write_reflection): Call write_unqualified_name on
+ 	STRIP_TEMPLATE (arg) rather than just arg.
+ 
+ 2026-08-17  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	PR c++/126324
+ 	* constexpr.cc (cxx_eval_thunk_call): Preserve null pointer
+ 	results and adjust the result to the thunk's return type.
+ 	(cxx_eval_call_expression): Adjust covariant virtual-call results
+ 	to the static call type.
+ 
  2026-08-14  Patrick Palka  <ppalka@redhat.com>
  
  	* cp-gimplify.cc (cp_fold_r) <case INIT_EXPR>: Add trial
diff -Nrcpad gcc-17-20260816/gcc/cp/call.cc gcc-17-20260823/gcc/cp/call.cc
*** gcc-17-20260816/gcc/cp/call.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/call.cc	Sun Aug 23 22:32:07 2026
*************** involves_qualification_conversion_p (tre
*** 1734,1761 ****
     per [except.handle]/3.  */
  
  bool
! handler_match_for_exception_type (tree handler, tree except_type)
  {
!   tree handler_type = HANDLER_TYPE (handler);
    if (handler_type == NULL_TREE)
      return true; /* ... */
    if (same_type_ignoring_top_level_qualifiers_p (handler_type, except_type))
      return true;
    if (CLASS_TYPE_P (except_type) && CLASS_TYPE_P (handler_type))
!     {
!       base_kind b_kind;
!       tree binfo = lookup_base (except_type, handler_type, ba_check, &b_kind,
! 				tf_none);
!       if (binfo && binfo != error_mark_node)
! 	return true;
!     }
!   if (TYPE_PTR_P (handler_type) || TYPE_PTRDATAMEM_P (handler_type))
      {
        if (TREE_CODE (except_type) == NULLPTR_TYPE)
  	return true;
        if ((TYPE_PTR_P (handler_type) && TYPE_PTR_P (except_type))
  	  || (TYPE_PTRDATAMEM_P (handler_type)
! 	      && TYPE_PTRDATAMEM_P (except_type)))
  	{
  	  conversion *conv
  	    = standard_conversion (handler_type, except_type, NULL_TREE,
--- 1734,1758 ----
     per [except.handle]/3.  */
  
  bool
! handler_match_for_exception_type (tree handler_type, tree except_type)
  {
!   if (handler_type && TREE_CODE (handler_type) == HANDLER)
!     handler_type = TREE_TYPE (handler_type);
    if (handler_type == NULL_TREE)
      return true; /* ... */
    if (same_type_ignoring_top_level_qualifiers_p (handler_type, except_type))
      return true;
    if (CLASS_TYPE_P (except_type) && CLASS_TYPE_P (handler_type))
!     return publicly_uniquely_derived_p (handler_type, except_type);
!   if (TYPE_PTR_P (handler_type) || TYPE_PTRMEM_P (handler_type))
      {
        if (TREE_CODE (except_type) == NULLPTR_TYPE)
  	return true;
        if ((TYPE_PTR_P (handler_type) && TYPE_PTR_P (except_type))
  	  || (TYPE_PTRDATAMEM_P (handler_type)
! 	      && TYPE_PTRDATAMEM_P (except_type))
! 	  || (TYPE_PTRMEMFUNC_P (handler_type)
!  	      && TYPE_PTRMEMFUNC_P (except_type)))
  	{
  	  conversion *conv
  	    = standard_conversion (handler_type, except_type, NULL_TREE,
*************** handler_match_for_exception_type (tree h
*** 1766,1771 ****
--- 1763,1775 ----
  		switch (t->kind)
  		  {
  		  case ck_ptr:
+ 		    /* ...not involving conversions to pointers to private or
+ 		       protected or ambiguous classes, */
+ 		    if (CLASS_TYPE_P (TREE_TYPE (handler_type)))
+ 		      return (publicly_uniquely_derived_p
+ 			      (TREE_TYPE (handler_type),
+ 			       TREE_TYPE (except_type)));
+ 		    gcc_fallthrough ();
  		  case ck_fnptr:
  		  case ck_qual:
  		  case ck_identity:
diff -Nrcpad gcc-17-20260816/gcc/cp/constexpr.cc gcc-17-20260823/gcc/cp/constexpr.cc
*** gcc-17-20260816/gcc/cp/constexpr.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/constexpr.cc	Sun Aug 23 22:32:07 2026
*************** public:
*** 1193,1199 ****
    auto_vec<tree, 16> heap_vars;
    /* Vector of caught exceptions, including exceptions still not active at
       the start of a handler (those are immediately followed up by HANDLER_TYPE
!      until __cxa_begin_catch finishes).  */
    auto_vec<tree, 2> caught_exceptions;
    /* Cleanups that need to be evaluated at the end of CLEANUP_POINT_EXPR.  */
    vec<tree> *cleanups;
--- 1193,1203 ----
    auto_vec<tree, 16> heap_vars;
    /* Vector of caught exceptions, including exceptions still not active at
       the start of a handler (those are immediately followed up by HANDLER_TYPE
!      until __cxa_begin_catch finishes).  If __cxa_begin_catch or
!      __cxa_get_exception_ptr need to create temporaries, the VAR_DECL of the
!      exception object is wrapped in the vector into a TREE_LIST where
!      TREE_VALUE of it is the VAR_DECL of the exception object and TREE_PURPOSE
!      one of the temporaries, others chained through DECL_CHAIN.  */
    auto_vec<tree, 2> caught_exceptions;
    /* Cleanups that need to be evaluated at the end of CLEANUP_POINT_EXPR.  */
    vec<tree> *cleanups;
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 1943,1952 ****
  	     VAR_DECL after __cxa_begin_catch serves as the current exception
  	     and is then popped in __cxa_end_catch evaluation.  */
  	  tree handler_type = ctx->global->caught_exceptions.last ();
! 	  if (handler_type && VAR_P (handler_type))
  	    goto no_caught_exceptions;
  	  unsigned idx = ctx->global->caught_exceptions.length () - 2;
  	  arg = ctx->global->caught_exceptions[idx];
  	  gcc_assert (VAR_P (arg));
  	  if (kind == CXA_BEGIN_CATCH)
  	    {
--- 1947,1959 ----
  	     VAR_DECL after __cxa_begin_catch serves as the current exception
  	     and is then popped in __cxa_end_catch evaluation.  */
  	  tree handler_type = ctx->global->caught_exceptions.last ();
! 	  if (handler_type && (VAR_P (handler_type)
! 			       || TREE_CODE (handler_type) == TREE_LIST))
  	    goto no_caught_exceptions;
  	  unsigned idx = ctx->global->caught_exceptions.length () - 2;
  	  arg = ctx->global->caught_exceptions[idx];
+ 	  if (TREE_CODE (arg) == TREE_LIST)
+ 	    arg = TREE_VALUE (arg);
  	  gcc_assert (VAR_P (arg));
  	  if (kind == CXA_BEGIN_CATCH)
  	    {
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 1974,1985 ****
  	    {
  	      /* Used for catch of a non-pointer type.  */
  	      tree exc_type = strip_array_types (TREE_TYPE (arg));
! 	      tree exc_ptr_type = build_pointer_type (exc_type);
! 	      arg = build_fold_addr_expr_with_type (arg, exc_ptr_type);
! 	      if (CLASS_TYPE_P (handler_type))
  		{
! 		  tree ptr_type = build_pointer_type (handler_type);
! 		  arg = cp_convert (ptr_type, arg,
  				    ctx->quiet ? tf_none
  				    : tf_warning_or_error);
  		  if (arg == error_mark_node)
--- 1981,1994 ----
  	    {
  	      /* Used for catch of a non-pointer type.  */
  	      tree exc_type = strip_array_types (TREE_TYPE (arg));
! 	      if (TYPE_PTRMEM_P (handler_type)
! 		  && !same_type_ignoring_top_level_qualifiers_p
! 				(handler_type, exc_type))
  		{
! 		  if (TREE_CODE (TREE_TYPE (arg)) == ARRAY_TYPE)
! 		    arg = build4 (ARRAY_REF, TREE_TYPE (TREE_TYPE (arg)), arg,
! 				  size_zero_node, NULL_TREE, NULL_TREE);
! 		  arg = cp_convert (handler_type, arg,
  				    ctx->quiet ? tf_none
  				    : tf_warning_or_error);
  		  if (arg == error_mark_node)
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 1987,1992 ****
--- 1996,2037 ----
  		      *non_constant_p = true;
  		      return call;
  		    }
+ 		  tree var = build_decl (loc, VAR_DECL, heap_identifier,
+ 					 handler_type);
+ 		  DECL_ARTIFICIAL (var) = 1;
+ 		  ctx->global->heap_vars.safe_push (var);
+ 		  ctx->global->put_value (var, NULL_TREE);
+ 		  tree init = build2_loc (loc, INIT_EXPR, handler_type,
+ 					  var, arg);
+ 		  arg = ctx->global->caught_exceptions[idx];
+ 		  if (TREE_CODE (arg) == TREE_LIST)
+ 		    {
+ 		      DECL_CHAIN (var) = TREE_PURPOSE (arg);
+ 		      TREE_PURPOSE (arg) = var;
+ 		    }
+ 		  else
+ 		    ctx->global->caught_exceptions[idx]
+ 		      = build_tree_list (var, arg);
+ 		  arg = cp_build_addr_expr (var, tf_none);
+ 		  arg = build2_loc (loc, COMPOUND_EXPR, TREE_TYPE (arg),
+ 				    init, arg);
+ 		}
+ 	      else
+ 		{
+ 		  tree exc_ptr_type = build_pointer_type (exc_type);
+ 		  arg = build_fold_addr_expr_with_type (arg, exc_ptr_type);
+ 		  if (CLASS_TYPE_P (handler_type))
+ 		    {
+ 		      tree ptr_type = build_pointer_type (handler_type);
+ 		      arg = cp_convert (ptr_type, arg,
+ 					ctx->quiet ? tf_none
+ 					: tf_warning_or_error);
+ 		      if (arg == error_mark_node)
+ 			{
+ 			  *non_constant_p = true;
+ 			  return call;
+ 			}
+ 		    }
  		}
  	    }
  	  return cxx_eval_constant_expression (ctx, arg, vc_prvalue,
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2070,2077 ****
        else
  	{
  	  arg = ctx->global->caught_exceptions.pop ();
! 	  if (arg == NULL_TREE || !VAR_P (arg))
  	    goto no_active_exc;
  	free_except:
  	  DECL_EXCEPTION_REFCOUNT (arg)
  	    = size_binop (MINUS_EXPR, DECL_EXCEPTION_REFCOUNT (arg),
--- 2115,2134 ----
        else
  	{
  	  arg = ctx->global->caught_exceptions.pop ();
! 	  if (arg == NULL_TREE
! 	      || (!VAR_P (arg) && TREE_CODE (arg) != TREE_LIST))
  	    goto no_active_exc;
+ 	  if (TREE_CODE (arg) == TREE_LIST)
+ 	    {
+ 	      for (tree aux = TREE_PURPOSE (arg); aux; aux = DECL_CHAIN (aux))
+ 		{
+ 		  DECL_NAME (aux) = heap_deleted_identifier;
+ 		  ctx->global->destroy_value (aux);
+ 		  ctx->global->heap_dealloc_count++;
+ 		}
+ 	      arg = TREE_VALUE (arg);
+ 	    }
+ 	  DECL_CHAIN (arg) = NULL_TREE;
  	free_except:
  	  DECL_EXCEPTION_REFCOUNT (arg)
  	    = size_binop (MINUS_EXPR, DECL_EXCEPTION_REFCOUNT (arg),
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2107,2113 ****
  	goto invalid_nargs;
        unsigned idx;
        FOR_EACH_VEC_ELT_REVERSE (ctx->global->caught_exceptions, idx, arg)
! 	if (arg == NULL_TREE || !VAR_P (arg))
  	  --idx;
  	else
  	  break;
--- 2164,2170 ----
  	goto invalid_nargs;
        unsigned idx;
        FOR_EACH_VEC_ELT_REVERSE (ctx->global->caught_exceptions, idx, arg)
! 	if (arg == NULL_TREE || (!VAR_P (arg) && TREE_CODE (arg) != TREE_LIST))
  	  --idx;
  	else
  	  break;
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2119,2124 ****
--- 2176,2183 ----
  	  *non_constant_p = true;
  	  return call;
  	}
+       if (TREE_CODE (arg) == TREE_LIST)
+ 	arg = TREE_VALUE (arg);
        DECL_EXCEPTION_REFCOUNT (arg)
  	= size_binop (PLUS_EXPR, DECL_EXCEPTION_REFCOUNT (arg), size_one_node);
        ++ctx->global->uncaught_exceptions;
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2234,2240 ****
  	      return call;
  	    }
  	  FOR_EACH_VEC_ELT_REVERSE (ctx->global->caught_exceptions, idx, arg)
! 	    if (arg == NULL_TREE || !VAR_P (arg))
  	      --idx;
  	    else
  	      break;
--- 2293,2300 ----
  	      return call;
  	    }
  	  FOR_EACH_VEC_ELT_REVERSE (ctx->global->caught_exceptions, idx, arg)
! 	    if (arg == NULL_TREE
! 		|| (!VAR_P (arg) && TREE_CODE (arg) != TREE_LIST))
  	      --idx;
  	    else
  	      break;
*************** cxx_eval_cxa_builtin_fn (const constexpr
*** 2253,2258 ****
--- 2313,2320 ----
  	    arg = build_zero_cst (TREE_TYPE (fld));
  	  else
  	    {
+ 	      if (TREE_CODE (arg) == TREE_LIST)
+ 		arg = TREE_VALUE (arg);
  	      DECL_EXCEPTION_REFCOUNT (arg)
  		= size_binop (PLUS_EXPR, DECL_EXCEPTION_REFCOUNT (arg),
  			      size_one_node);
*************** cxx_eval_thunk_call (const constexpr_ctx
*** 3908,3920 ****
        CALL_EXPR_ARG (new_call, 0) = this_arg;
      }
    else
!     /* Return-adjusting thunk.  */
!     new_call = build2 (POINTER_PLUS_EXPR, TREE_TYPE (new_call),
! 		       new_call, offset);
  
!   return cxx_eval_constant_expression (ctx, new_call, lval,
! 				       non_constant_p, overflow_p,
! 				       jump_target);
  }
  
  /* If OBJECT is of const class type, evaluate it to a CONSTRUCTOR and set
--- 3970,3998 ----
        CALL_EXPR_ARG (new_call, 0) = this_arg;
      }
    else
!     {
!       /* Return-adjusting thunk.  As in expand_thunk, adjust a pointer only
! 	 if it is non-null.  */
!       tree call = new_call;
!       if (TYPE_PTR_P (TREE_TYPE (call)))
! 	call = save_expr (call);
!       new_call = build2 (POINTER_PLUS_EXPR, TREE_TYPE (call), call, offset);
!       if (TYPE_PTR_P (TREE_TYPE (call)))
! 	new_call = build_if_nonnull (call, new_call, tf_none);
!     }
  
!   tree result = cxx_eval_constant_expression (ctx, new_call, lval,
! 					       non_constant_p, overflow_p,
! 					       jump_target);
!   if (!*non_constant_p
!       && !*overflow_p
!       && !*jump_target
!       && result != void_node
!       && INDIRECT_TYPE_P (TREE_TYPE (t))
!       && !(same_type_ignoring_top_level_qualifiers_p
! 	   (TREE_TYPE (result), TREE_TYPE (t))))
!     result = adjust_temp_type (TREE_TYPE (t), result);
!   return result;
  }
  
  /* If OBJECT is of const class type, evaluate it to a CONSTRUCTOR and set
*************** cxx_eval_call_expression (const constexp
*** 4746,4751 ****
--- 4824,4845 ----
      clear_no_implicit_zero (result);
  
    pop_cx_call_context ();
+ 
+   /* A virtual call with a zero-offset covariant return needs no thunk, so
+      constant evaluation can evaluate the final overrider directly.  The
+      result then has the overrider's return type rather than the static type
+      of the call.  Adjust after caching so a direct call can reuse the result
+      with its original type.  */
+   if (!*non_constant_p
+       && !*overflow_p
+       && !*jump_target
+       && DECL_VIRTUAL_P (fun)
+       && result != void_node
+       && INDIRECT_TYPE_P (TREE_TYPE (t))
+       && !(same_type_ignoring_top_level_qualifiers_p
+ 	   (TREE_TYPE (result), TREE_TYPE (t))))
+     result = adjust_temp_type (TREE_TYPE (t), result);
+ 
    return result;
  }
  
diff -Nrcpad gcc-17-20260816/gcc/cp/contracts.cc gcc-17-20260823/gcc/cp/contracts.cc
*** gcc-17-20260816/gcc/cp/contracts.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/contracts.cc	Sun Aug 23 22:32:07 2026
*************** contract_valid_p (tree contract)
*** 161,174 ****
    return CONTRACT_CONDITION (contract) != error_mark_node;
  }
  
- /* True if the contract specifier is valid.  */
- 
- static bool
- contract_specifier_valid_p (tree contract)
- {
-   return contract_valid_p (TREE_VALUE (TREE_VALUE (contract)));
- }
- 
  /* Compare the contract conditions of OLD_CONTRACT and NEW_CONTRACT.
     Returns false if the conditions are equivalent, and true otherwise.  */
  
--- 161,166 ----
*************** match_contract_specifiers (location_t ol
*** 224,264 ****
    if (!old_contracts || !new_contracts)
      return true;
  
!   /* Compare each contract in turn.  */
!   while (old_contracts && new_contracts)
!     {
!       /* If either contract is ill-formed, skip the rest of the comparison,
! 	 since we've already diagnosed an error.  */
!       if (!contract_specifier_valid_p (new_contracts)
! 	  || !contract_specifier_valid_p (old_contracts))
! 	return false;
! 
!       if (mismatched_contracts_p (CONTRACT_STATEMENT (old_contracts),
! 				  CONTRACT_STATEMENT (new_contracts)))
! 	return false;
!       old_contracts = TREE_CHAIN (old_contracts);
!       new_contracts = TREE_CHAIN (new_contracts);
!     }
  
!   /* If we didn't compare all specifiers, the contracts don't match.  */
!   if (old_contracts || new_contracts)
      {
        auto_diagnostic_group d;
        error_at (newloc,
  		"declaration has a different number of contracts than "
  		"previously declared");
        inform (oldloc,
! 	      new_contracts
  	      ? "previous declaration with fewer contracts here"
  	      : "previous declaration with more contracts here");
        return false;
      }
  
    return true;
  }
  
! /* Return true if CONTRACT is checked or assumed under the current build
!    configuration. */
  
  static bool
  contract_active_p (tree contract)
--- 216,258 ----
    if (!old_contracts || !new_contracts)
      return true;
  
!   int old_len = TREE_VEC_LENGTH (old_contracts);
!   int new_len = TREE_VEC_LENGTH (new_contracts);
  
!   /* If we don't have the same number, the contracts don't match.  */
!   if (old_len != new_len)
      {
        auto_diagnostic_group d;
        error_at (newloc,
  		"declaration has a different number of contracts than "
  		"previously declared");
        inform (oldloc,
! 	      new_len > old_len
  	      ? "previous declaration with fewer contracts here"
  	      : "previous declaration with more contracts here");
        return false;
      }
  
+   /* Compare each contract in turn.  */
+   for (int ix = 0; ix < MIN (old_len, new_len); ix++)
+     {
+       tree old_contract = TREE_VEC_ELT (old_contracts, ix);
+       tree new_contract = TREE_VEC_ELT (new_contracts, ix);
+ 
+       /* If either contract is ill-formed, skip the rest of the comparison,
+ 	 since we've already diagnosed an error.  */
+       if (!contract_valid_p (new_contract) || !contract_valid_p (old_contract))
+ 	return false;
+ 
+       if (mismatched_contracts_p (old_contract, new_contract))
+ 	return false;
+     }
+ 
+ 
    return true;
  }
  
! /* Return true if CONTRACT is checked under the current semantic.  */
  
  static bool
  contract_active_p (tree contract)
*************** contract_active_p (tree contract)
*** 266,284 ****
    return get_evaluation_semantic (contract) != CES_IGNORE;
  }
  
! /* True if FNDECL has any checked or assumed contracts whose TREE_CODE is
     C.  */
  
  static bool
  has_active_contract_condition (tree fndecl, tree_code c)
  {
!   tree as = get_fn_contract_specifiers (fndecl);
!   for (; as != NULL_TREE; as = TREE_CHAIN (as))
!     {
!       tree contract = TREE_VALUE (TREE_VALUE (as));
!       if (TREE_CODE (contract) == c && contract_active_p (contract))
! 	return true;
!     }
    return false;
  }
  
--- 260,294 ----
    return get_evaluation_semantic (contract) != CES_IGNORE;
  }
  
! /* Return true if any contract of FNDECL is checked under the
!    current semantic.  */
! 
! static bool
! contract_any_active_p (tree fndecl)
! {
!   tree contracts = get_fn_contract_specifiers (fndecl);
!   if (!contracts)
!     return false;
! 
!   for (tree contract : tree_vec_range (contracts))
!     if (contract_active_p (contract))
!       return true;
!   return false;
! }
! 
! /* True if FNDECL has any checked contracts whose TREE_CODE is
     C.  */
  
  static bool
  has_active_contract_condition (tree fndecl, tree_code c)
  {
!   tree contracts = get_fn_contract_specifiers (fndecl);
!   if (!contracts)
!     return false;
! 
!   for (tree contract : tree_vec_range (contracts))
!     if (TREE_CODE (contract) == c && contract_active_p (contract))
!       return true;
    return false;
  }
  
*************** has_active_postconditions (tree fndecl)
*** 298,323 ****
    return has_active_contract_condition (fndecl, POSTCONDITION_STMT);
  }
  
- /* Return true if any contract in the CONTRACT list is checked or assumed
-    under the current build configuration.  */
- 
- static bool
- contract_any_active_p (tree fndecl)
- {
-   tree as = get_fn_contract_specifiers (fndecl);
-   for (; as; as = TREE_CHAIN (as))
-     if (contract_active_p (TREE_VALUE (TREE_VALUE (as))))
-       return true;
-   return false;
- }
- 
  /* Return true if any contract in CONTRACTS is not yet parsed.  */
  
  bool
  contract_any_deferred_p (tree contracts)
  {
!   for (; contracts; contracts = TREE_CHAIN (contracts))
!     if (CONTRACT_CONDITION_DEFERRED_P (CONTRACT_STATEMENT (contracts)))
        return true;
    return false;
  }
--- 308,323 ----
    return has_active_contract_condition (fndecl, POSTCONDITION_STMT);
  }
  
  /* Return true if any contract in CONTRACTS is not yet parsed.  */
  
  bool
  contract_any_deferred_p (tree contracts)
  {
!   if (!contracts)
!     return false;
! 
!   for (tree contract : tree_vec_range (contracts))
!     if (CONTRACT_CONDITION_DEFERRED_P (contract))
        return true;
    return false;
  }
*************** get_evaluation_semantic (const_tree cont
*** 425,443 ****
    gcc_unreachable ();
  }
  
! /* Get location of the last contract in the CONTRACTS tree chain.  */
  
  static location_t
  get_contract_end_loc (tree contracts)
  {
!   tree last = NULL_TREE;
!   for (tree a = contracts; a; a = TREE_CHAIN (a))
!     last = a;
!   gcc_checking_assert (last);
!   last = CONTRACT_STATEMENT (last);
    return EXPR_LOCATION (last);
  }
  
  struct GTY(()) contract_decl
  {
    tree contract_specifiers;
--- 425,477 ----
    gcc_unreachable ();
  }
  
! /* Get location of the last contract in CONTRACTS.  */
  
  static location_t
  get_contract_end_loc (tree contracts)
  {
!   gcc_checking_assert (contracts && TREE_VEC_LENGTH (contracts) > 0);
!   tree last = TREE_VEC_ELT (contracts, TREE_VEC_LENGTH (contracts) - 1);
    return EXPR_LOCATION (last);
  }
  
+ /* Build the contract specifiers for a function from CONTRACTS, which are in
+    source order.  Returns NULL_TREE when there are none.  */
+ 
+ tree
+ build_contract_specifiers (vec<tree, va_gc> *contracts)
+ {
+   unsigned len = vec_safe_length (contracts);
+   if (!len)
+     return NULL_TREE;
+ 
+   tree specs = make_tree_vec (len);
+   for (unsigned ix = 0; ix < len; ix++)
+     TREE_VEC_ELT (specs, ix) = (*contracts)[ix];
+   return specs;
+ }
+ 
+ /* Append the contract specifiers in SECOND to those in FIRST, either of
+    which may be NULL_TREE.  Neither input is modified.  */
+ 
+ tree
+ contract_specifiers_concat (tree first, tree second)
+ {
+   if (!first)
+     return second;
+   if (!second)
+     return first;
+ 
+   int flen = TREE_VEC_LENGTH (first);
+   int slen = TREE_VEC_LENGTH (second);
+   tree specs = make_tree_vec (flen + slen);
+   for (int ix = 0; ix < flen; ix++)
+     TREE_VEC_ELT (specs, ix) = TREE_VEC_ELT (first, ix);
+   for (int ix = 0; ix < slen; ix++)
+     TREE_VEC_ELT (specs, flen + ix) = TREE_VEC_ELT (second, ix);
+   return specs;
+ }
+ 
  struct GTY(()) contract_decl
  {
    tree contract_specifiers;
*************** start_function_contracts (tree fndecl)
*** 1013,1052 ****
  
    /* Check that the postcondition result name, if any, does not shadow a
       function parameter.  */
!   for (tree ca = get_fn_contract_specifiers (fndecl); ca; ca = TREE_CHAIN (ca))
!     if (POSTCONDITION_P (CONTRACT_STATEMENT (ca)))
!       if (tree id = POSTCONDITION_IDENTIFIER (CONTRACT_STATEMENT (ca)))
! 	{
! 	  if (id == error_mark_node)
! 	    {
! 	      CONTRACT_CONDITION (CONTRACT_STATEMENT (ca)) = error_mark_node;
! 	      continue;
! 	    }
! 	  tree r_name = tree_strip_any_location_wrapper (id);
! 	  if (TREE_CODE (id) == PARM_DECL)
! 	    r_name = DECL_NAME (id);
! 	  gcc_checking_assert (r_name && TREE_CODE (r_name) == IDENTIFIER_NODE);
! 	  tree seen = lookup_name (r_name);
! 	  if (seen
! 	      && TREE_CODE (seen) == PARM_DECL
! 	      && DECL_CONTEXT (seen) == fndecl)
! 	    {
  		auto_diagnostic_group d;
  		location_t id_l = location_wrapper_p (id)
  				  ? EXPR_LOCATION (id)
  				  : DECL_SOURCE_LOCATION (id);
! 		location_t co_l = EXPR_LOCATION (CONTRACT_STATEMENT (ca));
  		if (id_l != UNKNOWN_LOCATION)
  		  co_l = make_location (id_l, co_l, co_l);
  		error_at (co_l, "contract postcondition result name shadows a"
  			  " function parameter");
  		inform (DECL_SOURCE_LOCATION (seen),
  			"parameter declared here");
! 		POSTCONDITION_IDENTIFIER (CONTRACT_STATEMENT (ca))
! 		  = error_mark_node;
! 		CONTRACT_CONDITION (CONTRACT_STATEMENT (ca)) = error_mark_node;
! 	    }
! 	}
  
    /* If we are expanding contract assertions inline then no need to declare
       the outline function decls.  */
--- 1047,1087 ----
  
    /* Check that the postcondition result name, if any, does not shadow a
       function parameter.  */
!   if (tree specs = get_fn_contract_specifiers (fndecl))
!     for (tree ca : tree_vec_range (specs))
!       if (POSTCONDITION_P (ca))
! 	if (tree id = POSTCONDITION_IDENTIFIER (ca))
! 	  {
! 	    if (id == error_mark_node)
! 	      {
! 		CONTRACT_CONDITION (ca) = error_mark_node;
! 		continue;
! 	      }
! 	    tree r_name = tree_strip_any_location_wrapper (id);
! 	    if (TREE_CODE (id) == PARM_DECL)
! 	      r_name = DECL_NAME (id);
! 	    gcc_checking_assert (r_name
! 				 && TREE_CODE (r_name) == IDENTIFIER_NODE);
! 	    tree seen = lookup_name (r_name);
! 	    if (seen
! 		&& TREE_CODE (seen) == PARM_DECL
! 		&& DECL_CONTEXT (seen) == fndecl)
! 	      {
  		auto_diagnostic_group d;
  		location_t id_l = location_wrapper_p (id)
  				  ? EXPR_LOCATION (id)
  				  : DECL_SOURCE_LOCATION (id);
! 		location_t co_l = EXPR_LOCATION (ca);
  		if (id_l != UNKNOWN_LOCATION)
  		  co_l = make_location (id_l, co_l, co_l);
  		error_at (co_l, "contract postcondition result name shadows a"
  			  " function parameter");
  		inform (DECL_SOURCE_LOCATION (seen),
  			"parameter declared here");
! 		POSTCONDITION_IDENTIFIER (ca) = error_mark_node;
! 		CONTRACT_CONDITION (ca) = error_mark_node;
! 	      }
! 	  }
  
    /* If we are expanding contract assertions inline then no need to declare
       the outline function decls.  */
*************** static tree
*** 1179,1198 ****
  copy_contracts_list (tree contracts, tree fndecl,
  		     contract_match_kind remap_kind = cmk_all)
  {
!   tree last = NULL_TREE, new_contracts = NULL_TREE;
!   for (; contracts; contracts = TREE_CHAIN (contracts))
      {
        if ((remap_kind == cmk_pre
! 	   && (TREE_CODE (CONTRACT_STATEMENT (contracts))
! 	       == POSTCONDITION_STMT))
  	  || (remap_kind == cmk_post
! 	      && (TREE_CODE (CONTRACT_STATEMENT (contracts))
! 		  == PRECONDITION_STMT)))
  	continue;
  
!       tree c = copy_node (contracts);
!       TREE_VALUE (c) = build_tree_list (TREE_PURPOSE (TREE_VALUE (c)),
! 					copy_node (CONTRACT_STATEMENT (c)));
  
        copy_body_data id;
        hash_map<tree, tree> decl_map;
--- 1214,1232 ----
  copy_contracts_list (tree contracts, tree fndecl,
  		     contract_match_kind remap_kind = cmk_all)
  {
!   if (!contracts)
!     return NULL_TREE;
! 
!   auto_vec<tree> copies (TREE_VEC_LENGTH (contracts));
!   for (tree contract : tree_vec_range (contracts))
      {
        if ((remap_kind == cmk_pre
! 	   && TREE_CODE (contract) == POSTCONDITION_STMT)
  	  || (remap_kind == cmk_post
! 	      && TREE_CODE (contract) == PRECONDITION_STMT))
  	continue;
  
!       tree c = copy_node (contract);
  
        copy_body_data id;
        hash_map<tree, tree> decl_map;
*************** copy_contracts_list (tree contracts, tre
*** 1219,1236 ****
  
        /* We're not inside any EH region.  */
        id.eh_lp_nr = 0;
!       walk_tree (&CONTRACT_CONDITION (CONTRACT_STATEMENT (c)),
! 				      copy_tree_body_r, &id, NULL);
! 
  
!       CONTRACT_COMMENT (CONTRACT_STATEMENT (c))
! 	= copy_node (CONTRACT_COMMENT (CONTRACT_STATEMENT (c)));
  
!       chainon (last, c);
!       last = c;
!       if (!new_contracts)
! 	new_contracts = c;
      }
    return new_contracts;
  }
  
--- 1253,1271 ----
  
        /* We're not inside any EH region.  */
        id.eh_lp_nr = 0;
!       walk_tree (&CONTRACT_CONDITION (c), copy_tree_body_r, &id, NULL);
  
!       CONTRACT_COMMENT (c) = copy_node (CONTRACT_COMMENT (c));
  
!       copies.quick_push (c);
      }
+ 
+   if (copies.is_empty ())
+     return NULL_TREE;
+ 
+   tree new_contracts = make_tree_vec (copies.length ());
+   for (unsigned ix = 0; ix < copies.length (); ix++)
+     TREE_VEC_ELT (new_contracts, ix) = copies[ix];
    return new_contracts;
  }
  
*************** emit_contract_statement (tree contract)
*** 1264,1282 ****
    return true;
  }
  
- /* Generate the statement for the given contract by adding the contract
-    statement to the current block. Returns the next contract in the chain.  */
- 
- static tree
- emit_contract (tree contract)
- {
-   gcc_assert (TREE_CODE (contract) == TREE_LIST);
- 
-   emit_contract_statement (CONTRACT_STATEMENT (contract));
- 
-   return TREE_CHAIN (contract);
- }
- 
  /* Add a call or a direct evaluation of the pre checks.  */
  
  static void
--- 1299,1304 ----
*************** apply_preconditions (tree fndecl)
*** 1286,1294 ****
      add_pre_condition_fn_call (fndecl);
    else
    {
!     tree contract_copy = copy_contracts (fndecl, cmk_pre);
!     for (; contract_copy; contract_copy = TREE_CHAIN (contract_copy))
!       emit_contract (contract_copy);
    }
  }
  
--- 1308,1316 ----
      add_pre_condition_fn_call (fndecl);
    else
    {
!     if (tree contract_copy = copy_contracts (fndecl, cmk_pre))
!       for (tree contract : tree_vec_range (contract_copy))
! 	emit_contract_statement (contract);
    }
  }
  
*************** apply_postconditions (tree fndecl)
*** 1301,1309 ****
      add_post_condition_fn_call (fndecl);
    else
      {
!       tree contract_copy = copy_contracts (fndecl, cmk_post);
!       for (; contract_copy; contract_copy = TREE_CHAIN (contract_copy))
! 	emit_contract (contract_copy);
      }
  }
  
--- 1323,1331 ----
      add_post_condition_fn_call (fndecl);
    else
      {
!       if (tree contract_copy = copy_contracts (fndecl, cmk_post))
! 	for (tree contract : tree_vec_range (contract_copy))
! 	  emit_contract_statement (contract);
      }
  }
  
*************** tree
*** 1513,1537 ****
  copy_and_remap_contracts (tree dest, tree source,
  			  contract_match_kind remap_kind)
  {
-   tree last = NULL_TREE, contracts_copy= NULL_TREE;
    tree contracts = get_fn_contract_specifiers (source);
!   for (; contracts; contracts = TREE_CHAIN (contracts))
      {
        if ((remap_kind == cmk_pre
! 	   && (TREE_CODE (CONTRACT_STATEMENT (contracts))
! 	       == POSTCONDITION_STMT))
  	  || (remap_kind == cmk_post
! 	      && (TREE_CODE (CONTRACT_STATEMENT (contracts))
! 		  == PRECONDITION_STMT)))
  	continue;
  
!       /* The first part is copying of the legacy attribute layout - eventually
! 	 this will go away.  */
!       tree c = copy_node (contracts);
!       TREE_VALUE (c) = build_tree_list (TREE_PURPOSE (TREE_VALUE (c)),
! 					copy_node (CONTRACT_STATEMENT (c)));
!       /* This is the copied contract statement.  */
!       tree stmt = CONTRACT_STATEMENT (c);
  
        /* If we have an erroneous postcondition identifier, we also mark the
  	 condition as invalid so only need to check that.  */
--- 1535,1554 ----
  copy_and_remap_contracts (tree dest, tree source,
  			  contract_match_kind remap_kind)
  {
    tree contracts = get_fn_contract_specifiers (source);
!   if (!contracts)
!     return NULL_TREE;
! 
!   auto_vec<tree> copies (TREE_VEC_LENGTH (contracts));
!   for (tree contract : tree_vec_range (contracts))
      {
        if ((remap_kind == cmk_pre
! 	   && TREE_CODE (contract) == POSTCONDITION_STMT)
  	  || (remap_kind == cmk_post
! 	      && TREE_CODE (contract) == PRECONDITION_STMT))
  	continue;
  
!       tree stmt = copy_node (contract);
  
        /* If we have an erroneous postcondition identifier, we also mark the
  	 condition as invalid so only need to check that.  */
*************** copy_and_remap_contracts (tree dest, tre
*** 1550,1572 ****
        if (CONTRACT_COMMENT (stmt) != error_mark_node)
  	CONTRACT_COMMENT (stmt) = copy_node (CONTRACT_COMMENT (stmt));
  
!       chainon (last, c);
!       last = c;
!       if (!contracts_copy)
! 	contracts_copy = c;
      }
  
    return contracts_copy;
  }
  
! /* Set the (maybe) parsed contract specifier LIST for DECL.  */
  
  void
! set_fn_contract_specifiers (tree decl, tree list)
  {
    if (!decl || error_operand_p (decl))
      return;
  
    bool existed = false;
    contract_decl& rd
      = hash_map_safe_get_or_insert<hm_ggc> (contract_decl_map, decl, &existed);
--- 1567,1596 ----
        if (CONTRACT_COMMENT (stmt) != error_mark_node)
  	CONTRACT_COMMENT (stmt) = copy_node (CONTRACT_COMMENT (stmt));
  
!       copies.quick_push (stmt);
      }
  
+   if (copies.is_empty ())
+     return NULL_TREE;
+ 
+   tree contracts_copy = make_tree_vec (copies.length ());
+   for (unsigned ix = 0; ix < copies.length (); ix++)
+     TREE_VEC_ELT (contracts_copy, ix) = copies[ix];
+ 
    return contracts_copy;
  }
  
! /* Set the (maybe) parsed contract specifiers CONTRACTS for DECL.
!    CONTRACTS is either  NULL_TREE or a TREE_VEC of contract statements.  */
  
  void
! set_fn_contract_specifiers (tree decl, tree contracts)
  {
    if (!decl || error_operand_p (decl))
      return;
  
+   gcc_checking_assert (!contracts || TREE_CODE (contracts) == TREE_VEC);
+ 
    bool existed = false;
    contract_decl& rd
      = hash_map_safe_get_or_insert<hm_ggc> (contract_decl_map, decl, &existed);
*************** set_fn_contract_specifiers (tree decl, t
*** 1577,1594 ****
  	 contracts used for the function.  */
        location_t decl_loc = DECL_SOURCE_LOCATION (decl);
        location_t cont_end = decl_loc;
!       if (list)
! 	cont_end = get_contract_end_loc (list);
        rd.note_loc = make_location (decl_loc, decl_loc, cont_end);
      }
!   rd.contract_specifiers = list;
  }
  
  /* Update the entry for DECL in the map of contract specifiers with the
!   contracts in LIST. */
  
  void
! update_fn_contract_specifiers (tree decl, tree list)
  {
    if (!decl || error_operand_p (decl))
      return;
--- 1601,1618 ----
  	 contracts used for the function.  */
        location_t decl_loc = DECL_SOURCE_LOCATION (decl);
        location_t cont_end = decl_loc;
!       if (contracts)
! 	cont_end = get_contract_end_loc (contracts);
        rd.note_loc = make_location (decl_loc, decl_loc, cont_end);
      }
!   rd.contract_specifiers = contracts;
  }
  
  /* Update the entry for DECL in the map of contract specifiers with the
!   contracts in CONTRACTS.  */
  
  void
! update_fn_contract_specifiers (tree decl, tree contracts)
  {
    if (!decl || error_operand_p (decl))
      return;
*************** update_fn_contract_specifiers (tree decl
*** 1599,1607 ****
    gcc_checking_assert (existed);
  
    /* We should only get here when we parse deferred contracts.  */
!   gcc_checking_assert (!contract_any_deferred_p (list));
  
!   rd.contract_specifiers = list;
  }
  
  /* When a decl is about to be removed, then we need to release its content and
--- 1623,1631 ----
    gcc_checking_assert (existed);
  
    /* We should only get here when we parse deferred contracts.  */
!   gcc_checking_assert (!contract_any_deferred_p (contracts));
  
!   rd.contract_specifiers = contracts;
  }
  
  /* When a decl is about to be removed, then we need to release its content and
*************** rebuild_postconditions (tree fndecl)
*** 1962,1970 ****
      return;
  
    tree contract_spec = get_fn_contract_specifiers (fndecl);
!   for (; contract_spec ; contract_spec = TREE_CHAIN (contract_spec))
      {
-       tree contract = TREE_VALUE (TREE_VALUE (contract_spec));
        if (TREE_CODE (contract) != POSTCONDITION_STMT)
  	continue;
        tree condition = CONTRACT_CONDITION (contract);
--- 1986,1996 ----
      return;
  
    tree contract_spec = get_fn_contract_specifiers (fndecl);
!   if (!contract_spec)
!     return;
! 
!   for (tree contract : tree_vec_range (contract_spec))
      {
        if (TREE_CODE (contract) != POSTCONDITION_STMT)
  	continue;
        tree condition = CONTRACT_CONDITION (contract);
*************** grok_contract (tree contract_spec, tree
*** 2115,2141 ****
    return contract;
  }
  
- /* Build the contract specifier where IDENTIFIER is one of 'pre',
-    'post' or 'assert' and CONTRACT is the underlying statement.  */
- 
- tree
- finish_contract_specifier (tree identifier, tree contract)
- {
-   if (contract == error_mark_node)
-     return error_mark_node;
- 
-   tree contract_spec = build_tree_list (build_tree_list (NULL_TREE, identifier),
- 					build_tree_list (NULL_TREE, contract));
- 
-   /* Mark the contract as dependent if the condition is dependent.  */
-   tree condition = CONTRACT_CONDITION (contract);
-   if (TREE_CODE (condition) != DEFERRED_PARSE
-       && value_dependent_expression_p (condition))
-     ATTR_IS_DEPENDENT (contract_spec) = true;
- 
-   return contract_spec;
- }
- 
  /* Update condition of a late-parsed contract and postcondition variable,
     if any.  */
  
--- 2141,2146 ----
*************** remap_and_emit_conditions (tree fn, tree
*** 2196,2212 ****
  {
    gcc_assert (code == PRECONDITION_STMT || code == POSTCONDITION_STMT);
    tree contract_spec = get_fn_contract_specifiers (fn);
!   for (; contract_spec; contract_spec = TREE_CHAIN (contract_spec))
!     {
!       tree contract = CONTRACT_STATEMENT (contract_spec);
!       if (TREE_CODE (contract) == code)
! 	{
! 	  contract = copy_node (contract);
! 	  if (CONTRACT_CONDITION (contract) != error_mark_node)
! 	    remap_contract (fn, condfn, contract, /*duplicate_p=*/false);
! 	  emit_contract_statement (contract);
! 	}
!     }
  }
  
  /* Finish up the pre & post function definitions for a guarded FNDECL,
--- 2201,2217 ----
  {
    gcc_assert (code == PRECONDITION_STMT || code == POSTCONDITION_STMT);
    tree contract_spec = get_fn_contract_specifiers (fn);
!   if (!contract_spec)
!     return;
! 
!   for (tree contract : tree_vec_range (contract_spec))
!     if (TREE_CODE (contract) == code)
!       {
! 	contract = copy_node (contract);
! 	if (CONTRACT_CONDITION (contract) != error_mark_node)
! 	  remap_contract (fn, condfn, contract, /*duplicate_p=*/false);
! 	emit_contract_statement (contract);
!       }
  }
  
  /* Finish up the pre & post function definitions for a guarded FNDECL,
diff -Nrcpad gcc-17-20260816/gcc/cp/contracts.h gcc-17-20260823/gcc/cp/contracts.h
*** gcc-17-20260816/gcc/cp/contracts.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/contracts.h	Sun Aug 23 22:32:07 2026
*************** enum detection_mode : uint16_t {
*** 83,104 ****
  #define POSTCONDITION_P(NODE)          \
    (TREE_CODE (NODE) == POSTCONDITION_STMT)
  
  /* True iff the FUNCTION_DECL NODE currently has any contracts.  */
  #define DECL_HAS_CONTRACTS_P(NODE) \
    (get_fn_contract_specifiers (NODE) != NULL_TREE)
  
- /* The wrapper of the original source location of a list of contracts.  */
- #define CONTRACT_SOURCE_LOCATION_WRAPPER(NODE) \
-   (TREE_PURPOSE (TREE_VALUE (NODE)))
- 
- /* The original source location of a list of contracts.  */
- #define CONTRACT_SOURCE_LOCATION(NODE) \
-   (EXPR_LOCATION (CONTRACT_SOURCE_LOCATION_WRAPPER (NODE)))
- 
- /* The actual code _STMT for a contract specifier.  */
- #define CONTRACT_STATEMENT(NODE) \
-   (TREE_VALUE (TREE_VALUE (NODE)))
- 
  /* The parsed condition of the contract.  */
  #define CONTRACT_CONDITION(NODE) \
    (TREE_OPERAND (CONTRACT_CHECK (NODE), 2))
--- 83,96 ----
  #define POSTCONDITION_P(NODE)          \
    (TREE_CODE (NODE) == POSTCONDITION_STMT)
  
+ /* The contract specifiers of a function are held in a TREE_VEC, each element
+    of which is a PRECONDITION_STMT or a POSTCONDITION_STMT.  A function with
+    no contracts has NULL_TREE rather than an empty vector.  */
+ 
  /* True iff the FUNCTION_DECL NODE currently has any contracts.  */
  #define DECL_HAS_CONTRACTS_P(NODE) \
    (get_fn_contract_specifiers (NODE) != NULL_TREE)
  
  /* The parsed condition of the contract.  */
  #define CONTRACT_CONDITION(NODE) \
    (TREE_OPERAND (CONTRACT_CHECK (NODE), 2))
*************** enum contract_match_kind
*** 157,163 ****
  extern void init_contracts			(void);
  
  extern tree grok_contract			(tree, tree, tree, cp_expr, location_t);
! extern tree finish_contract_specifier 		(tree, tree);
  extern tree finish_contract_condition		(cp_expr);
  extern void update_late_contract		(tree, tree, cp_expr);
  extern void check_redecl_contract		(tree, tree);
--- 149,156 ----
  extern void init_contracts			(void);
  
  extern tree grok_contract			(tree, tree, tree, cp_expr, location_t);
! extern tree build_contract_specifiers		(vec<tree, va_gc> *);
! extern tree contract_specifiers_concat		(tree, tree);
  extern tree finish_contract_condition		(cp_expr);
  extern void update_late_contract		(tree, tree, cp_expr);
  extern void check_redecl_contract		(tree, tree);
diff -Nrcpad gcc-17-20260816/gcc/cp/cp-lang.cc gcc-17-20260823/gcc/cp/cp-lang.cc
*** gcc-17-20260816/gcc/cp/cp-lang.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/cp-lang.cc	Sun Aug 23 22:32:07 2026
*************** static const char *cp_get_sarif_source_l
*** 79,85 ****
  #undef LANG_HOOKS_EH_RUNTIME_TYPE
  #define LANG_HOOKS_EH_RUNTIME_TYPE build_eh_type_type
  #undef LANG_HOOKS_EXCEPTION_MATCHES_TYPE_P
! #define LANG_HOOKS_EXCEPTION_MATCHES_TYPE_P can_convert_eh
  #undef LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE
  #define LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE cxx_enum_underlying_base_type
  #undef LANG_HOOKS_PREPROCESS_MAIN_FILE
--- 79,85 ----
  #undef LANG_HOOKS_EH_RUNTIME_TYPE
  #define LANG_HOOKS_EH_RUNTIME_TYPE build_eh_type_type
  #undef LANG_HOOKS_EXCEPTION_MATCHES_TYPE_P
! #define LANG_HOOKS_EXCEPTION_MATCHES_TYPE_P handler_match_for_exception_type
  #undef LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE
  #define LANG_HOOKS_ENUM_UNDERLYING_BASE_TYPE cxx_enum_underlying_base_type
  #undef LANG_HOOKS_PREPROCESS_MAIN_FILE
diff -Nrcpad gcc-17-20260816/gcc/cp/cp-tree.h gcc-17-20260823/gcc/cp/cp-tree.h
*** gcc-17-20260816/gcc/cp/cp-tree.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/cp-tree.h	Sun Aug 23 22:32:07 2026
*************** extern tree build_exc_ptr			(void);
*** 7872,7878 ****
  extern tree build_throw				(location_t, tree,
  						 tsubst_flags_t);
  extern int nothrow_libfn_p			(const_tree);
- extern bool can_convert_eh			(tree, tree);
  extern void check_handlers			(tree);
  extern tree finish_noexcept_expr		(tree, tsubst_flags_t);
  extern bool expr_noexcept_p			(tree, tsubst_flags_t);
--- 7872,7877 ----
*************** extern tree convert_reflect_constant_arg
*** 8414,8423 ****
  extern GTY(()) vec<tree, va_gc> *unemitted_tinfo_decls;
  
  extern void init_rtti_processing		(void);
! extern tree build_typeid			(tree, tsubst_flags_t);
  extern tree get_tinfo_decl_direct	        (tree, tree, int);
  extern tree get_tinfo_decl			(tree);
! extern tree get_typeid				(tree, tsubst_flags_t);
  extern tree build_headof			(tree);
  extern tree build_dynamic_cast			(location_t, tree, tree,
  						 tsubst_flags_t);
--- 8413,8422 ----
  extern GTY(()) vec<tree, va_gc> *unemitted_tinfo_decls;
  
  extern void init_rtti_processing		(void);
! extern tree build_typeid			(tree, tsubst_flags_t, tree = NULL_TREE);
  extern tree get_tinfo_decl_direct	        (tree, tree, int);
  extern tree get_tinfo_decl			(tree);
! extern tree get_typeid				(tree, tsubst_flags_t, tree = NULL_TREE);
  extern tree build_headof			(tree);
  extern tree build_dynamic_cast			(location_t, tree, tree,
  						 tsubst_flags_t);
diff -Nrcpad gcc-17-20260816/gcc/cp/decl.cc gcc-17-20260823/gcc/cp/decl.cc
*** gcc-17-20260816/gcc/cp/decl.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/decl.cc	Sun Aug 23 22:32:07 2026
*************** start_decl (const cp_declarator *declara
*** 6608,6622 ****
        && !processing_template_decl
        && DECL_RESULT (decl)
        && is_auto (TREE_TYPE (DECL_RESULT (decl))))
!     for (tree ca = get_fn_contract_specifiers (decl); ca; ca = TREE_CHAIN (ca))
!       if (POSTCONDITION_P (CONTRACT_STATEMENT (ca))
! 	  && POSTCONDITION_IDENTIFIER (CONTRACT_STATEMENT (ca)))
! 	{
! 	  error_at (DECL_SOURCE_LOCATION (decl),
! 		    "postconditions with deduced result name types must only"
! 		    " appear on function definitions");
! 	  return error_mark_node;
! 	}
    /* Save the DECL_INITIAL value in case it gets clobbered to assist
       with attribute validation.  */
    initial = DECL_INITIAL (decl);
--- 6608,6622 ----
        && !processing_template_decl
        && DECL_RESULT (decl)
        && is_auto (TREE_TYPE (DECL_RESULT (decl))))
!     if (tree specs = get_fn_contract_specifiers (decl))
!       for (tree ca : tree_vec_range (specs))
! 	if (POSTCONDITION_P (ca) && POSTCONDITION_IDENTIFIER (ca))
! 	  {
! 	    error_at (DECL_SOURCE_LOCATION (decl),
! 		      "postconditions with deduced result name types must only"
! 		      " appear on function definitions");
! 	    return error_mark_node;
! 	  }
    /* Save the DECL_INITIAL value in case it gets clobbered to assist
       with attribute validation.  */
    initial = DECL_INITIAL (decl);
*************** grokdeclarator (const cp_declarator *dec
*** 15741,15751 ****
  		  returned_attrs = attr_chainon (returned_attrs, att);
  	      }
  
! 	    /* Actually apply the contract attributes to the declaration.  */
  	    if (flag_contracts)
  	      contract_specifiers
! 		= attr_chainon (contract_specifiers,
! 				declarator->u.function.contract_specifiers);
  
  	    if (attrs)
  	      /* [dcl.fct]/2:
--- 15741,15752 ----
  		  returned_attrs = attr_chainon (returned_attrs, att);
  	      }
  
! 	    /* Actually apply the contract specifiers to the declaration.  */
  	    if (flag_contracts)
  	      contract_specifiers
! 		= contract_specifiers_concat
! 		    (contract_specifiers,
! 		     declarator->u.function.contract_specifiers);
  
  	    if (attrs)
  	      /* [dcl.fct]/2:
*************** grokdeclarator (const cp_declarator *dec
*** 15805,15810 ****
--- 15806,15813 ----
  	      && TREE_CODE (type) == FUNCTION_TYPE)
  	    {
  	      memfn_quals |= type_memfn_quals (type);
+ 	      if (rqual == REF_QUAL_NONE)
+ 		rqual = type_memfn_rqual (type);
  	      type = build_memfn_type (type,
  				       declarator->u.pointer.class_type,
  				       memfn_quals,
diff -Nrcpad gcc-17-20260816/gcc/cp/except.cc gcc-17-20260823/gcc/cp/except.cc
*** gcc-17-20260816/gcc/cp/except.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/except.cc	Sun Aug 23 22:32:07 2026
*************** nothrow_libfn_p (const_tree fn)
*** 970,1011 ****
      }
  }
  
- /* Returns nonzero if an exception of type FROM will be caught by a
-    handler for type TO, as per [except.handle].  */
- 
- bool
- can_convert_eh (tree to, tree from)
- {
-   to = non_reference (to);
-   from = non_reference (from);
- 
-   if (same_type_ignoring_top_level_qualifiers_p (to, from))
-     return true;
- 
-   if (NULLPTR_TYPE_P (from) && TYPE_PTR_OR_PTRMEM_P (to))
-     return true;
- 
-   if (TYPE_PTR_P (to) && TYPE_PTR_P (from))
-     {
-       to = TREE_TYPE (to);
-       from = TREE_TYPE (from);
- 
-       if (! at_least_as_qualified_p (to, from))
- 	return false;
- 
-       if (VOID_TYPE_P (to))
- 	return true;
- 
-       /* Else fall through.  */
-     }
- 
-   if (CLASS_TYPE_P (to) && CLASS_TYPE_P (from)
-       && publicly_uniquely_derived_p (to, from))
-     return true;
- 
-   return false;
- }
- 
  /* Check whether any of the handlers in I are shadowed by another handler
     accepting TYPE.  Note that the shadowing may not be complete; even if
     an exception of type B would be caught by a handler for A, there could
--- 970,975 ----
*************** check_handlers_1 (tree master, tree_stmt
*** 1020,1026 ****
    for (; !tsi_end_p (i); tsi_next (&i))
      {
        tree handler = tsi_stmt (i);
!       if (TREE_TYPE (handler) && can_convert_eh (type, TREE_TYPE (handler)))
  	{
  	  auto_diagnostic_group d;
  	  if (warning_at (EXPR_LOCATION (handler), OPT_Wexceptions,
--- 984,991 ----
    for (; !tsi_end_p (i); tsi_next (&i))
      {
        tree handler = tsi_stmt (i);
!       if (TREE_TYPE (handler)
! 	  && handler_match_for_exception_type (type, TREE_TYPE (handler)))
  	{
  	  auto_diagnostic_group d;
  	  if (warning_at (EXPR_LOCATION (handler), OPT_Wexceptions,
diff -Nrcpad gcc-17-20260816/gcc/cp/init.cc gcc-17-20260823/gcc/cp/init.cc
*** gcc-17-20260816/gcc/cp/init.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/init.cc	Sun Aug 23 22:32:07 2026
*************** build_vec_init (tree base, tree maxindex
*** 5365,5371 ****
  	      && !vec_safe_is_empty (*cleanup_flags))
  	    {
  	      auto l = (*cleanup_flags)->last ();
! 	      gcc_assert (TREE_PURPOSE (l) == iterator);
  	      (*cleanup_flags)->pop ();
  	    }
  	  tree const_init = build_constructor (atype, const_vec);
--- 5365,5371 ----
  	      && !vec_safe_is_empty (*cleanup_flags))
  	    {
  	      auto l = (*cleanup_flags)->last ();
! 	      gcc_assert (TREE_PURPOSE (l) == rval);
  	      (*cleanup_flags)->pop ();
  	    }
  	  tree const_init = build_constructor (atype, const_vec);
diff -Nrcpad gcc-17-20260816/gcc/cp/mangle.cc gcc-17-20260823/gcc/cp/mangle.cc
*** gcc-17-20260816/gcc/cp/mangle.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/mangle.cc	Sun Aug 23 22:32:07 2026
*************** write_reflection (tree refl)
*** 4302,4308 ****
  	   || strcmp (prefix, "ns") == 0)
      {
        write_prefix (decl_mangling_context (arg));
!       write_unqualified_name (arg);
      }
    else if (strcmp (prefix, "ba") == 0)
      {
--- 4302,4308 ----
  	   || strcmp (prefix, "ns") == 0)
      {
        write_prefix (decl_mangling_context (arg));
!       write_unqualified_name (STRIP_TEMPLATE (arg));
      }
    else if (strcmp (prefix, "ba") == 0)
      {
diff -Nrcpad gcc-17-20260816/gcc/cp/module.cc gcc-17-20260823/gcc/cp/module.cc
*** gcc-17-20260816/gcc/cp/module.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/module.cc	Sun Aug 23 22:32:07 2026
*************** trees_out::fn_parms_init (tree fn)
*** 11363,11371 ****
      {
        /* We must walk contract specifiers so the dependency graph is
  	 complete.  */
!       tree contract = get_fn_contract_specifiers (fn);
!       for (; contract; contract = TREE_CHAIN (contract))
! 	tree_node (contract);
      }
  
    /* Write a reference to contracts pre/post functions, if any, to avoid
--- 11363,11371 ----
      {
        /* We must walk contract specifiers so the dependency graph is
  	 complete.  */
!       if (tree contracts = get_fn_contract_specifiers (fn))
! 	for (tree contract : tree_vec_range (contracts))
! 	  tree_node (contract);
      }
  
    /* Write a reference to contracts pre/post functions, if any, to avoid
diff -Nrcpad gcc-17-20260816/gcc/cp/parser.cc gcc-17-20260823/gcc/cp/parser.cc
*** gcc-17-20260816/gcc/cp/parser.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/parser.cc	Sun Aug 23 22:32:07 2026
*************** void
*** 33862,33888 ****
  cp_parser_late_contracts (cp_parser *parser, tree fndecl)
  {
  
!   tree new_contracts = NULL_TREE;
!   tree old_contracts = get_fn_contract_specifiers (fndecl);
  
!   if (old_contracts == NULL_TREE || !contract_any_deferred_p (old_contracts))
      return;
  
!   for (; old_contracts; old_contracts = TREE_CHAIN (old_contracts))
      {
-       tree contract = TREE_VALUE (TREE_VALUE (old_contracts));
- 
-       tree condition = CONTRACT_CONDITION (contract);
        /* All contracts should be deferred if one of them is deferred */
!       gcc_checking_assert (TREE_CODE (condition) == DEFERRED_PARSE);
  
        cp_parser_late_contract_condition (parser, fndecl, contract);
-       tree list = tree_cons (TREE_PURPOSE (old_contracts),
- 			     TREE_VALUE (old_contracts), NULL_TREE);
-       new_contracts = chainon (new_contracts, list);
      }
  
!   update_fn_contract_specifiers (fndecl, new_contracts);
  }
  
  static tree
--- 33862,33883 ----
  cp_parser_late_contracts (cp_parser *parser, tree fndecl)
  {
  
!   tree contracts = get_fn_contract_specifiers (fndecl);
  
!   if (contracts == NULL_TREE || !contract_any_deferred_p (contracts))
      return;
  
!   /* The conditions are updated in place; the statements are shared with any
!      other declaration that refers to them, exactly as before.  */
!   for (tree contract : tree_vec_range (contracts))
      {
        /* All contracts should be deferred if one of them is deferred */
!       gcc_checking_assert (CONTRACT_CONDITION_DEFERRED_P (contract));
  
        cp_parser_late_contract_condition (parser, fndecl, contract);
      }
  
!   update_fn_contract_specifiers (fndecl, contracts);
  }
  
  static tree
*************** cp_parser_function_contract_specifier (c
*** 34140,34146 ****
  static tree
  cp_parser_function_contract_specifier_seq (cp_parser *parser)
  {
!   tree contract_specs = NULL_TREE;
  
    while (true)
      {
--- 34135,34141 ----
  static tree
  cp_parser_function_contract_specifier_seq (cp_parser *parser)
  {
!   releasing_vec contract_specs;
  
    while (true)
      {
*************** cp_parser_function_contract_specifier_se
*** 34154,34172 ****
        if (contract_spec == error_mark_node)
  	continue;
  
!       /* For now, turn this into an attribute.  */
!       tree contract_name = TREE_CODE (contract_spec) == PRECONDITION_STMT
! 			   ? get_identifier ("pre")
! 			   : get_identifier ("post");
!       contract_spec = finish_contract_specifier (contract_name, contract_spec);
!       /* Arrange to build the list in the correct order.  */
!       if (contract_specs)
! 	contract_specs = attr_chainon (contract_specs, contract_spec);
!       else
! 	contract_specs = contract_spec;
      }
  
!     return contract_specs;
  }
  
  /* Parse a standard C++-11 attribute specifier.
--- 34149,34159 ----
        if (contract_spec == error_mark_node)
  	continue;
  
!       /* The specifiers are collected in source order.  */
!       vec_safe_push (contract_specs, contract_spec);
      }
  
!   return build_contract_specifiers (contract_specs);
  }
  
  /* Parse a standard C++-11 attribute specifier.
diff -Nrcpad gcc-17-20260816/gcc/cp/pt.cc gcc-17-20260823/gcc/cp/pt.cc
*** gcc-17-20260816/gcc/cp/pt.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/pt.cc	Sun Aug 23 22:32:07 2026
*************** tsubst_contract (tree decl, tree t, tree
*** 12436,12445 ****
    return r;
  }
  
! /* Update T instantiating a contract specifier.  */
  
! static void
! tsubst_contract_specifier (tree decl, tree t, tree args,
  			   tsubst_flags_t complain, tree in_decl)
  {
    /* For non-specializations, adjust the current declaration to the most general
--- 12436,12446 ----
    return r;
  }
  
! /* Instantiate the contract specifier CONTRACT, returning the substituted
!    contract statement.  */
  
! static tree
! tsubst_contract_specifier (tree decl, tree contract, tree args,
  			   tsubst_flags_t complain, tree in_decl)
  {
    /* For non-specializations, adjust the current declaration to the most general
*************** tsubst_contract_specifier (tree decl, tr
*** 12452,12460 ****
    local_specialization_stack specs (lss_copy);
    register_parameter_specializations (in_decl, decl);
  
-   /* Get the contract to be instantiated.  */
-   tree contract = CONTRACT_STATEMENT (t);
- 
    /* Use the complete set of template arguments for instantiation. The
       contract may not have been instantiated and still refer to outer levels
       of template parameters.  */
--- 12453,12458 ----
*************** tsubst_contract_specifier (tree decl, tr
*** 12475,12502 ****
    current_class_ptr = save_ccp;
    current_class_ref = save_ccr;
  
!   /* Rebuild the attribute.  */
!   TREE_VALUE (t) = build_tree_list (NULL_TREE, contract);
  }
  
! /* For unsubstituted list of contracts in SPECIFIERS, instantiate contracts
!  for DECL and set the list as contracts for decl. Substitution creates a deep
!  copy of the contract.  */
  
  void
! tsubst_contract_specifiers (tree specfiers, tree decl, tree args,
  			    tsubst_flags_t complain, tree in_decl)
  {
!   tree subst_contract_list = NULL_TREE;
!   for (tree spec = specfiers; spec; spec = TREE_CHAIN (spec))
      {
!       tree nc = copy_node (spec);
!       tsubst_contract_specifier (decl, nc, args, complain, in_decl);
!       TREE_CHAIN (nc) = subst_contract_list;
!       subst_contract_list = nc;
      }
    if (flag_contracts)
!     set_fn_contract_specifiers (decl, nreverse (subst_contract_list));
  }
  
  /* Instantiate a single dependent attribute T (a TREE_LIST), and return either
--- 12473,12508 ----
    current_class_ptr = save_ccp;
    current_class_ref = save_ccr;
  
!   return contract;
  }
  
! /* For the unsubstituted contract specifiers SPECIFIERS, instantiate the
!  contracts for DECL and set them as the contracts for DECL.  Substitution
!  creates a deep copy of the contract.  */
  
  void
! tsubst_contract_specifiers (tree specifiers, tree decl, tree args,
  			    tsubst_flags_t complain, tree in_decl)
  {
!   if (!specifiers)
      {
!       if (flag_contracts)
! 	set_fn_contract_specifiers (decl, NULL_TREE);
!       return;
      }
+ 
+   /* SPECIFIERS may be shared with the pattern (see the copy in
+      tsubst_function_decl), so build a fresh vector rather than substituting
+      in place.  tsubst_contract () copies each statement it substitutes.  */
+   int len = TREE_VEC_LENGTH (specifiers);
+   tree subst_contracts = make_tree_vec (len);
+   for (int ix = 0; ix < len; ix++)
+     TREE_VEC_ELT (subst_contracts, ix)
+       = tsubst_contract_specifier (decl, TREE_VEC_ELT (specifiers, ix), args,
+ 				   complain, in_decl);
+ 
    if (flag_contracts)
!     set_fn_contract_specifiers (decl, subst_contracts);
  }
  
  /* Instantiate a single dependent attribute T (a TREE_LIST), and return either
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 23075,23081 ****
  	if (TYPE_P (operand_0))
  	  {
  	    operand_0 = tsubst (operand_0, args, complain, in_decl);
! 	    RETURN (get_typeid (operand_0, complain));
  	  }
  	else
  	  {
--- 23081,23087 ----
  	if (TYPE_P (operand_0))
  	  {
  	    operand_0 = tsubst (operand_0, args, complain, in_decl);
! 	    RETURN (get_typeid (operand_0, complain, TREE_TYPE (t)));
  	  }
  	else
  	  {
*************** tsubst_expr (tree t, tree args, tsubst_f
*** 23097,23103 ****
  	      operand = RECUR (operand_0);
  	    else
  	      operand = uneval;
! 	    RETURN (build_typeid (operand, complain));
  	  }
        }
  
--- 23103,23109 ----
  	      operand = RECUR (operand_0);
  	    else
  	      operand = uneval;
! 	    RETURN (build_typeid (operand, complain, TREE_TYPE (t)));
  	  }
        }
  
diff -Nrcpad gcc-17-20260816/gcc/cp/reflect.cc gcc-17-20260823/gcc/cp/reflect.cc
*** gcc-17-20260816/gcc/cp/reflect.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/reflect.cc	Sun Aug 23 22:32:07 2026
*************** check_splice_expr (location_t loc, locat
*** 9408,9413 ****
--- 9408,9423 ----
        return false;
      }
  
+   /* Like with NSDMs, a bare [:X:] designating a direct base class
+      relationship is ill-formed.  */
+   if (!member_access_p && TREE_CODE (t) == TREE_BINFO)
+     {
+       if (complain_p)
+ 	error_at (loc, "cannot use a base class in a splice expression "
+ 		  "without an object");
+       return false;
+     }
+ 
    if (template_p)
      {
        /* [expr.prim.splice] For a splice-expression of the form template
diff -Nrcpad gcc-17-20260816/gcc/cp/rtti.cc gcc-17-20260823/gcc/cp/rtti.cc
*** gcc-17-20260816/gcc/cp/rtti.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/rtti.cc	Sun Aug 23 22:32:07 2026
*************** throw_bad_typeid (void)
*** 222,252 ****
    return build_cxx_call (fn, 0, NULL, tf_warning_or_error);
  }
  
- /* const type_info*.  */
- 
- inline tree
- type_info_ptr_type ()
- {
-   return build_pointer_type (const_type_info_type_node);
- }
- 
  /* Return a pointer to a type_info object describing TYPE, suitably
     cast to the language defined type (for typeid) or void (for building
     up the descriptors).  */
  
  static tree
! get_tinfo_ptr (tree type, bool voidp = false)
  {
    tree decl = get_tinfo_decl (type);
    mark_used (decl);
  
!   tree ptype = voidp ? const_ptr_type_node : type_info_ptr_type ();
!   return build_nop (ptype, build_address (decl));
  }
  static inline tree
  get_void_tinfo_ptr (tree type)
  {
!   return get_tinfo_ptr (type, true);
  }
  
  /* Return an lvalue expression whose type is "const std::type_info"
--- 222,243 ----
    return build_cxx_call (fn, 0, NULL, tf_warning_or_error);
  }
  
  /* Return a pointer to a type_info object describing TYPE, suitably
     cast to the language defined type (for typeid) or void (for building
     up the descriptors).  */
  
  static tree
! get_tinfo_ptr (tree type, tree tinfo_ptr_type)
  {
    tree decl = get_tinfo_decl (type);
    mark_used (decl);
  
!   return build_nop (tinfo_ptr_type, build_address (decl));
  }
  static inline tree
  get_void_tinfo_ptr (tree type)
  {
!   return get_tinfo_ptr (type, const_ptr_type_node);
  }
  
  /* Return an lvalue expression whose type is "const std::type_info"
*************** get_void_tinfo_ptr (tree type)
*** 255,261 ****
     otherwise return the static type of the expression.  */
  
  static tree
! get_tinfo_ptr_dynamic (tree exp, tsubst_flags_t complain)
  {
    tree type;
    tree t;
--- 246,252 ----
     otherwise return the static type of the expression.  */
  
  static tree
! get_tinfo_ptr_dynamic (tree exp, tsubst_flags_t complain, tree tinfo_ptr_type)
  {
    tree type;
    tree t;
*************** get_tinfo_ptr_dynamic (tree exp, tsubst_
*** 291,301 ****
        index = build_int_cst (NULL_TREE,
  			     -1 * TARGET_VTABLE_DATA_ENTRY_DISTANCE);
        t = build_vtbl_ref (exp, index);
!       t = convert (type_info_ptr_type (), t);
      }
    else
      /* Otherwise return the type_info for the static type of the expr.  */
!     t = get_tinfo_ptr (type);
  
    return t;
  }
--- 282,292 ----
        index = build_int_cst (NULL_TREE,
  			     -1 * TARGET_VTABLE_DATA_ENTRY_DISTANCE);
        t = build_vtbl_ref (exp, index);
!       t = convert (tinfo_ptr_type, t);
      }
    else
      /* Otherwise return the type_info for the static type of the expr.  */
!     t = get_tinfo_ptr (type, tinfo_ptr_type);
  
    return t;
  }
*************** typeid_evaluated_p (tree exp, int *nonnu
*** 371,385 ****
     an lvalue of type "const std::type_info".  */
  
  tree
! build_typeid (tree exp, tsubst_flags_t complain)
  {
    tree cond = NULL_TREE, initial_expr = exp;
  
!   if (exp == error_mark_node || !typeid_ok_p ())
      return error_mark_node;
  
    if (processing_template_decl)
!     return build_min (TYPEID_EXPR, const_type_info_type_node, exp);
  
    int nonnull = 0;
    if (typeid_evaluated_p (exp, &nonnull))
--- 362,383 ----
     an lvalue of type "const std::type_info".  */
  
  tree
! build_typeid (tree exp, tsubst_flags_t complain, tree tinfo_type/*=NULL_TREE*/)
  {
    tree cond = NULL_TREE, initial_expr = exp;
  
!   if (exp == error_mark_node)
      return error_mark_node;
  
+   if (!tinfo_type)
+     {
+       if (!typeid_ok_p ())
+ 	return error_mark_node;
+       tinfo_type = const_type_info_type_node;
+     }
+ 
    if (processing_template_decl)
!     return build_min (TYPEID_EXPR, tinfo_type, exp);
  
    int nonnull = 0;
    if (typeid_evaluated_p (exp, &nonnull))
*************** build_typeid (tree exp, tsubst_flags_t c
*** 394,400 ****
  	}
      }
  
!   exp = get_tinfo_ptr_dynamic (exp, complain);
  
    if (exp == error_mark_node)
      return error_mark_node;
--- 392,399 ----
  	}
      }
  
!   exp = get_tinfo_ptr_dynamic (exp, complain,
! 			       build_pointer_type (tinfo_type));
  
    if (exp == error_mark_node)
      return error_mark_node;
*************** get_tinfo_decl_direct (tree type, tree n
*** 528,540 ****
  /* Return the type_info object for TYPE.  */
  
  tree
! get_typeid (tree type, tsubst_flags_t complain)
  {
!   if (type == error_mark_node || !typeid_ok_p ())
      return error_mark_node;
  
    if (processing_template_decl)
!     return build_min (TYPEID_EXPR, const_type_info_type_node, type);
  
    /* If the type of the type-id is a reference type, the result of the
       typeid expression refers to a type_info object representing the
--- 527,546 ----
  /* Return the type_info object for TYPE.  */
  
  tree
! get_typeid (tree type, tsubst_flags_t complain, tree tinfo_type/*=NULL_TREE*/)
  {
!   if (type == error_mark_node)
      return error_mark_node;
  
+   if (!tinfo_type)
+     {
+       if (!typeid_ok_p ())
+ 	return error_mark_node;
+       tinfo_type = const_type_info_type_node;
+     }
+ 
    if (processing_template_decl)
!     return build_min (TYPEID_EXPR, tinfo_type, type);
  
    /* If the type of the type-id is a reference type, the result of the
       typeid expression refers to a type_info object representing the
*************** get_typeid (tree type, tsubst_flags_t co
*** 563,569 ****
    if (!type)
      return error_mark_node;
  
!   return cp_build_fold_indirect_ref (get_tinfo_ptr (type));
  }
  
  /* Check whether TEST is null before returning RESULT.  If TEST is used in
--- 569,576 ----
    if (!type)
      return error_mark_node;
  
!   tinfo_type = build_pointer_type (tinfo_type);
!   return cp_build_fold_indirect_ref (get_tinfo_ptr (type, tinfo_type));
  }
  
  /* Check whether TEST is null before returning RESULT.  If TEST is used in
diff -Nrcpad gcc-17-20260816/gcc/cp/search.cc gcc-17-20260823/gcc/cp/search.cc
*** gcc-17-20260816/gcc/cp/search.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/search.cc	Sun Aug 23 22:32:07 2026
*************** lookup_member (tree xbasetype, tree name
*** 1280,1288 ****
      {
        tree decl = is_overloaded_fn (rval) ? get_first_fn (rval) : rval;
        decl = strip_using_decl (decl);
!       /* A dependent USING_DECL will be checked after tsubsting.  */
!       if (TREE_CODE (decl) != USING_DECL
! 	  && !DECL_IOBJ_MEMBER_FUNCTION_P (decl)
  	  && !perform_or_defer_access_check (basetype_path, decl, decl,
  					     complain, afi))
  	return error_mark_node;
--- 1280,1289 ----
      {
        tree decl = is_overloaded_fn (rval) ? get_first_fn (rval) : rval;
        decl = strip_using_decl (decl);
!       /* A dependent declaration will be checked after tsubsting.  */
!       if (!dependent_scope_p (DECL_CONTEXT (decl))
! 	  && !(DECL_DECLARES_FUNCTION_P (decl)
! 	       && DECL_IOBJ_MEMBER_FUNCTION_P (decl))
  	  && !perform_or_defer_access_check (basetype_path, decl, decl,
  					     complain, afi))
  	return error_mark_node;
diff -Nrcpad gcc-17-20260816/gcc/cp/tree.cc gcc-17-20260823/gcc/cp/tree.cc
*** gcc-17-20260816/gcc/cp/tree.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/tree.cc	Sun Aug 23 22:32:07 2026
*************** record_has_unique_obj_representations (c
*** 5274,5280 ****
  	    inform (DECL_SOURCE_LOCATION (last_named_field),
  		    "padding occurs after %qD", last_named_field);
  	  else
! 	    inform (DECL_SOURCE_LOCATION (t),
  		    "%qT has padding and no data fields", t);
  	}
        return false;
--- 5274,5280 ----
  	    inform (DECL_SOURCE_LOCATION (last_named_field),
  		    "padding occurs after %qD", last_named_field);
  	  else
! 	    inform (location_of (const_cast <tree> (t)),
  		    "%qT has padding and no data fields", t);
  	}
        return false;
diff -Nrcpad gcc-17-20260816/gcc/cp/typeck.cc gcc-17-20260823/gcc/cp/typeck.cc
*** gcc-17-20260816/gcc/cp/typeck.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/cp/typeck.cc	Sun Aug 23 22:32:07 2026
*************** lookup_destructor (tree object, tree sco
*** 3251,3257 ****
      }
    expr = lookup_member (dtor_type, complete_dtor_identifier,
  			/*protect=*/1, /*want_type=*/false,
! 			tf_warning_or_error);
    if (!expr)
      {
        if (complain & tf_error)
--- 3251,3259 ----
      }
    expr = lookup_member (dtor_type, complete_dtor_identifier,
  			/*protect=*/1, /*want_type=*/false,
! 			complain);
!   if (expr == error_mark_node)
!     return error_mark_node;
    if (!expr)
      {
        if (complain & tf_error)
diff -Nrcpad gcc-17-20260816/gcc/doc/analyzer.texi gcc-17-20260823/gcc/doc/analyzer.texi
*** gcc-17-20260816/gcc/doc/analyzer.texi	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/doc/analyzer.texi	Sun Aug 23 22:32:07 2026
*************** Consider this example C code:
*** 322,328 ****
  void *
  calls_malloc (size_t n)
  @{
!   void *result = malloc (1024);
    return result; /* HERE */
  @}
  
--- 322,328 ----
  void *
  calls_malloc (size_t n)
  @{
!   void *result = malloc (n);
    return result; /* HERE */
  @}
  
*************** various local variables within frames fo
*** 373,380 ****
  within @code{test} the whole cluster for @code{_1} is bound
  to a @code{binop_svalue} representing @code{n * 4}, and
  @item
! within @code{test} the whole cluster for @code{result_4} is bound to a
! @code{region_svalue} pointing at @code{HEAP_ALLOCATED_REGION(12)}.
  @end itemize
  
  Additionally, this latter pointer has the @code{unchecked} state for the
--- 373,380 ----
  within @code{test} the whole cluster for @code{_1} is bound
  to a @code{binop_svalue} representing @code{n * 4}, and
  @item
! within @code{calls_malloc} the whole cluster for @code{result_4} is bound to a
! @code{region_svalue} pointing at @code{HEAP_ALLOCATED_REGION(27)}.
  @end itemize
  
  Additionally, this latter pointer has the @code{unchecked} state for the
*************** Additionally, this latter pointer has th
*** 384,389 ****
--- 384,395 ----
  We also see that the state has captured the size of the heap-allocated
  region (``Dynamic Extents'').
  
+ @noindent
+ The specific numbering of heap-allocated regions (such as the ``27'' in
+ @code{HEAP_ALLOCATED_REGION(27)} above) depend on what other code has been
+ explored and in what order before this point is reached, and thus should not be
+ relied upon.
+ 
  This visualization can also be seen within the output of
  @option{-fdump-analyzer-exploded-nodes-2} and
  @option{-fdump-analyzer-exploded-nodes-3}.
diff -Nrcpad gcc-17-20260816/gcc/doc/extend.texi gcc-17-20260823/gcc/doc/extend.texi
*** gcc-17-20260816/gcc/doc/extend.texi	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/doc/extend.texi	Sun Aug 23 22:32:07 2026
*************** matching @code{end} will suppress the re
*** 10642,10648 ****
    #pragma GCC suppress_coverage begin
    if (cond)
      @{
!       /* Coverage is disbled for all statements in this block.  */
        foo ();
      @}
    else
--- 10642,10648 ----
    #pragma GCC suppress_coverage begin
    if (cond)
      @{
!       /* Coverage is disabled for all statements in this block.  */
        foo ();
      @}
    else
*************** size of the @code{asm} --- or parts of i
*** 13624,13630 ****
  @item nl
  The number of lines in the code template, which is half the default size.
  It suits code templates that only use 1-word instructions with
! no superfuous physical @samp{\n} or logical @samp{$} line breaks.
  
  @item [0-9]+
  The decimal representation of a non-negative integer.
--- 13624,13630 ----
  @item nl
  The number of lines in the code template, which is half the default size.
  It suits code templates that only use 1-word instructions with
! no superfluous physical @samp{\n} or logical @samp{$} line breaks.
  
  @item [0-9]+
  The decimal representation of a non-negative integer.
diff -Nrcpad gcc-17-20260816/gcc/doc/invoke.texi gcc-17-20260823/gcc/doc/invoke.texi
*** gcc-17-20260816/gcc/doc/invoke.texi	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/doc/invoke.texi	Sun Aug 23 22:32:08 2026
*************** Objective-C and Objective-C++ Dialects}.
*** 323,329 ****
  @xref{OpenMP and OpenACC Options,,Options Controlling OpenMP and OpenACC}.
  @gccoptlist{-foffload=@var{arg}  -foffload-options=@var{arg}
  -fopenacc  -fopenacc-dim=@var{geom}
! -fopenmp  -fopenmp-simd  -fopenmp-ompt  -fopenmp-ompt-detailed
  -fopenmp-target-simd-clone@r{[}=@var{device-type}@r{]}}
  
  @item Diagnostic Message Formatting Options
--- 323,329 ----
  @xref{OpenMP and OpenACC Options,,Options Controlling OpenMP and OpenACC}.
  @gccoptlist{-foffload=@var{arg}  -foffload-options=@var{arg}
  -fopenacc  -fopenacc-dim=@var{geom}
! -fopenmp  -fopenmp-simd  -fopenmp-ompt@r{[}=@var{level}@r{]}
  -fopenmp-target-simd-clone@r{[}=@var{device-type}@r{]}}
  
  @item Diagnostic Message Formatting Options
*************** Objective-C and Objective-C++ Dialects}.
*** 991,997 ****
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
  -mmain-is-OS_task  -mrelax  -mpmem-wrap-around
! -mrmw  -mstrict-X  -mtiny-stack
  -mrodata-in-ram  -msplit-bit-shift  -msplit-ldst  -mshort-calls
  -mskip-bug  -muse-nonzero-bits  -nodevicelib  -nodevicespecs
  -Wasm-len-notes  -Waddr-space-convert  -Wmisspelled-isr}
--- 991,997 ----
  -mdouble=@var{bits}  -mlong-double=@var{bits}  -mno-call-main
  -mn_flash=@var{size}  -mfract-convert-truncate  -mno-interrupts
  -mmain-is-OS_task  -mrelax  -mpmem-wrap-around
! -mrmw  -mstrict-addr-space-subsets  -mstrict-X  -mtiny-stack
  -mrodata-in-ram  -msplit-bit-shift  -msplit-ldst  -mshort-calls
  -mskip-bug  -muse-nonzero-bits  -nodevicelib  -nodevicespecs
  -Wasm-len-notes  -Waddr-space-convert  -Wmisspelled-isr}
*************** Fortran.  In fixed source form Fortran,
*** 5620,5647 ****
  to the current task region, independent of the specified @code{bind} clause.
  
  @opindex fopenmp-ompt
- @opindex fno-openmp-ompt
  @cindex OpenMP OMPT
  @item -fopenmp-ompt
! For some OpenMP constructs, generate calls into the OpenMP runtime before and
! after the region instead of only on region entry.  For those constructs, the
! additional calls are only needed to provide better tracing results in tools
! using the OMPT interface and have a small overhead.  The extra calls are
! generated for the @code{masked}, @code{master}, @code{scope}, and @code{single}
! constructs and with static scheduling for the @code{distribute} and worksharing
! loop constructs.  Requires @option{-fopenmp}.
  
! @opindex fopenmp-ompt-detailed
! @opindex fno-openmp-ompt-detailed
! @cindex OpenMP OMPT
! @item -fopenmp-ompt-detailed
! Add additional calls into the OpenMP runtime for more detailed tracing via OMPT,
! which might have a measurable effect on the performance.  The option enables
! additional constructs to issue events for the @code{dispatch} callback, which
! is invoked when beginning to execute a section or a collapsed iteration in a
! @code{taskloop} or worksharing construct.  The additional calls are generated
! with static scheduling for the @code{distribute} and worksharing loop
! constructs.  Implies @option{-fopenmp-ompt} and requires @option{-fopenmp}.
  
  @opindex fopenmp-target-simd-clone
  @opindex fno-openmp-target-simd-clone
--- 5620,5667 ----
  to the current task region, independent of the specified @code{bind} clause.
  
  @opindex fopenmp-ompt
  @cindex OpenMP OMPT
  @item -fopenmp-ompt
! @itemx -fopenmp-ompt=@var{level}
! Control how much detail GCC reports to an @dfn{OMPT} tool---a tool
! that registers callbacks with the OpenMP runtime to observe events
! such as when a parallel region or worksharing construct starts and
! ends.  The @var{level} argument is one of @samp{minimal}, @samp{basic},
! or @samp{extended}; @option{-fopenmp-ompt} without an argument is
! equivalent to @option{-fopenmp-ompt=basic}.  OMPT support itself is
! always present with @option{-fopenmp}; this option only changes how
! much is reported and at what runtime cost.  Requires
! @option{-fopenmp}.
  
! @table @samp
! @item minimal
! The level used when @option{-fopenmp-ompt} is not specified.  Some
! OpenMP constructs are reported to an OMPT tool as a single combined
! ``encountered'' event, so a tool cannot tell how long the construct's
! region actually ran.  No extra runtime calls are generated beyond
! what the construct's semantics already require.
! 
! @item basic
! For the @code{single}, @code{masked}, and @code{master} constructs,
! and for @code{distribute} and worksharing-loop (@code{for}/@code{do})
! constructs that use static scheduling, GCC instead reports a separate
! ``begin'' event when the region is entered and an ``end'' event when
! it is left.  This lets an OMPT tool measure the time actually spent in
! those regions, at the cost of one extra runtime call per region.
! 
! @item extended
! In addition to what @samp{basic} reports, report a ``dispatch'' event
! each time a new chunk of loop iterations begins within a statically
! scheduled @code{distribute} or worksharing-loop construct (a
! @dfn{chunk} is the contiguous run of iterations handed to one thread
! or team at a time).  This lets an OMPT tool see how work is actually
! split across threads, but adds a runtime call for every chunk, which
! can be measurably slower for loops with many small chunks.
! @end table
! 
! There is no @option{-fno-openmp-ompt}: the lowest available level is
! @option{-fopenmp-ompt=minimal}, since OMPT support cannot be disabled
! outright once @option{-fopenmp} is in effect.
  
  @opindex fopenmp-target-simd-clone
  @opindex fno-openmp-target-simd-clone
*************** and SVE_B16B16 instructions.
*** 22057,22062 ****
--- 22077,22085 ----
  @item sme-f16f16
  Enable the FEAT_SME_F16F16 extension to SME.  This also enables SME2
  instructions.
+ @item sme-mop4
+ Enable the FEAT_SME_MOP4 extension to SME.  This also enables SME2
+ instructions.
  @item sme2p1
  Enable the Scalable Matrix Extension version 2.1.  This also enables SME2
  instructions.
*************** the @code{--with-double=} and @code{--wi
*** 24390,24395 ****
--- 24413,24422 ----
  @w{@uref{https://gcc.gnu.org/install/configure.html#avr,,configure options}},
  and the same applies for the default values of the options.
  
+ @opindex mfract-convert-truncate
+ @item -mfract-convert-truncate
+ Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
+ 
  @opindex mgas-isr-prologues
  @item -mgas-isr-prologues
  Interrupt service routines (ISRs) may use the @code{__gcc_isr} pseudo
*************** With older versions, there will be no pe
*** 24437,24458 ****
  Generated code is not compatible with hardware interrupts.
  Code size is smaller.
  
- @opindex mrelax
- @item -mrelax
- Try to replace @code{CALL} resp.@: @code{JMP} instruction by the shorter
- @code{RCALL} resp.@: @code{RJMP} instruction if applicable.
- Setting @option{-mrelax} just adds the @option{--mlink-relax} option to
- the assembler's command line and the @option{--relax} option to the
- linker's command line.
- 
- Jump relaxing is performed by the linker because jump offsets are not
- known before code is located. Therefore, the assembler code generated by the
- compiler is the same, but the instructions in the executable may
- differ from instructions in the assembler code.
- 
- Relaxing must be turned on if linker stubs are needed, see the
- section on @code{EIND} and linker stubs below.
- 
  @opindex mpmem-wrap-around
  @opindex mno-pmem-wrap-around
  @item -mpmem-wrap-around
--- 24464,24469 ----
*************** support (@w{@uref{https://sourceware.org
*** 24472,24485 ****
  In that case, @option{-mrodata-in-ram} can be used to return to the old
  layout with @code{.rodata} in RAM.
  
  @opindex mtiny-stack
  @item -mtiny-stack
  Only change the lower 8@tie{}bits of the stack pointer.
  
- @opindex mfract-convert-truncate
- @item -mfract-convert-truncate
- Allow to use truncation instead of rounding towards zero for fractional fixed-point types.
- 
  @opindex nodevicelib
  @item -nodevicelib
  Don't link against AVR-LibC's device specific library @code{lib@var{mcu}.a}.
--- 24483,24525 ----
  In that case, @option{-mrodata-in-ram} can be used to return to the old
  layout with @code{.rodata} in RAM.
  
+ @opindex mrelax
+ @item -mrelax
+ Try to replace @code{CALL} resp.@: @code{JMP} instruction by the shorter
+ @code{RCALL} resp.@: @code{RJMP} instruction if applicable.
+ Setting @option{-mrelax} just adds the @option{--mlink-relax} option to
+ the assembler's command line and the @option{--relax} option to the
+ linker's command line.
+ 
+ Jump relaxing is performed by the linker because jump offsets are not
+ known before code is located. Therefore, the assembly code generated by the
+ compiler is the same, but the instructions in the executable may
+ differ from instructions in the assembly code.
+ 
+ Relaxing must be turned on if linker stubs are needed, see the
+ section on @code{EIND} and linker stubs below.
+ 
+ @opindex mstrict-addr-space-subsets
+ @item -mstrict-addr-space-subsets
+ Impose strict named address space subset relations.  Without this option,
+ every address space is considered to be a subset of all the other spaces,
+ which allows to write code like
+ @example
+ char read_char (const char *addr, bool in_flash)
+ @{
+    return in_flash
+      ? *(const __flash char*) addr  // Read from program memory.
+      : *addr;                       // Read from RAM.
+ @}
+ @end example
+ When the option is on, such code is rejected since address space
+ @code{__flash} is not a subset of the generic space, and hence the
+ cast in the above code is prohibited.
+ 
  @opindex mtiny-stack
  @item -mtiny-stack
  Only change the lower 8@tie{}bits of the stack pointer.
  
  @opindex nodevicelib
  @item -nodevicelib
  Don't link against AVR-LibC's device specific library @code{lib@var{mcu}.a}.
*************** zero in case the ISR code might (implici
*** 24810,24816 ****
  
  @item
  RAM larger than 64@tie{}KiB is not supported by GCC for AVR targets.
! If you use inline assembler to read from locations outside the
  16-bit address range and change one of the @code{RAMP} registers,
  you must reset it to zero after the access.
  
--- 24850,24856 ----
  
  @item
  RAM larger than 64@tie{}KiB is not supported by GCC for AVR targets.
! If you use inline assembly to read from locations outside the
  16-bit address range and change one of the @code{RAMP} registers,
  you must reset it to zero after the access.
  
*************** This macro is defined provided the follo
*** 24983,24989 ****
  @itemize @bullet
  @item The device has the @code{NVMCTRL_CTRLB.FLMAP} bitfield.
  This applies to the AVR64* and AVR128* devices.
! @item It's not known at assembler-time which emulation will be used.
  @end itemize
  This implies the compiler was configured with GNU Binutils that implement
  @w{@uref{https://sourceware.org/PR31124,,PR31124}}.
--- 25023,25029 ----
  @itemize @bullet
  @item The device has the @code{NVMCTRL_CTRLB.FLMAP} bitfield.
  This applies to the AVR64* and AVR128* devices.
! @item It's not known at assemble-time which emulation will be used.
  @end itemize
  This implies the compiler was configured with GNU Binutils that implement
  @w{@uref{https://sourceware.org/PR31124,,PR31124}}.
*************** Chopped rounding mode.  Floating-point n
*** 26293,26303 ****
  @item d
  Dynamic rounding mode.  A field in the floating-point control register
  (@var{fpcr}, see Alpha architecture reference manual) controls the
! rounding mode in effect.  The C library initializes this register for
! rounding towards plus infinity.  Thus, unless your program modifies the
! @var{fpcr}, @samp{d} corresponds to round towards plus infinity.
  @end table
  
  @opindex mtrap-precision
  @item -mtrap-precision=@var{trap-precision}
  In the Alpha architecture, floating-point traps are imprecise.  This
--- 26333,26350 ----
  @item d
  Dynamic rounding mode.  A field in the floating-point control register
  (@var{fpcr}, see Alpha architecture reference manual) controls the
! rounding mode in effect.  The C library initializes this register, so
! unless your program modifies the @var{fpcr}, for example through
! @code{fesetround}, @samp{d} corresponds to the rounding mode the C
! library selected.
  @end table
  
+ The default is @samp{n}, except that @samp{d} is the default when
+ @option{-frounding-math} is in effect, since only dynamic rounding can
+ honor a rounding mode chosen at run time.  This does not apply to
+ @option{-mfloat-vax}, whose instructions have no dynamic rounding
+ qualifier.
+ 
  @opindex mtrap-precision
  @item -mtrap-precision=@var{trap-precision}
  In the Alpha architecture, floating-point traps are imprecise.  This
diff -Nrcpad gcc-17-20260816/gcc/doc/tm.texi gcc-17-20260823/gcc/doc/tm.texi
*** gcc-17-20260816/gcc/doc/tm.texi	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/doc/tm.texi	Sun Aug 23 22:32:08 2026
*************** the @code{POLY_VALUE_MIN}, @code{POLY_VA
*** 7491,7496 ****
--- 7491,7504 ----
  implementation returns the lowest possible value of @var{val}.
  @end deftypefn
  
+ @deftypefn {Target Hook} poly_uint64 TARGET_POLY_INT_INDETERMINATE_BOUND (void)
+ Return a @code{poly_uint64} whose coefficients give conservative
+ inclusive upper bounds for the corresponding @code{poly_int}
+ indeterminates.  The constant coefficient is ignored and should be zero.
+ This hook is used for correctness rather than for costing, so the returned
+ bounds must be safe for all architecturally-valid runtime values.
+ @end deftypefn
+ 
  @deftypefn {Target Hook} bool TARGET_AVOID_STORE_FORWARDING_P (vec<store_fwd_info>, @var{rtx}, @var{int}, @var{bool})
  Given a list of stores and a load instruction that reads from the location
  of the stores, this hook decides if it's profitable to emit additional code
diff -Nrcpad gcc-17-20260816/gcc/doc/tm.texi.in gcc-17-20260823/gcc/doc/tm.texi.in
*** gcc-17-20260816/gcc/doc/tm.texi.in	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/doc/tm.texi.in	Sun Aug 23 22:32:08 2026
*************** Define this macro if a non-short-circuit
*** 4794,4799 ****
--- 4794,4801 ----
  
  @hook TARGET_ESTIMATED_POLY_VALUE
  
+ @hook TARGET_POLY_INT_INDETERMINATE_BOUND
+ 
  @hook TARGET_AVOID_STORE_FORWARDING_P
  
  @node Scheduling
diff -Nrcpad gcc-17-20260816/gcc/expmed.cc gcc-17-20260823/gcc/expmed.cc
*** gcc-17-20260816/gcc/expmed.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/expmed.cc	Sun Aug 23 22:32:08 2026
*************** static bool store_integral_bit_field (rt
*** 55,60 ****
--- 55,67 ----
  				      unsigned HOST_WIDE_INT,
  				      poly_uint64, poly_uint64,
  				      machine_mode, rtx, bool, bool);
+ /* The constant divisor of the last division expanded, so that a modulo by
+    the same constant can reuse the quotient.  Reset for each function by
+    prepare_function_start: carrying it across functions would make a
+    function's code depend on what was expanded before it in the translation
+    unit.  */
+ HOST_WIDE_INT last_div_const = 0;
+ 
  static void store_fixed_bit_field (rtx, opt_scalar_int_mode,
  				   unsigned HOST_WIDE_INT,
  				   unsigned HOST_WIDE_INT,
*************** store_fixed_bit_field_1 (rtx op0, scalar
*** 1344,1349 ****
--- 1351,1366 ----
    if (reverse)
      value = flip_storage_order (mode, value);
  
+   /* A field filling the whole of a MEM has no surrounding bits to preserve,
+      so store it directly: the read of a volatile OP0 cannot be removed later
+      and would be a spurious access with side effects (PR71048).  */
+   if (MEM_P (op0) && bitnum == 0 && bitsize == GET_MODE_BITSIZE (mode))
+     {
+       op0 = copy_rtx (op0);
+       emit_move_insn (op0, value);
+       return;
+     }
+ 
    /* Now clear the chosen bits in OP0,
       except that if VALUE is -1 we need not bother.  */
    /* We keep the intermediates in registers to allow CSE to combine
*************** expand_divmod (int rem_flag, enum tree_c
*** 4370,4376 ****
    optab optab1, optab2;
    int op1_is_constant, op1_is_pow2 = 0;
    int max_cost, extra_cost;
-   static HOST_WIDE_INT last_div_const = 0;
    bool speed = optimize_insn_for_speed_p ();
  
    op1_is_constant = CONST_INT_P (op1);
--- 4387,4392 ----
diff -Nrcpad gcc-17-20260816/gcc/expmed.h gcc-17-20260823/gcc/expmed.h
*** gcc-17-20260816/gcc/expmed.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/expmed.h	Sun Aug 23 22:32:08 2026
*************** extern rtx expmed_mult_highpart_optab (s
*** 728,731 ****
--- 728,735 ----
  				       int, int);
  extern rtx expand_rotate_as_vec_perm (machine_mode, rtx, rtx, rtx);
  
+ /* The constant divisor of the last division expanded, reset per function
+    by prepare_function_start.  */
+ extern HOST_WIDE_INT last_div_const;
+ 
  #endif  // EXPMED_H
diff -Nrcpad gcc-17-20260816/gcc/final.cc gcc-17-20260823/gcc/final.cc
*** gcc-17-20260816/gcc/final.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/final.cc	Sun Aug 23 22:32:08 2026
*************** static int high_function_linenum;
*** 133,144 ****
  /* Filename of last NOTE.  */
  static const char *last_filename;
  
- /* Override filename, line and column number.  */
- static const char *override_filename;
- static int override_linenum;
- static int override_columnnum;
- static int override_discriminator;
- 
  /* Whether to force emission of a line note before the next insn.  */
  static bool force_source_line = false;
  
--- 133,138 ----
*************** notice_source_line (rtx_insn *insn, bool
*** 3001,3013 ****
        discriminator = compute_discriminator (loc);
        force_source_line = true;
      }
-   else if (override_filename)
-     {
-       filename = override_filename;
-       linenum = override_linenum;
-       columnnum = override_columnnum;
-       discriminator = override_discriminator;
-     }
    else if (INSN_HAS_LOCATION (insn))
      {
        expanded_location xloc = insn_location (insn);
--- 2995,3000 ----
diff -Nrcpad gcc-17-20260816/gcc/flag-types.h gcc-17-20260823/gcc/flag-types.h
*** gcc-17-20260816/gcc/flag-types.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/flag-types.h	Sun Aug 23 22:32:08 2026
*************** enum omp_target_simd_clone_device_kind
*** 585,590 ****
--- 585,598 ----
    OMP_TARGET_SIMD_CLONE_ANY = 3
  };
  
+ /* Levels for -fopenmp-ompt.  */
+ enum omp_ompt_level
+ {
+   OMP_OMPT_LEVEL_MINIMAL = 0,
+   OMP_OMPT_LEVEL_BASIC = 1,
+   OMP_OMPT_LEVEL_EXTENDED = 2
+ };
+ 
  #endif
  
  #endif /* ! GCC_FLAG_TYPES_H */
diff -Nrcpad gcc-17-20260816/gcc/fold-const-call.cc gcc-17-20260823/gcc/fold-const-call.cc
*** gcc-17-20260816/gcc/fold-const-call.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fold-const-call.cc	Sun Aug 23 22:32:08 2026
*************** fold_const_call (combined_fn fn, tree ty
*** 1911,1916 ****
--- 1911,1927 ----
  	}
        return NULL_TREE;
  
+     case CFN_BUILT_IN_STRNLEN:
+       if ((p0 = c_getstr (arg0)))
+ 	{
+ 	  unsigned HOST_WIDE_INT s1 = 0;
+ 	  if (!size_t_cst_p (arg1, &s1))
+ 	    return NULL_TREE;
+ 
+ 	  return build_int_cst (type, strnlen (p0, s1));
+ 	}
+       return NULL_TREE;
+ 
      case CFN_FOLD_LEFT_PLUS:
        return fold_const_fold_left (type, arg0, arg1, PLUS_EXPR);
  
diff -Nrcpad gcc-17-20260816/gcc/fortran/ChangeLog gcc-17-20260823/gcc/fortran/ChangeLog
*** gcc-17-20260816/gcc/fortran/ChangeLog	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/ChangeLog	Sun Aug 23 22:32:08 2026
***************
*** 1,3 ****
--- 1,103 ----
+ 2026-08-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/126816
+ 	* symbol.cc (restore_old_symbol): Restore the whole typespec
+ 	instead of just type and kind.
+ 
+ 2026-08-18  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121683
+ 	* trans-expr.cc (gfc_trans_subcomponent_assign): For derived
+ 	type expressions assigned to a class or derived type component
+ 	copy allocatable components if necessary. Likewise, for a class
+ 	expression assigned to a scalar class component, allocate the
+ 	component and use the vptr copy.
+ 
+ 2026-08-18  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121384
+ 	* resolve.cc (resolve_assoc_var): Delete symbol 'parentheses'
+ 	and do not use the expression contained in parentheses as a
+ 	target. Use the latter expression as an alternative to variable
+ 	expressions for some error checking.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/53800
+ 	* gfortran.h (gfc_is_span_addressed_dummy): New prototype.
+ 	* symbol.cc (gfc_is_span_addressed_dummy): New function.
+ 	* expr.cc (is_subref_array): Return true for a span addressed dummy.
+ 	* trans.h (gfc_get_span_descriptor): New prototype.
+ 	* trans.cc (gfc_get_span_descriptor): New function returning the
+ 	descriptor that carries a pointer array decl's span.
+ 	(get_array_span): Use it, including for character types.
+ 	* trans-array.cc (is_pointer_array): Note in the comment that the
+ 	tree must be a descriptor.
+ 	(span_addressed_array): New function returning the decl that
+ 	provides the span of an array.
+ 	(gfc_get_array_span): Use it.
+ 	(gfc_conv_scalarized_array_ref, gfc_conv_array_ref): Likewise, so
+ 	that a descriptorless dummy is addressed by its span.
+ 	(gfc_get_dataptr_offset): Likewise and dereference a spanned
+ 	character element.
+ 	(gfc_conv_expr_descriptor): Describe a subobject of the array
+ 	elements by a new descriptor when no temporary is made.
+ 	* trans-decl.cc (gfc_build_dummy_array_decl): Use
+ 	gfc_is_span_addressed_dummy to mark the dummy as a pointer array.
+ 	(gfc_get_symbol_decl): Likewise.
+ 	* trans-expr.cc (is_subobject_ref): New function.
+ 	(copy_in_out_allowed): Take the actual argument.  Use
+ 	gfc_is_span_addressed_dummy and keep the copy for an actual
+ 	argument with a vector subscript.
+ 	(gfc_conv_gfc_desc_to_cfi_desc): Remove the now duplicate offsetting
+ 	of the data pointer for a subobject reference.
+ 	(gfc_class_array_data_assign): Also copy the span field.
+ 	(gfc_conv_procedure_call): Use copy_in_out_allowed to skip
+ 	copy-in/copy-out for a class array reference, a class array function
+ 	result and a subref array.  Pass a spanned descriptor instead and
+ 	make the copy of a span addressed dummy conditional on it not being
+ 	contiguous.
+ 	* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): Check the span
+ 	of a span addressed dummy against the element length.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/95542
+ 	* trans-decl.cc (gfc_get_symbol_decl): When checking that a
+ 	deferred-length string's length variable shares the symbol's
+ 	scope, special-case sym->backend_decl being a FUNCTION_DECL
+ 	(an implicit function-result variable): compare against
+ 	sym->backend_decl directly instead of its own DECL_CONTEXT.
+ 
+ 2026-08-17  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/126895
+ 	* trans-intrinsic.cc (gfc_conv_is_contiguous_expr): If the argument
+ 	to IS_CONTIGUOUS is an assumed-rank variable, add a conditional
+ 	making the value true if the runtime rank is zero.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/126872
+ 	* trans-decl.cc (gfc_finish_var_decl): Drop the unreachable
+ 	hidden-visibility case in the BIND(C) block.  Do not give hidden
+ 	visibility to a PRIVATE module variable with a binding label.
+ 	(build_function_decl): Do not give hidden visibility to a PRIVATE
+ 	module procedure with a binding label.
+ 
+ 2026-08-16  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/110626
+ 	* gfortran.h : Add finalize_only bitfield to gfc_expr.
+ 	* resolve.cc (generate_component_assignments): If the lhs has
+ 	no pointer or allocatable components, set use_finalize_only to
+ 	false. Otherwise it equals finalizable_lhs. Use the value to
+ 	set the expr1 finalize_only field and add the assignment to the
+ 	chain. If use_finalize_only is false, free the statements and
+ 	transfer the value to the final result.
+ 	* trans-expr.cc (gfc_trans_assignment_1): If expr1 is finalize_
+ 	only emit an empty statement.
+ 
  2026-08-15  Mikael Morin  <mikael@gcc.gnu.org>
  
  	PR fortran/126892
diff -Nrcpad gcc-17-20260816/gcc/fortran/expr.cc gcc-17-20260823/gcc/fortran/expr.cc
*** gcc-17-20260816/gcc/fortran/expr.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/expr.cc	Sun Aug 23 22:32:08 2026
*************** is_subref_array (gfc_expr * e)
*** 1222,1228 ****
  
    sym = e->symtree->n.sym;
  
!   if (sym->attr.subref_array_pointer)
      return true;
  
    seen_array = false;
--- 1222,1229 ----
  
    sym = e->symtree->n.sym;
  
!   if (sym->attr.subref_array_pointer
!       || gfc_is_span_addressed_dummy (sym))
      return true;
  
    seen_array = false;
diff -Nrcpad gcc-17-20260816/gcc/fortran/gfortran.h gcc-17-20260823/gcc/fortran/gfortran.h
*** gcc-17-20260816/gcc/fortran/gfortran.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/gfortran.h	Sun Aug 23 22:32:08 2026
*************** bool gfc_check_symbol_typed (gfc_symbol*
*** 3975,3980 ****
--- 3975,3981 ----
  gfc_namespace* gfc_find_proc_namespace (gfc_namespace*);
  
  bool gfc_is_associate_pointer (gfc_symbol*);
+ bool gfc_is_span_addressed_dummy (gfc_symbol *);
  gfc_symbol * gfc_find_dt_in_generic (gfc_symbol *);
  gfc_formal_arglist *gfc_sym_get_dummy_args (gfc_symbol *);
  
diff -Nrcpad gcc-17-20260816/gcc/fortran/parse.cc gcc-17-20260823/gcc/fortran/parse.cc
*** gcc-17-20260816/gcc/fortran/parse.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/parse.cc	Sun Aug 23 22:32:08 2026
*************** accept_statement (gfc_statement st)
*** 3253,3260 ****
      case ST_END_SUBROUTINE:
        if (gfc_statement_label != NULL)
  	{
! 	  new_st.op = EXEC_RETURN;
! 	  add_statement ();
  	}
        else
  	{
--- 3253,3284 ----
      case ST_END_SUBROUTINE:
        if (gfc_statement_label != NULL)
  	{
! 	  /* After a contains section, a new namespace is started together with
! 	     a new state_stack. The statement label must be attached to the
! 	     previous state after finding the label in its namespace.  */
! 	  if (gfc_state_stack->head == NULL
! 	      && gfc_state_stack->previous
! 	      && gfc_state_stack->previous->sym
! 	      && gfc_state_stack->previous->sym->ns
! 	      && gfc_state_stack->previous->sym->ns->parent == NULL)
! 	    {
! 	      int value = gfc_current_ns->st_labels->value;
! 	      gfc_state_data *previous_state = gfc_state_stack;
! 	      gfc_namespace *old_ns = gfc_current_ns;
! 	      gfc_current_ns = gfc_state_stack->previous->sym->ns;
! 	      new_st.here = gfc_get_st_label (value);
! 	      new_st.here->defined = ST_LABEL_TARGET;
! 	      new_st.op = EXEC_RETURN;
! 	      gfc_state_stack = gfc_state_stack->previous;
! 	      add_statement ();
! 	      gfc_state_stack = previous_state;
! 	      gfc_current_ns = old_ns;
! 	    }
! 	  else
! 	   {
! 	     new_st.op = EXEC_RETURN;
! 	     add_statement ();
! 	   }
  	}
        else
  	{
diff -Nrcpad gcc-17-20260816/gcc/fortran/resolve.cc gcc-17-20260823/gcc/fortran/resolve.cc
*** gcc-17-20260816/gcc/fortran/resolve.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/resolve.cc	Sun Aug 23 22:32:08 2026
*************** static void
*** 10579,10585 ****
  resolve_assoc_var (gfc_symbol* sym, bool resolve_target)
  {
    gfc_expr* target;
-   bool parentheses = false;
  
    gcc_assert (sym->assoc);
    gcc_assert (sym->attr.flavor == FL_VARIABLE);
--- 10579,10584 ----
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10609,10624 ****
      return;
    gcc_assert (!sym->assoc->dangling);
  
-   if (target->expr_type == EXPR_OP
-       && target->value.op.op == INTRINSIC_PARENTHESES
-       && target->value.op.op1->expr_type == EXPR_VARIABLE)
-     {
-       sym->assoc->target = gfc_copy_expr (target->value.op.op1);
-       gfc_free_expr (target);
-       target = sym->assoc->target;
-       parentheses = true;
-     }
- 
    if (resolve_target && !gfc_resolve_expr (target))
      return;
  
--- 10608,10613 ----
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10639,10650 ****
      }
  
    /* For variable targets, we get some attributes from the target.  */
!   if (target->expr_type == EXPR_VARIABLE)
      {
        gfc_symbol *tsym, *dsym;
  
!       gcc_assert (target->symtree);
!       tsym = target->symtree->n.sym;
  
        if (gfc_expr_attr (target).proc_pointer)
  	{
--- 10628,10642 ----
      }
  
    /* For variable targets, we get some attributes from the target.  */
!   if (target->expr_type == EXPR_VARIABLE
!       || (target->expr_type == EXPR_OP
! 	  && target->value.op.op == INTRINSIC_PARENTHESES
! 	  && target->value.op.op1->expr_type == EXPR_VARIABLE))
      {
        gfc_symbol *tsym, *dsym;
  
!       tsym = target->expr_type == EXPR_VARIABLE ? target->symtree->n.sym :
! 				  target->value.op.op1->symtree->n.sym;
  
        if (gfc_expr_attr (target).proc_pointer)
  	{
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10680,10692 ****
  	    }
  	}
  
!       sym->attr.asynchronous = tsym->attr.asynchronous;
!       sym->attr.volatile_ = tsym->attr.volatile_;
  
!       sym->attr.target = tsym->attr.target
! 			 || gfc_expr_attr (target).pointer;
!       if (is_subref_array (target))
! 	sym->attr.subref_array_pointer = 1;
      }
    else if (target->ts.type == BT_PROCEDURE)
      {
--- 10672,10687 ----
  	    }
  	}
  
!       if (target->expr_type == EXPR_VARIABLE)
! 	{
! 	  sym->attr.asynchronous = tsym->attr.asynchronous;
! 	  sym->attr.volatile_ = tsym->attr.volatile_;
  
! 	  sym->attr.target = tsym->attr.target
! 			     || gfc_expr_attr (target).pointer;
! 	  if (is_subref_array (target))
! 	    sym->attr.subref_array_pointer = 1;
! 	}
      }
    else if (target->ts.type == BT_PROCEDURE)
      {
*************** resolve_assoc_var (gfc_symbol* sym, bool
*** 10773,10779 ****
  
    /* See if this is a valid association-to-variable.  */
    sym->assoc->variable = ((target->expr_type == EXPR_VARIABLE
- 			   && !parentheses
  			   && !gfc_has_vector_subscript (target))
  			  || gfc_is_ptr_fcn (target));
  
--- 10768,10773 ----
diff -Nrcpad gcc-17-20260816/gcc/fortran/symbol.cc gcc-17-20260823/gcc/fortran/symbol.cc
*** gcc-17-20260816/gcc/fortran/symbol.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/symbol.cc	Sun Aug 23 22:32:08 2026
*************** restore_old_symbol (gfc_symbol *p)
*** 3817,3824 ****
    p->mark = 0;
    old = p->old_symbol;
  
!   p->ts.type = old->ts.type;
!   p->ts.kind = old->ts.kind;
  
    p->attr = old->attr;
  
--- 3817,3825 ----
    p->mark = 0;
    old = p->old_symbol;
  
!   /* Restore the whole typespec, not just type/kind, so ts.u.cl doesn't
!      dangle.  */
!   p->ts = old->ts;
  
    p->attr = old->attr;
  
*************** gfc_is_associate_pointer (gfc_symbol* sy
*** 5702,5707 ****
--- 5703,5732 ----
  }
  
  
+ /* Check if a dummy argument must be addressed using the span of its
+    descriptor.  The actual argument of an assumed shape or assumed rank
+    TARGET dummy is never copied, so its elements can be spaced by more
+    than the element size.  CLASS and assumed type entities already carry
+    their element size and are excluded.  */
+ 
+ bool
+ gfc_is_span_addressed_dummy (gfc_symbol *sym)
+ {
+   return sym->attr.dummy
+ 	 && sym->attr.target
+ 	 && sym->attr.dimension
+ 	 && !sym->attr.value
+ 	 && !sym->attr.contiguous
+ 	 && !sym->attr.pointer
+ 	 && !sym->attr.allocatable
+ 	 && sym->ts.type != BT_CLASS
+ 	 && sym->ts.type != BT_ASSUMED
+ 	 && sym->as
+ 	 && (sym->as->type == AS_ASSUMED_SHAPE
+ 	     || sym->as->type == AS_ASSUMED_RANK);
+ }
+ 
+ 
  gfc_symbol *
  gfc_find_dt_in_generic (gfc_symbol *sym)
  {
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans-array.cc gcc-17-20260823/gcc/fortran/trans-array.cc
*** gcc-17-20260816/gcc/fortran/trans-array.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans-array.cc	Sun Aug 23 22:32:08 2026
*************** gfc_add_ss_to_loop (gfc_loopinfo * loop,
*** 458,464 ****
  }
  
  
! /* Returns true if the expression is an array pointer.  */
  
  static bool
  is_pointer_array (tree expr)
--- 458,465 ----
  }
  
  
! /* Returns true if the expression is an array pointer.  The tree must be a
!    descriptor.  */
  
  static bool
  is_pointer_array (tree expr)
*************** is_pointer_array (tree expr)
*** 480,486 ****
        && GFC_DECL_PTR_ARRAY_P (TREE_OPERAND (expr, 0)))
      return true;
  
!   /* The field declaration is marked as an pointer array.  */
    if (TREE_CODE (expr) == COMPONENT_REF
        && GFC_DECL_PTR_ARRAY_P (TREE_OPERAND (expr, 1))
        && !GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (expr, 1))))
--- 481,487 ----
        && GFC_DECL_PTR_ARRAY_P (TREE_OPERAND (expr, 0)))
      return true;
  
!   /* The field declaration is marked as a pointer array.  */
    if (TREE_CODE (expr) == COMPONENT_REF
        && GFC_DECL_PTR_ARRAY_P (TREE_OPERAND (expr, 1))
        && !GFC_CLASS_TYPE_P (TREE_TYPE (TREE_OPERAND (expr, 1))))
*************** is_pointer_array (tree expr)
*** 490,495 ****
--- 491,519 ----
  }
  
  
+ /* If the elements of the array are spaced by the span of its descriptor,
+    return the decl that provides that span, otherwise NULL_TREE.  This is
+    either a descriptor or the local decl of a descriptorless dummy array,
+    which keeps the descriptor it was built from as the saved one.  */
+ 
+ static tree
+ span_addressed_array (tree expr)
+ {
+   if (is_pointer_array (expr))
+     return expr;
+ 
+   if (VAR_P (expr)
+       && GFC_DECL_PTR_ARRAY_P (expr)
+       && !GFC_DECL_CLASS (expr)
+       && GFC_ARRAY_TYPE_P (TREE_TYPE (expr))
+       && DECL_LANG_SPECIFIC (expr)
+       && GFC_DECL_SAVED_DESCRIPTOR (expr))
+     return expr;
+ 
+   return NULL_TREE;
+ }
+ 
+ 
  /* If the symbol or expression reference a CFI descriptor, return the
     pointer to the converted gfc descriptor. If an array reference is
     present as the last argument, check that it is the one applied to
*************** gfc_get_array_span (tree desc, gfc_expr
*** 554,571 ****
    gfc_symbol *sym = (expr && expr->expr_type == EXPR_VARIABLE) ?
  		    expr->symtree->n.sym : NULL;
  
!   if (is_pointer_array (desc)
        || (get_CFI_desc (NULL, expr, &desc, NULL)
  	  && (POINTER_TYPE_P (TREE_TYPE (desc))
  	      ? GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (desc)))
  	      : GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))))
!     {
!       if (POINTER_TYPE_P (TREE_TYPE (desc)))
! 	desc = build_fold_indirect_ref_loc (input_location, desc);
! 
!       /* This will have the span field set.  */
!       tmp = gfc_conv_descriptor_span_get (desc);
!     }
    else if (expr->ts.type == BT_ASSUMED)
      {
        if (DECL_LANG_SPECIFIC (desc) && GFC_DECL_SAVED_DESCRIPTOR (desc))
--- 578,590 ----
    gfc_symbol *sym = (expr && expr->expr_type == EXPR_VARIABLE) ?
  		    expr->symtree->n.sym : NULL;
  
!   if (span_addressed_array (desc)
        || (get_CFI_desc (NULL, expr, &desc, NULL)
  	  && (POINTER_TYPE_P (TREE_TYPE (desc))
  	      ? GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (desc)))
  	      : GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (desc)))))
!     /* This will have the span field set.  */
!     tmp = gfc_conv_descriptor_span_get (gfc_get_span_descriptor (desc));
    else if (expr->ts.type == BT_ASSUMED)
      {
        if (DECL_LANG_SPECIFIC (desc) && GFC_DECL_SAVED_DESCRIPTOR (desc))
*************** gfc_conv_scalarized_array_ref (gfc_se *
*** 3964,3970 ****
    /* A pointer array component can be detected from its field decl. Fix
       the descriptor, mark the resulting variable decl and pass it to
       gfc_build_array_ref.  */
!   if (is_pointer_array (info->descriptor)
        || (expr && expr->ts.deferred && info->descriptor
  	  && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (info->descriptor))))
      {
--- 3983,3989 ----
    /* A pointer array component can be detected from its field decl. Fix
       the descriptor, mark the resulting variable decl and pass it to
       gfc_build_array_ref.  */
!   if (span_addressed_array (info->descriptor)
        || (expr && expr->ts.deferred && info->descriptor
  	  && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (info->descriptor))))
      {
*************** gfc_conv_array_ref (gfc_se * se, gfc_arr
*** 4217,4227 ****
    if (get_CFI_desc (sym, expr, &decl, ar))
      decl = build_fold_indirect_ref_loc (input_location, decl);
    if (!expr->ts.deferred && !sym->attr.codimension
!       && is_pointer_array (se->expr))
      {
!       if (TREE_CODE (se->expr) == COMPONENT_REF)
! 	decl = se->expr;
!       else if (INDIRECT_REF_P (se->expr))
  	decl = TREE_OPERAND (se->expr, 0);
        else
  	decl = se->expr;
--- 4236,4244 ----
    if (get_CFI_desc (sym, expr, &decl, ar))
      decl = build_fold_indirect_ref_loc (input_location, decl);
    if (!expr->ts.deferred && !sym->attr.codimension
!       && span_addressed_array (se->expr))
      {
!       if (INDIRECT_REF_P (se->expr))
  	decl = TREE_OPERAND (se->expr, 0);
        else
  	decl = se->expr;
*************** gfc_get_dataptr_offset (stmtblock_t *blo
*** 7595,7601 ****
  	return;
      }
  
!   tmp = build_array_ref (desc, offset, NULL, NULL);
  
    /* Offset the data pointer for pointer assignments from arrays with
       subreferences; e.g. my_integer => my_type(:)%integer_component.  */
--- 7612,7624 ----
  	return;
      }
  
!   /* An array whose elements are spaced by the span needs pointer arithmetic
!      to reference an element.  */
!   tmp = build_array_ref (desc, offset, span_addressed_array (desc), NULL);
! 
!   /* A spanned character element is referenced by a pointer.  */
!   if (POINTER_TYPE_P (TREE_TYPE (tmp)) && span_addressed_array (desc))
!     tmp = build_fold_indirect_ref_loc (input_location, tmp);
  
    /* Offset the data pointer for pointer assignments from arrays with
       subreferences; e.g. my_integer => my_type(:)%integer_component.  */
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 8058,8063 ****
--- 8081,8087 ----
  
        subref_array_target = (is_subref_array (expr)
  			     && (se->direct_byref
+ 				 || se->force_no_tmp
  				 || expr->ts.type == BT_CHARACTER));
        need_tmp = (gfc_ref_needs_temporary_p (expr->ref)
  		  && !subref_array_target);
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 8087,8092 ****
--- 8111,8123 ----
        else
  	full = gfc_full_array_ref_p (info->ref, NULL);
  
+       /* A subobject of the array elements is described by a new descriptor,
+ 	 whose element type is that of the subobject and whose span is the
+ 	 element size of the array.  */
+       if (subref_array_target && !se->direct_byref
+ 	  && info->ref && info->ref->next)
+ 	full = 0;
+ 
        if (full && !transposed_dims (ss))
  	{
  	  if (se->direct_byref && !se->byref_noassign)
*************** gfc_conv_expr_descriptor (gfc_se *se, gf
*** 8408,8415 ****
  	}
        else
  	{
! 	  /* Otherwise make a new one.  */
! 	  if (expr->ts.type == BT_CHARACTER)
  	    parmtype = gfc_typenode_for_spec (&expr->ts);
  	  else
  	    parmtype = gfc_get_element_type (TREE_TYPE (desc));
--- 8439,8448 ----
  	}
        else
  	{
! 	  /* Otherwise make a new one.  The element type is that of the
! 	     subobject for a subreference of the array.  */
! 	  if (expr->ts.type == BT_CHARACTER
! 	      || (subref_array_target && !se->direct_byref))
  	    parmtype = gfc_typenode_for_spec (&expr->ts);
  	  else
  	    parmtype = gfc_get_element_type (TREE_TYPE (desc));
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans-decl.cc gcc-17-20260823/gcc/fortran/trans-decl.cc
*** gcc-17-20260816/gcc/fortran/trans-decl.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans-decl.cc	Sun Aug 23 22:32:08 2026
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 709,722 ****
  	 into common space, then C cannot initialize global Fortran
  	 variables that it interoperates with and the draft says that
  	 either Fortran or C should be able to initialize it (but not
! 	 both, of course.) (J3/04-007, section 15.3).  */
        TREE_PUBLIC(decl) = 1;
        DECL_COMMON(decl) = 1;
-       if (sym->attr.access == ACCESS_PRIVATE && !sym->attr.public_used)
- 	{
- 	  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
- 	  DECL_VISIBILITY_SPECIFIED (decl) = true;
- 	}
      }
  
    /* If a variable is USE associated, it's always external.  */
--- 709,719 ----
  	 into common space, then C cannot initialize global Fortran
  	 variables that it interoperates with and the draft says that
  	 either Fortran or C should be able to initialize it (but not
! 	 both, of course.) (J3/04-007, section 15.3).  A binding label has
! 	 external linkage, so PRIVATE hides only the Fortran name and must
! 	 not restrict the symbol's visibility.  */
        TREE_PUBLIC(decl) = 1;
        DECL_COMMON(decl) = 1;
      }
  
    /* If a variable is USE associated, it's always external.  */
*************** gfc_finish_var_decl (tree decl, gfc_symb
*** 742,748 ****
  
        TREE_PUBLIC (decl) = 1;
        TREE_STATIC (decl) = 1;
!       if (sym->attr.access == ACCESS_PRIVATE && !sym->attr.public_used)
  	{
  	  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
  	  DECL_VISIBILITY_SPECIFIED (decl) = true;
--- 739,746 ----
  
        TREE_PUBLIC (decl) = 1;
        TREE_STATIC (decl) = 1;
!       if (sym->attr.access == ACCESS_PRIVATE && !sym->attr.public_used
! 	  && !sym->binding_label)
  	{
  	  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
  	  DECL_VISIBILITY_SPECIFIED (decl) = true;
*************** gfc_build_dummy_array_decl (gfc_symbol *
*** 1408,1413 ****
--- 1406,1416 ----
  
    GFC_DECL_SAVED_DESCRIPTOR (decl) = dummy;
  
+   /* The elements of the actual argument can be spaced by more than the
+      element size, so the span of the descriptor is used to address them.  */
+   if (gfc_is_span_addressed_dummy (sym) && packed == PACKED_NO)
+     GFC_DECL_PTR_ARRAY_P (decl) = 1;
+ 
    if (sym->ns->proc_name->backend_decl == current_function_decl
        || sym->attr.contained)
      gfc_add_decl_to_function (decl);
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 1786,1792 ****
  	  && sym->attr.allocatable)
  	gfc_defer_symbol_init (sym);
  
!       if (sym->attr.pointer && sym->attr.dimension && sym->ts.type != BT_CLASS)
  	GFC_DECL_PTR_ARRAY_P (sym->backend_decl) = 1;
  
        /* Create a character length variable.  */
--- 1789,1796 ----
  	  && sym->attr.allocatable)
  	gfc_defer_symbol_init (sym);
  
!       if ((sym->attr.pointer && sym->attr.dimension && sym->ts.type != BT_CLASS)
! 	  || gfc_is_span_addressed_dummy (sym))
  	GFC_DECL_PTR_ARRAY_P (sym->backend_decl) = 1;
  
        /* Create a character length variable.  */
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 1848,1855 ****
  		    gfc_add_decl_to_parent_function (length);
  		}
  
! 	      gcc_assert (sym->backend_decl == current_function_decl
! 			  ? DECL_CONTEXT (length) == current_function_decl
  			  : (DECL_CONTEXT (sym->backend_decl)
  			     == DECL_CONTEXT (length)));
  
--- 1852,1862 ----
  		    gfc_add_decl_to_parent_function (length);
  		}
  
! 	      /* When the symbol's own backend_decl is a FUNCTION_DECL, its
! 		 DECL_CONTEXT is where that function itself is declared, not
! 		 where its locals live.  */
! 	      gcc_assert (TREE_CODE (sym->backend_decl) == FUNCTION_DECL
! 			  ? DECL_CONTEXT (length) == sym->backend_decl
  			  : (DECL_CONTEXT (sym->backend_decl)
  			     == DECL_CONTEXT (length)));
  
*************** gfc_get_symbol_decl (gfc_symbol * sym)
*** 2078,2083 ****
--- 2085,2104 ----
  	   && !sym->attr.subref_array_pointer))
      GFC_DECL_PTR_ARRAY_P (decl) = 1;
  
+   /* A SELECT RANK temporary uses a copy of the selector's descriptor.
+      Its elements may be spaced by more than the element size,
+      so use copied span as well.  */
+   if (sym->attr.select_rank_temporary && sym->attr.dimension
+       && GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (decl))
+       && sym->assoc && sym->assoc->target
+       && sym->assoc->target->expr_type == EXPR_VARIABLE)
+     {
+       gfc_symbol *sel = sym->assoc->target->symtree->n.sym;
+       if (!sel->attr.contiguous
+ 	  && (sel->attr.target || sel->attr.pointer || sel->ts.type == BT_CLASS))
+ 	GFC_DECL_PTR_ARRAY_P (decl) = 1;
+     }
+ 
    if (sym->ts.type == BT_CLASS)
      GFC_DECL_CLASS(decl) = 1;
  
*************** build_function_decl (gfc_symbol * sym, b
*** 2600,2608 ****
        /* Mirror the variable treatment (see gfc_finish_var_decl): PRIVATE
  	 module procedures get global linkage but hidden visibility so the
  	 symbol is reachable from submodules in the same link without being
! 	 exported to external DSOs.  */
        if (in_module_contains && sym->attr.access == ACCESS_PRIVATE
! 	  && !sym->attr.public_used)
  	{
  	  DECL_VISIBILITY (fndecl) = VISIBILITY_HIDDEN;
  	  DECL_VISIBILITY_SPECIFIED (fndecl) = true;
--- 2621,2630 ----
        /* Mirror the variable treatment (see gfc_finish_var_decl): PRIVATE
  	 module procedures get global linkage but hidden visibility so the
  	 symbol is reachable from submodules in the same link without being
! 	 exported to external DSOs.  A binding label has external linkage,
! 	 so PRIVATE hides only the Fortran name.  */
        if (in_module_contains && sym->attr.access == ACCESS_PRIVATE
! 	  && !sym->attr.public_used && !sym->binding_label)
  	{
  	  DECL_VISIBILITY (fndecl) = VISIBILITY_HIDDEN;
  	  DECL_VISIBILITY_SPECIFIED (fndecl) = true;
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans-expr.cc gcc-17-20260823/gcc/fortran/trans-expr.cc
*** gcc-17-20260816/gcc/fortran/trans-expr.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans-expr.cc	Sun Aug 23 22:32:08 2026
*************** gfc_class_array_data_assign (stmtblock_t
*** 837,842 ****
--- 837,844 ----
  
    gfc_conv_descriptor_dtype_set (block, lhs_desc,
  				 gfc_conv_descriptor_dtype_get (rhs_desc));
+   gfc_conv_descriptor_span_set (block, lhs_desc,
+ 				gfc_conv_descriptor_span_get (rhs_desc));
  
    /* Assign the dimension as range-ref.  */
    lhs_dim = gfc_get_descriptor_dimension (lhs_desc);
*************** gfc_conv_gfc_desc_to_cfi_desc (gfc_se *p
*** 6233,6246 ****
        else
  	gfc_conv_expr_descriptor (&se, e);
        gfc = se.expr;
!       /* For dt(:)%var the elem_len*stride != sm, hence, GFC uses
! 	 elem_len = sizeof(dt) and base_addr = dt(lb) instead.
! 	 gfc_get_dataptr_offset fixes the base_addr; for elem_len, see below.
! 	 While sm is fine as it uses span*stride and not elem_len.  */
        if (POINTER_TYPE_P (TREE_TYPE (gfc)))
  	gfc = build_fold_indirect_ref_loc (input_location, gfc);
-       else if (is_subref_array (e) && e->ts.type != BT_CHARACTER)
- 	 gfc_get_dataptr_offset (&se.pre, gfc, gfc, NULL, true, e);
      }
    if (e->ts.type == BT_CHARACTER)
      {
--- 6235,6246 ----
        else
  	gfc_conv_expr_descriptor (&se, e);
        gfc = se.expr;
!       /* For dt(:)%var, the base_addr is that of the subobject and elem_len is
! 	 its size, see below.  The descriptor built for a subreference of the
! 	 array provides both.  While sm is fine as it uses span*stride and not
! 	 elem_len.  */
        if (POINTER_TYPE_P (TREE_TYPE (gfc)))
  	gfc = build_fold_indirect_ref_loc (input_location, gfc);
      }
    if (e->ts.type == BT_CHARACTER)
      {
*************** conv_null_actual (gfc_se * parmse, gfc_e
*** 6954,6959 ****
--- 6954,7001 ----
  }
  
  
+ /* Return true if a subobject of the elements of an array is referenced.  */
+ 
+ static bool
+ is_subobject_ref (gfc_expr *e)
+ {
+   bool seen_array = false;
+ 
+   for (gfc_ref *ref = e->ref; ref; ref = ref->next)
+     {
+       if (ref->type == REF_ARRAY && ref->u.ar.type != AR_ELEMENT)
+ 	seen_array = true;
+       else if (seen_array)
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
+ 
+ /* Return true if the actual argument E for the dummy FSYM may be passed as a
+    copy-in/copy-out temporary.  A pointer associated with a TARGET or POINTER
+    dummy must remain valid after the call, so the actual argument is passed
+    directly, with a descriptor whose span provides the element spacing.  An
+    actual argument with a vector subscript is not definable and its pointer
+    association is undefined on return, so it is still copied.  */
+ 
+ static bool
+ copy_in_out_allowed (gfc_symbol *fsym, gfc_expr *e, bool nodesc_arg)
+ {
+   if (fsym == NULL || nodesc_arg || gfc_has_vector_subscript (e))
+     return true;
+ 
+   if (gfc_is_span_addressed_dummy (fsym))
+     return false;
+ 
+   return !(fsym->attr.pointer && !fsym->attr.contiguous && fsym->as
+ 	   && (fsym->as->type == AS_ASSUMED_SHAPE
+ 	       || fsym->as->type == AS_ASSUMED_RANK
+ 	       || fsym->as->type == AS_DEFERRED));
+ }
+ 
+ 
  /* Generate code for a procedure call.  Note can return se->post != NULL.
     If se->direct_byref is set then se->expr contains the return parameter.
     Return nonzero, if the call has alternate specifiers.
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 7985,7998 ****
  
  	      else if (e->expr_type == EXPR_VARIABLE
  		    && is_subref_array (e)
! 		    && !(fsym && fsym->attr.pointer))
  		/* The actual argument is a component reference to an
  		   array of derived types.  In this case, the argument
  		   is converted to a temporary, which is passed and then
! 		   written back after the procedure call.  */
  		gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  				fsym ? fsym->attr.intent : INTENT_INOUT,
! 				fsym && fsym->attr.pointer);
  
  	      else if (e->ts.type == BT_CLASS && CLASS_DATA (e)->as
  		       && CLASS_DATA (e)->as->type == AS_ASSUMED_SIZE
--- 8027,8046 ----
  
  	      else if (e->expr_type == EXPR_VARIABLE
  		    && is_subref_array (e)
! 		    && !(fsym && fsym->attr.pointer)
! 		    && copy_in_out_allowed (fsym, e, nodesc_arg))
  		/* The actual argument is a component reference to an
  		   array of derived types.  In this case, the argument
  		   is converted to a temporary, which is passed and then
! 		   written back after the procedure call.  The elements of
! 		   a span addressed dummy passed on as a whole are usually
! 		   contiguous, so the copy is made conditional.  */
  		gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  				fsym ? fsym->attr.intent : INTENT_INOUT,
! 				fsym && fsym->attr.pointer, fsym, sym->name,
! 				NULL,
! 				gfc_is_span_addressed_dummy (e->symtree->n.sym)
! 				&& !is_subobject_ref (e));
  
  	      else if (e->ts.type == BT_CLASS && CLASS_DATA (e)->as
  		       && CLASS_DATA (e)->as->type == AS_ASSUMED_SIZE
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 8004,8023 ****
  		parmse.expr = e->symtree->n.sym->backend_decl;
  
  	      else if (gfc_is_class_array_ref (e, NULL)
! 		       && fsym && fsym->ts.type == BT_DERIVED)
  		/* The actual argument is a component reference to an
  		   array of derived types.  In this case, the argument
  		   is converted to a temporary, which is passed and then
! 		   written back after the procedure call.
! 		   OOP-TODO: Insert code so that if the dynamic type is
! 		   the same as the declared type, copy-in/copy-out does
! 		   not occur.  */
  		gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					   fsym->attr.intent,
  					   fsym->attr.pointer);
  
  	      else if (gfc_is_class_array_function (e)
! 		       && fsym && fsym->ts.type == BT_DERIVED)
  		/* See previous comment.  For function actual argument,
  		   the write out is not needed so the intent is set as
  		   intent in.  */
--- 8052,8070 ----
  		parmse.expr = e->symtree->n.sym->backend_decl;
  
  	      else if (gfc_is_class_array_ref (e, NULL)
! 		       && fsym && fsym->ts.type == BT_DERIVED
! 		       && copy_in_out_allowed (fsym, e, nodesc_arg))
  		/* The actual argument is a component reference to an
  		   array of derived types.  In this case, the argument
  		   is converted to a temporary, which is passed and then
! 		   written back after the procedure call.  */
  		gfc_conv_subref_array_arg (&parmse, e, nodesc_arg,
  					   fsym->attr.intent,
  					   fsym->attr.pointer);
  
  	      else if (gfc_is_class_array_function (e)
! 		       && fsym && fsym->ts.type == BT_DERIVED
! 		       && copy_in_out_allowed (fsym, e, nodesc_arg))
  		/* See previous comment.  For function actual argument,
  		   the write out is not needed so the intent is set as
  		   intent in.  */
*************** gfc_conv_procedure_call (gfc_se * se, gf
*** 8038,8047 ****
  					     fsym->attr.pointer);
  		}
  	      else
! 		/* This is where we introduce a temporary to store the
! 		   result of a non-lvalue array expression.  */
! 		gfc_conv_array_parameter (&parmse, e, nodesc_arg, fsym,
! 					  sym->name, NULL);
  
  	      /* If an ALLOCATABLE dummy argument has INTENT(OUT) and is
  		 allocated on entry, it must be deallocated.
--- 8085,8101 ----
  					     fsym->attr.pointer);
  		}
  	      else
! 		{
! 		  /* Having declined copy-in/copy-out above, a subobject of an
! 		     array is described by a spanned descriptor.  */
! 		  if (e->expr_type == EXPR_VARIABLE && is_subref_array (e))
! 		    parmse.force_no_tmp = 1;
! 
! 		  /* This is where we introduce a temporary to store the
! 		     result of a non-lvalue array expression.  */
! 		  gfc_conv_array_parameter (&parmse, e, nodesc_arg, fsym,
! 					    sym->name, NULL);
! 		}
  
  	      /* If an ALLOCATABLE dummy argument has INTENT(OUT) and is
  		 allocated on entry, it must be deallocated.
*************** gfc_trans_subcomponent_assign (tree dest
*** 10184,10189 ****
--- 10238,10244 ----
  	       && expr->ts.type != BT_CLASS)))
      {
        tree size;
+       tree tmp2;
  
        gfc_init_se (&se, NULL);
        gfc_conv_expr (&se, expr);
*************** gfc_trans_subcomponent_assign (tree dest
*** 10245,10250 ****
--- 10300,10316 ----
  	  gfc_add_expr_to_block (&block,
  				 gfc_build_memcpy_call (tmp, se.expr, size));
  
+ 	  if (expr->ts.type == BT_DERIVED
+ 	      && expr->ts.u.derived->attr.alloc_comp
+ 	      && expr->expr_type != EXPR_NULL)
+ 	    {
+ 	      tmp2 = gfc_class_data_get (dest);
+ 	      tmp2 = gfc_copy_alloc_comp (expr->ts.u.derived, tmp2,
+ 					  gfc_class_data_get (dest),
+ 					  expr->rank, 0);
+ 	      gfc_add_expr_to_block (&block, tmp2);
+ 	    }
+ 
  	  /* Fill the unlimited polymorphic _len field.  */
  	  if (UNLIMITED_POLY (cm) && expr->ts.type == BT_CHARACTER)
  	    {
*************** gfc_trans_subcomponent_assign (tree dest
*** 10255,10262 ****
  	    }
  	}
        else
! 	gfc_add_modify (&block, tmp,
! 			fold_convert (TREE_TYPE (tmp), se.expr));
        gfc_add_block_to_block (&block, &se.post);
      }
    else if (expr->ts.type == BT_UNION)
--- 10321,10340 ----
  	    }
  	}
        else
! 	{
! 	  gfc_add_modify (&block, tmp,
! 			  fold_convert (TREE_TYPE (tmp), se.expr));
! 	  if (expr->ts.type == BT_DERIVED
! 	      && expr->ts.u.derived->attr.alloc_comp
! 	      && expr->expr_type != EXPR_NULL)
! 	    {
! 	      tmp2 = build_fold_indirect_ref_loc (input_location, dest);
! 	      tmp2 = gfc_copy_alloc_comp (cm->ts.u.derived, tmp2,
! 					  se.expr, expr->rank, 0);
! 	      gfc_add_expr_to_block (&block, tmp2);
! 	    }
! 	}
! 
        gfc_add_block_to_block (&block, &se.post);
      }
    else if (expr->ts.type == BT_UNION)
*************** gfc_trans_subcomponent_assign (tree dest
*** 10356,10361 ****
--- 10434,10480 ----
  	  gfc_add_expr_to_block (&block, tmp);
  	}
      }
+   else if (cm->ts.type == BT_CLASS
+ 	   && !CLASS_DATA (cm)->as
+ 	   && expr->ts.type == BT_CLASS)
+     {
+       tree vptr1, vptr2;
+       tree data1, data2;
+       tree size, fcn;
+ 
+       gfc_init_se (&se, NULL);
+ 
+       gfc_conv_expr (&se, expr);
+ 
+       /* Copy the _vptr to the destination....  */
+       vptr1 = gfc_class_vptr_get (dest);
+       vptr2 = gfc_class_vptr_get (se.expr);
+       gfc_add_modify (&block, vptr1,
+ 		      fold_convert (TREE_TYPE (vptr1), vptr2));
+ 
+       /* ....and the _len field if necessary.  */
+       size = gfc_vptr_size_get (vptr2);
+       if (UNLIMITED_POLY (cm) && UNLIMITED_POLY (expr))
+ 	{
+ 	  gfc_add_modify (&block, gfc_class_len_get (dest),
+ 			  gfc_class_len_get (se.expr));
+ 	  size = gfc_resize_class_size_with_len (&block, se.expr, size);
+ 	}
+ 
+       /* Allocate the destination data.  */
+       data1 = gfc_class_data_get (dest);
+       data2 = gfc_class_data_get (se.expr);
+       tmp = gfc_call_malloc (&block, TREE_TYPE (data1), size);
+       gfc_add_modify (&block, data1, tmp);
+ 
+       /* Now call the copy function. */
+       fcn = gfc_vptr_copy_get (vptr2);
+       if (POINTER_TYPE_P (TREE_TYPE (fcn)))
+ 	fcn = build_fold_indirect_ref_loc (input_location, fcn);
+       tmp = build_call_expr_loc (input_location, fcn, 2,
+ 				 data2, data1);
+       gfc_add_expr_to_block (&block, tmp);
+     }
    else if (!cm->attr.artificial)
      {
        /* Scalar component (excluding deferred parameters).  */
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans-intrinsic.cc gcc-17-20260823/gcc/fortran/trans-intrinsic.cc
*** gcc-17-20260816/gcc/fortran/trans-intrinsic.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans-intrinsic.cc	Sun Aug 23 22:32:08 2026
*************** gfc_conv_is_contiguous_expr (gfc_se *se,
*** 2386,2394 ****
        se->expr = cond;
      }
  
!   /* A pointer that does not have the CONTIGUOUS attribute needs to be checked
!      if it points to an array whose span differs from the element size.  */
!   if (as && sym && IS_POINTER(sym) && !sym->attr.contiguous)
      {
        tree span = gfc_conv_descriptor_span_get (desc);
        tmp = fold_convert (TREE_TYPE (span),
--- 2386,2395 ----
        se->expr = cond;
      }
  
!   /* An array that is addressed by the span of its descriptor needs to be
!      checked if that span differs from the element size.  */
!   if (as && sym && !sym->attr.contiguous
!       && (IS_POINTER (sym) || gfc_is_span_addressed_dummy (sym)))
      {
        tree span = gfc_conv_descriptor_span_get (desc);
        tmp = fold_convert (TREE_TYPE (span),
*************** gfc_conv_is_contiguous_expr (gfc_se *se,
*** 2400,2405 ****
--- 2401,2415 ----
  				  convert (boolean_type_node, se->expr));
      }
  
+   if (as && as->type == AS_ASSUMED_RANK)
+     {
+       tree rank = gfc_conv_descriptor_rank_get (desc);
+       tree scalar = fold_build2_loc (input_location, EQ_EXPR, boolean_type_node,
+ 				     rank, gfc_rank_cst[0]);
+       se->expr = fold_build2_loc (input_location, TRUTH_ORIF_EXPR,
+ 				  TREE_TYPE (se->expr), scalar, se->expr);
+     }
+ 
    gfc_free_ss_chain (ss);
  }
  
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans.cc gcc-17-20260823/gcc/fortran/trans.cc
*** gcc-17-20260816/gcc/fortran/trans.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans.cc	Sun Aug 23 22:32:08 2026
*************** gfc_build_addr_expr (tree type, tree t)
*** 389,394 ****
--- 389,415 ----
  }
  
  
+ /* Return the descriptor that carries the span of DECL, which is marked as a
+    pointer array.  Such a decl usually is a descriptor.  The local decl of a
+    descriptorless dummy array is not, so its span comes from the descriptor it
+    was built from, which is the saved one.  */
+ 
+ tree
+ gfc_get_span_descriptor (tree decl)
+ {
+   if (DECL_P (decl)
+       && GFC_ARRAY_TYPE_P (TREE_TYPE (decl))
+       && DECL_LANG_SPECIFIC (decl)
+       && GFC_DECL_SAVED_DESCRIPTOR (decl))
+     decl = GFC_DECL_SAVED_DESCRIPTOR (decl);
+ 
+   if (POINTER_TYPE_P (TREE_TYPE (decl)))
+     decl = build_fold_indirect_ref_loc (input_location, decl);
+ 
+   return decl;
+ }
+ 
+ 
  static tree
  get_array_span (tree type, tree decl)
  {
*************** get_array_span (tree type, tree decl)
*** 409,415 ****
        && (TREE_CODE (type) == ARRAY_TYPE || TREE_CODE (type) == INTEGER_TYPE)
        && TYPE_STRING_FLAG (type))
      {
!       if (TREE_CODE (decl) == PARM_DECL)
  	decl = build_fold_indirect_ref_loc (input_location, decl);
        if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (decl)))
  	span = gfc_conv_descriptor_span_get (decl);
--- 430,438 ----
        && (TREE_CODE (type) == ARRAY_TYPE || TREE_CODE (type) == INTEGER_TYPE)
        && TYPE_STRING_FLAG (type))
      {
!       if (DECL_P (decl) && GFC_DECL_PTR_ARRAY_P (decl))
! 	decl = gfc_get_span_descriptor (decl);
!       else if (TREE_CODE (decl) == PARM_DECL)
  	decl = build_fold_indirect_ref_loc (input_location, decl);
        if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (decl)))
  	span = gfc_conv_descriptor_span_get (decl);
*************** get_array_span (tree type, tree decl)
*** 449,459 ****
  	  span = gfc_resize_class_size_with_len (NULL, decl, span);
  	}
        else if (GFC_DECL_PTR_ARRAY_P (decl))
! 	{
! 	  if (TREE_CODE (decl) == PARM_DECL)
! 	    decl = build_fold_indirect_ref_loc (input_location, decl);
! 	  span = gfc_conv_descriptor_span_get (decl);
! 	}
        else
  	span = NULL_TREE;
      }
--- 472,478 ----
  	  span = gfc_resize_class_size_with_len (NULL, decl, span);
  	}
        else if (GFC_DECL_PTR_ARRAY_P (decl))
! 	span = gfc_conv_descriptor_span_get (gfc_get_span_descriptor (decl));
        else
  	span = NULL_TREE;
      }
diff -Nrcpad gcc-17-20260816/gcc/fortran/trans.h gcc-17-20260823/gcc/fortran/trans.h
*** gcc-17-20260816/gcc/fortran/trans.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/fortran/trans.h	Sun Aug 23 22:32:08 2026
*************** tree gfc_build_array_ref (tree, tree, tr
*** 641,646 ****
--- 641,649 ----
  /* Build an array ref using pointer arithmetic.  */
  tree gfc_build_spanned_array_ref (tree base, tree offset, tree span);
  
+ /* Return the descriptor holding the span of a pointer array decl.  */
+ tree gfc_get_span_descriptor (tree);
+ 
  /* Creates a label.  Decl is artificial if label_id == NULL_TREE.  */
  tree gfc_build_label_decl (tree);
  
diff -Nrcpad gcc-17-20260816/gcc/function.cc gcc-17-20260823/gcc/function.cc
*** gcc-17-20260816/gcc/function.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/function.cc	Sun Aug 23 22:32:08 2026
*************** prepare_function_start (void)
*** 4978,4983 ****
--- 4978,4987 ----
    /* Reset the cache of the "extended" flag in the target's
       _BitInt info struct.  */
    bitint_extended = -1;
+ 
+   /* Reset the divisor of the last division expanded, so that a function's
+      code does not depend on what was expanded before it.  */
+   last_div_const = 0;
  }
  
  void
diff -Nrcpad gcc-17-20260816/gcc/gimple-fold.cc gcc-17-20260823/gcc/gimple-fold.cc
*** gcc-17-20260816/gcc/gimple-fold.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-fold.cc	Sun Aug 23 22:32:08 2026
*************** gimple_fold_builtin_fputs (gimple_stmt_i
*** 3099,3104 ****
--- 3099,3146 ----
      }
  }
  
+ /* Fold a call to fwrite (PTR, SIZE, N, STREAM) at *GSI.  UNLOCKED says whether
+    the callee is fwrite_unlocked rather than fwrite.  A call that transfers a
+    single byte and whose result is nobody's business writes the same byte as
+    fputc (*PTR, STREAM), which reaches the stream without going through the
+    generic buffered-write path.  Return true if the call was folded.  */
+ 
+ static bool
+ gimple_fold_builtin_fwrite (gimple_stmt_iterator *gsi, bool unlocked)
+ {
+   gimple *stmt = gsi_stmt (*gsi);
+ 
+   /* fwrite reports the number of items transferred and fputc the character
+      written, so only fold when nothing looks at the result.  */
+   if (gimple_call_lhs (stmt))
+     return false;
+ 
+   /* fwrite transfers SIZE * N bytes, so writing a single byte needs both
+      counts to be one: no other pair of non-negative values multiplies to
+      one.  */
+   if (!integer_onep (gimple_call_arg (stmt, 1))
+       || !integer_onep (gimple_call_arg (stmt, 2)))
+     return false;
+ 
+   /* If we're using an unlocked function, assume the other unlocked
+      functions exist explicitly.  */
+   tree const fn_fputc = (unlocked
+ 			 ? builtin_decl_explicit (BUILT_IN_FPUTC_UNLOCKED)
+ 			 : builtin_decl_implicit (BUILT_IN_FPUTC));
+   if (!fn_fputc || (!gimple_vdef (stmt) && gimple_in_ssa_p (cfun)))
+     return false;
+ 
+   location_t loc = gimple_location (stmt);
+   gimple_seq stmts = NULL;
+   tree byte = gimple_load_first_char (loc, gimple_call_arg (stmt, 0), &stmts);
+   tree c = gimple_convert (&stmts, integer_type_node, byte);
+   tree stream = gimple_call_arg (stmt, 3);
+   gcall *repl = gimple_build_call (fn_fputc, 2, c, stream);
+   gimple_seq_add_stmt_without_update (&stmts, repl);
+   gsi_replace_with_seq_vops (gsi, stmts);
+   return true;
+ }
+ 
  /* Fold a call to the __mem{cpy,pcpy,move,set}_chk builtin.
     DEST, SRC, LEN, and SIZE are the arguments to the call.
     IGNORE is true, if return value can be ignored.  FCODE is the BUILT_IN_*
*************** gimple_fold_builtin (gimple_stmt_iterato
*** 5583,5588 ****
--- 5625,5634 ----
      case BUILT_IN_FPUTS_UNLOCKED:
        return gimple_fold_builtin_fputs (gsi, gimple_call_arg (stmt, 0),
  					gimple_call_arg (stmt, 1), true);
+     case BUILT_IN_FWRITE:
+       return gimple_fold_builtin_fwrite (gsi, false);
+     case BUILT_IN_FWRITE_UNLOCKED:
+       return gimple_fold_builtin_fwrite (gsi, true);
      case BUILT_IN_MEMCPY_CHK:
      case BUILT_IN_MEMPCPY_CHK:
      case BUILT_IN_MEMMOVE_CHK:
diff -Nrcpad gcc-17-20260816/gcc/gimple-low.cc gcc-17-20260823/gcc/gimple-low.cc
*** gcc-17-20260816/gcc/gimple-low.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-low.cc	Sun Aug 23 22:32:08 2026
*************** lower_assumption (gimple_stmt_iterator *
*** 673,678 ****
--- 673,680 ----
      }
    DECL_ARGUMENTS (lad.id.dst_fn) = parms;
    TREE_TYPE (lad.id.dst_fn) = build_function_type (boolean_type_node, parmt);
+   /* The body function no longer has var. args, unset stdarg.  */
+   DECL_STRUCT_FUNCTION (lad.id.dst_fn)->stdarg = 0;
  
    cgraph_node::add_new_function (lad.id.dst_fn, false);
  
diff -Nrcpad gcc-17-20260816/gcc/gimple-lower-bitint.cc gcc-17-20260823/gcc/gimple-lower-bitint.cc
*** gcc-17-20260816/gcc/gimple-lower-bitint.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-lower-bitint.cc	Sun Aug 23 22:32:08 2026
*************** bitint_large_huge::finish_arith_overflow
*** 4594,4601 ****
  			     build_fold_addr_expr (unshare_expr (obj)), off);
  	  g = gimple_build_call (fn, 3,
  				 build_fold_addr_expr (unshare_expr (obj)),
! 				 src, build_int_cst (size_type_node,
! 						     obj_nelts * m_limb_size));
  	  insert_before (g);
  	}
        if (orig_obj == NULL_TREE && obj)
--- 4594,4602 ----
  			     build_fold_addr_expr (unshare_expr (obj)), off);
  	  g = gimple_build_call (fn, 3,
  				 build_fold_addr_expr (unshare_expr (obj)),
! 				 build_fold_addr_expr (src),
! 				 build_int_cst (size_type_node,
! 						obj_nelts * m_limb_size));
  	  insert_before (g);
  	}
        if (orig_obj == NULL_TREE && obj)
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-cache.cc gcc-17-20260823/gcc/gimple-range-cache.cc
*** gcc-17-20260816/gcc/gimple-range-cache.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-cache.cc	Sun Aug 23 22:32:08 2026
*************** block_range_cache::~block_range_cache ()
*** 381,386 ****
--- 381,397 ----
    bitmap_obstack_release (&m_bitmaps);
  }
  
+ // Clear block info for NAME.
+ 
+ void
+ block_range_cache::clear (tree name)
+ {
+   unsigned v = SSA_NAME_VERSION (name);
+   if (v >= m_ssa_ranges.length ())
+     return;
+   m_ssa_ranges[v] = NULL;
+ }
+ 
  // Set the range for NAME on entry to block BB to R.
  // If it has not been accessed yet, allocate it first.
  
*************** ranger_cache::apply_inferred_ranges (gim
*** 1982,1984 ****
--- 1993,2005 ----
      for (unsigned x = 0; x < infer.num (); x++)
        register_inferred_value (infer.range (x), infer.name (x), bb);
  }
+ 
+ // Reset range info for NAME.
+ 
+ void
+ ranger_cache::reset_range_info (tree name)
+ {
+   m_on_entry.clear (name);
+   m_globals.clear_range (name);
+   range_query::reset_range_info (name);
+ }
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-cache.h gcc-17-20260823/gcc/gimple-range-cache.h
*** gcc-17-20260816/gcc/gimple-range-cache.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-cache.h	Sun Aug 23 22:32:08 2026
*************** public:
*** 38,43 ****
--- 38,44 ----
    bool set_bb_range (tree name, const_basic_block bb, const vrange &v);
    bool get_bb_range (vrange &v, tree name, const_basic_block bb);
    bool bb_range_p (tree name, const_basic_block bb);
+   void clear (tree name);
  
    void dump (FILE *f);
    void dump (FILE *f, basic_block bb, bool print_varying = true);
*************** public:
*** 120,125 ****
--- 121,128 ----
    void register_inferred_value (const vrange &r, tree name, basic_block bb);
    void apply_inferred_ranges (gimple *s);
  
+   void reset_range_info (tree name);
+ 
    void dump_bb (FILE *f, basic_block bb);
    virtual void dump (FILE *f) override;
  private:
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-gori.cc gcc-17-20260823/gcc/gimple-range-gori.cc
*** gcc-17-20260816/gcc/gimple-range-gori.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-gori.cc	Sun Aug 23 22:32:08 2026
*************** range_def_chain::get_def_chain (tree nam
*** 295,300 ****
--- 295,315 ----
    return m_def_chain[v].bm;
  }
  
+ // Clear def chain info for NAME.
+ 
+ void
+ range_def_chain::clear (tree name)
+ {
+   unsigned v = SSA_NAME_VERSION (name);
+   if (v >= m_def_chain.length ())
+     return;
+ 
+   m_def_chain[v].ssa1 = 0;
+   m_def_chain[v].ssa2 = 0;
+   m_def_chain[v].bm = NULL;
+   get_def_chain (name);
+ }
+ 
  // Dump what we know for basic block BB to file F.
  
  void
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-gori.h gcc-17-20260823/gcc/gimple-range-gori.h
*** gcc-17-20260816/gcc/gimple-range-gori.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-gori.h	Sun Aug 23 22:32:08 2026
*************** public:
*** 36,41 ****
--- 36,42 ----
    bool in_chain_p (tree name, tree def);
    bool chain_import_p (tree name, tree import);
    void register_dependency (tree name, tree ssa1, basic_block bb = NULL);
+   void clear (tree name);
    void dump (FILE *f, basic_block bb, const char *prefix = NULL);
  protected:
    bool has_def_chain (tree name);
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-infer.cc gcc-17-20260823/gcc/gimple-range-infer.cc
*** gcc-17-20260816/gcc/gimple-range-infer.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-infer.cc	Sun Aug 23 22:32:08 2026
*************** public:
*** 311,316 ****
--- 311,317 ----
    gimple *stmt;
    vrange_storage *range;
    exit_range *next;
+   exit_range *name_link;
  };
  
  
*************** infer_range_manager::infer_range_manager
*** 353,360 ****
      m_seen = NULL;
    obstack_init (&m_list_obstack);
    // Non-zero elements are very common, so cache them for each ssa-name.
!   m_nonzero.create (0);
!   m_nonzero.safe_grow_cleared (num_ssa_names + 1);
    m_range_allocator = new vrange_allocator;
  }
  
--- 354,361 ----
      m_seen = NULL;
    obstack_init (&m_list_obstack);
    // Non-zero elements are very common, so cache them for each ssa-name.
!   m_name_info.create (0);
!   m_name_info.safe_grow_cleared (num_ssa_names + 1);
    m_range_allocator = new vrange_allocator;
  }
  
*************** infer_range_manager::infer_range_manager
*** 362,368 ****
  
  infer_range_manager::~infer_range_manager ()
  {
!   m_nonzero.release ();
    obstack_free (&m_list_obstack, NULL);
    m_on_exit.release ();
    bitmap_obstack_release (&m_bitmaps);
--- 363,369 ----
  
  infer_range_manager::~infer_range_manager ()
  {
!   m_name_info.release ();
    obstack_free (&m_list_obstack, NULL);
    m_on_exit.release ();
    bitmap_obstack_release (&m_bitmaps);
*************** const vrange&
*** 376,390 ****
  infer_range_manager::get_nonzero (tree name)
  {
    unsigned v = SSA_NAME_VERSION (name);
!   if (v >= m_nonzero.length ())
!     m_nonzero.safe_grow_cleared (num_ssa_names + 20);
!   if (!m_nonzero[v])
      {
!       m_nonzero[v]
  	= (irange *) m_range_allocator->alloc (sizeof (int_range <2>));
!       m_nonzero[v]->set_nonzero (TREE_TYPE (name));
      }
!   return *(m_nonzero[v]);
  }
  
  // Return TRUE if NAME has a range inference in block BB.  If NAME is NULL,
--- 377,391 ----
  infer_range_manager::get_nonzero (tree name)
  {
    unsigned v = SSA_NAME_VERSION (name);
!   if (v >= m_name_info.length ())
!     m_name_info.safe_grow_cleared (num_ssa_names + 20);
!   if (!m_name_info[v].nonzero)
      {
!       m_name_info[v].nonzero
  	= (irange *) m_range_allocator->alloc (sizeof (int_range <2>));
!       m_name_info[v].nonzero->set_nonzero (TREE_TYPE (name));
      }
!   return *(m_name_info[v].nonzero);
  }
  
  // Return TRUE if NAME has a range inference in block BB.  If NAME is NULL,
*************** infer_range_manager::add_range (tree nam
*** 453,458 ****
--- 454,462 ----
    if (bb->index >= (int)m_on_exit.length ())
      m_on_exit.safe_grow_cleared (last_basic_block_for_fn (cfun) + 1);
  
+   if (SSA_NAME_VERSION (name) >= m_name_info.length ())
+     m_name_info.safe_grow_cleared (num_ssa_names + 20);
+ 
    // Create the summary list bitmap if it doesn't exist.
    if (!m_on_exit[bb->index].m_names)
        m_on_exit[bb->index].m_names = BITMAP_ALLOC (&m_bitmaps);
*************** infer_range_manager::add_range (tree nam
*** 493,498 ****
--- 497,504 ----
    ptr->name = name;
    ptr->stmt = s;
    ptr->next = m_on_exit[bb->index].head;
+   ptr->name_link = m_name_info[SSA_NAME_VERSION (name)].name_link;
+   m_name_info[SSA_NAME_VERSION (name)].name_link = ptr;
    m_on_exit[bb->index].head = ptr;
  }
  
*************** infer_range_manager::register_all_uses (
*** 532,534 ****
--- 538,564 ----
  	}
      }
  }
+ 
+ // Clear all inferred ranges for NAME.
+ 
+ void
+ infer_range_manager::clear(tree name)
+ {
+   // Check if this name has any inferred ranges.
+   unsigned v = SSA_NAME_VERSION (name);
+   if (v >= m_name_info.length ())
+     return;
+ 
+   exit_range *ptr = m_name_info[v].name_link;
+   for ( ; ptr ; ptr = ptr->name_link)
+     {
+       basic_block bb = gimple_bb (ptr->stmt);
+       unsigned bbi = bb->index;
+       bitmap_clear_bit (m_on_exit[bbi].m_names, v);
+       ptr->name = NULL;
+     }
+ 
+   m_name_info[v].name_link = NULL;
+   if (m_seen)
+     bitmap_clear_bit (m_seen, v);
+ }
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-infer.h gcc-17-20260823/gcc/gimple-range-infer.h
*** gcc-17-20260816/gcc/gimple-range-infer.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-infer.h	Sun Aug 23 22:32:08 2026
*************** public:
*** 89,94 ****
--- 89,95 ----
    virtual bool has_range_p (basic_block, tree = NULL_TREE) { return false; }
    virtual bool maybe_adjust_range (vrange &, tree, basic_block)
        { return false; }
+   virtual void clear (tree) { }
  };
  
  // This class manages a list of inferred ranges for each basic block.
*************** public:
*** 115,120 ****
--- 116,122 ----
    virtual void add_ranges (gimple *s, gimple_infer_range &ir);
    virtual bool has_range_p (basic_block bb, tree name = NULL_TREE);
    virtual bool maybe_adjust_range (vrange &r, tree name, basic_block bb);
+   virtual void clear (tree name);
  private:
    void add_range (tree name, gimple *s, const vrange &r);
    void add_nonzero (tree name, gimple *s);
*************** private:
*** 126,135 ****
      int m_num_ranges;
      exit_range *find_ptr (tree name);
    };
    void register_all_uses (tree name);
    vec <exit_range_head> m_on_exit;
    const vrange &get_nonzero (tree name);
-   vec <vrange *> m_nonzero;
    bitmap m_seen;
    bitmap_obstack m_bitmaps;
    struct obstack m_list_obstack;
--- 128,143 ----
      int m_num_ranges;
      exit_range *find_ptr (tree name);
    };
+   class ssa_name_link
+   {
+   public:
+     vrange *nonzero;
+     exit_range *name_link;
+   };
    void register_all_uses (tree name);
    vec <exit_range_head> m_on_exit;
+   vec <ssa_name_link> m_name_info;
    const vrange &get_nonzero (tree name);
    bitmap m_seen;
    bitmap_obstack m_bitmaps;
    struct obstack m_list_obstack;
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-op.cc gcc-17-20260823/gcc/gimple-range-op.cc
*** gcc-17-20260816/gcc/gimple-range-op.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-op.cc	Sun Aug 23 22:32:08 2026
*************** private:
*** 794,799 ****
--- 794,847 ----
    combined_fn m_cfn;
  } op_cfn_sin (CFN_SIN), op_cfn_cos (CFN_COS);
  
+ 
+ // FP functions which are nonnegative independent of the arguments.
+ class cfn_fp_nonnegative : public range_operator
+ {
+ public:
+   using range_operator::fold_range;
+   virtual bool fold_range (frange &r, tree type,
+ 			   const frange &, const frange &,
+ 			   relation_trio) const final override
+   {
+     r.set_nonnegative (type);
+     return true;
+   }
+ } op_cfn_fp_nonegative;
+ 
+ // FP functions which are nonnegative if arg0 is nonnegative.
+ // Also handles pass through of if non-nan
+ class cfn_fp_nonnegative_arg0 : public range_operator
+ {
+ public:
+   using range_operator::fold_range;
+   cfn_fp_nonnegative_arg0(bool nan) : arg_nan (nan) {}
+   virtual bool fold_range (frange &r, tree type,
+ 			   const frange &op1, const frange &,
+ 			   relation_trio) const final override
+   {
+     if (op1.undefined_p ())
+       return false;
+     bool changed = false;
+     bool sign = false;
+     if (op1.signbit_p (sign) && !sign)
+       {
+ 	r.set_nonnegative (type);
+ 	changed = true;
+       }
+     if (arg_nan && !op1.maybe_isnan ())
+       {
+ 	if (r.undefined_p ())
+ 	  r.set_varying (type);
+ 	r.clear_nan ();
+ 	changed = true;
+       }
+     return changed;
+   }
+ private:
+   bool arg_nan;
+ } op_cfn_fp_nonegative_arg0(false), op_cfn_fp_nonegative_nan_arg0(true);
+ 
  // Implement range operator for CFN_BUILT_IN_TOUPPER and CFN_BUILT_IN_TOLOWER.
  class cfn_toupper_tolower : public range_operator
  {
*************** gimple_range_op_handler::maybe_builtin_c
*** 1574,1579 ****
--- 1622,1713 ----
        m_operator = &op_cfn_parity;
        break;
  
+     CASE_CFN_ACOS:
+     CASE_CFN_ACOS_FN:
+     CASE_CFN_ACOSH:
+     CASE_CFN_ACOSH_FN:
+     CASE_CFN_ACOSPI:
+     CASE_CFN_ACOSPI_FN:
+     CASE_CFN_CABS:
+     CASE_CFN_CABS_FN:
+     CASE_CFN_COSH:
+     CASE_CFN_COSH_FN:
+     CASE_CFN_ERFC:
+     CASE_CFN_ERFC_FN:
+     CASE_CFN_EXP:
+     CASE_CFN_EXP_FN:
+     CASE_CFN_EXP10:
+     CASE_CFN_EXP2:
+     CASE_CFN_EXP2_FN:
+     CASE_CFN_FABS:
+     CASE_CFN_FABS_FN:
+     CASE_CFN_FDIM:
+     CASE_CFN_FDIM_FN:
+     CASE_CFN_HYPOT:
+     CASE_CFN_HYPOT_FN:
+     CASE_CFN_POW10:
+       m_operator = &op_cfn_fp_nonegative;
+       break;
+ 
+     // FIXME: some of these can do better than just nonnegative.
+     CASE_CFN_ASINH:
+     CASE_CFN_ASINH_FN:
+     CASE_CFN_ASINPI:
+     CASE_CFN_ASINPI_FN:
+     CASE_CFN_ATAN:
+     CASE_CFN_ATAN_FN:
+     CASE_CFN_ATANH:
+     CASE_CFN_ATANH_FN:
+     CASE_CFN_ATANPI:
+     CASE_CFN_ATANPI_FN:
+     CASE_CFN_CBRT:
+     CASE_CFN_CBRT_FN:
+     CASE_CFN_ERF:
+     CASE_CFN_ERF_FN:
+     CASE_CFN_EXPM1:
+     CASE_CFN_EXPM1_FN:
+     CASE_CFN_FMOD:
+     CASE_CFN_FMOD_FN:
+     CASE_CFN_FREXP:
+     CASE_CFN_FREXP_FN:
+     CASE_CFN_MODF:
+     CASE_CFN_MODF_FN:
+     CASE_CFN_SCALB:
+     CASE_CFN_SCALBLN:
+     CASE_CFN_SCALBLN_FN:
+     CASE_CFN_SCALBN:
+     CASE_CFN_SCALBN_FN:
+     CASE_CFN_SIGNIFICAND:
+     CASE_CFN_SINH:
+     CASE_CFN_SINH_FN:
+     CASE_CFN_TANH:
+     CASE_CFN_TANH_FN:
+     CASE_CFN_LDEXP:
+       m_operator = &op_cfn_fp_nonegative_arg0;
+       m_op1 = gimple_call_arg (call, 0);
+       break;
+ 
+ 
+     // FIXME: these can be improved for the rounding builtins.
+     // Currently just sets non-negative and update nan.
+     CASE_CFN_FLOOR:
+     CASE_CFN_FLOOR_FN:
+     CASE_CFN_CEIL:
+     CASE_CFN_CEIL_FN:
+     CASE_CFN_NEARBYINT:
+     CASE_CFN_NEARBYINT_FN:
+     CASE_CFN_RINT:
+     CASE_CFN_RINT_FN:
+     CASE_CFN_ROUND:
+     CASE_CFN_ROUND_FN:
+     CASE_CFN_ROUNDEVEN:
+     CASE_CFN_ROUNDEVEN_FN:
+     CASE_CFN_TRUNC:
+     CASE_CFN_TRUNC_FN:
+       m_operator = &op_cfn_fp_nonegative_nan_arg0;
+       m_op1 = gimple_call_arg (call, 0);
+       break;
+ 
      default:
        {
  	unsigned arg;
diff -Nrcpad gcc-17-20260816/gcc/gimple-range-path.cc gcc-17-20260823/gcc/gimple-range-path.cc
*** gcc-17-20260816/gcc/gimple-range-path.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range-path.cc	Sun Aug 23 22:32:08 2026
*************** path_range_query::internal_range_of_expr
*** 156,162 ****
--- 156,167 ----
        return true;
      }
  
+   // We can be called from match.pd or elsewhere, with a context statement
+   // that can be anywhere on the path.  Since we can only compute ranges
+   // mid flight at the current path position, check that's the case,
+   // otherwise fall through to the global range.
    if (stmt
+       && gimple_bb (stmt) == curr_bb ()
        && range_defined_in_block (r, name, gimple_bb (stmt)))
      {
        if (TREE_CODE (name) == SSA_NAME)
*************** path_range_query::ssa_range_in_phi (vran
*** 290,295 ****
--- 295,305 ----
  bool
  path_range_query::range_defined_in_block (vrange &r, tree name, basic_block bb)
  {
+   // Ranges can only be calculated at the current path position, both
+   // while pre-computing the cache and when answering questions at the
+   // path exit afterwards.
+   gcc_assert (bb == curr_bb ());
+ 
    gimple *def_stmt = SSA_NAME_DEF_STMT (name);
    basic_block def_bb = gimple_bb (def_stmt);
  
diff -Nrcpad gcc-17-20260816/gcc/gimple-range.cc gcc-17-20260823/gcc/gimple-range.cc
*** gcc-17-20260816/gcc/gimple-range.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range.cc	Sun Aug 23 22:32:08 2026
*************** gimple_ranger::update_range_info (tree n
*** 607,612 ****
--- 607,621 ----
      }
  }
  
+ // Reset range information for NAME.
+ 
+ void
+ gimple_ranger::reset_range_info (tree name)
+ {
+   // Clearing the cache will also clear all the shared oracles.
+   m_cache.reset_range_info (name);
+ }
+ 
  // This routine will export whatever global ranges are known to GCC
  // SSA_RANGE_NAME_INFO and SSA_NAME_PTR_INFO fields.
  
diff -Nrcpad gcc-17-20260816/gcc/gimple-range.h gcc-17-20260823/gcc/gimple-range.h
*** gcc-17-20260816/gcc/gimple-range.h	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/gimple-range.h	Sun Aug 23 22:32:08 2026
*************** public:
*** 65,70 ****
--- 65,71 ----
    void register_inferred_ranges (gimple *s);
    void register_transitive_inferred_ranges (basic_block bb);
    range_query &const_query ();
+   void reset_range_info (tree name);
  protected:
    bool fold_range_internal (vrange &r, gimple *s, tree name);
    struct prefill_frame
diff -Nrcpad gcc-17-20260816/gcc/ifcvt.cc gcc-17-20260823/gcc/ifcvt.cc
*** gcc-17-20260816/gcc/ifcvt.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/ifcvt.cc	Sun Aug 23 22:32:08 2026
*************** cc_in_cond (rtx cond)
*** 1094,1099 ****
--- 1094,1153 ----
    return NULL_RTX;
  }
  
+ struct noce_cc_reg_set
+ {
+   HARD_REG_SET set;
+   unsigned int fixed_regno1;
+   unsigned int fixed_regno2;
+ };
+ 
+ /* If DEST is a hard condition-code register, add it to the set in DATA.
+    PAT is the SET or CLOBBER that writes DEST.  */
+ 
+ static void
+ noce_record_cc_reg_set (rtx dest, const_rtx pat ATTRIBUTE_UNUSED, void *data)
+ {
+   noce_cc_reg_set *cc_regs = (noce_cc_reg_set *) data;
+ 
+   if (REG_P (dest) && HARD_REGISTER_P (dest)
+       && (GET_MODE_CLASS (GET_MODE (dest)) == MODE_CC
+ 	  || REGNO (dest) == targetm.flags_regnum
+ 	  || REGNO (dest) == cc_regs->fixed_regno1
+ 	  || REGNO (dest) == cc_regs->fixed_regno2))
+     add_to_hard_reg_set (&cc_regs->set, GET_MODE (dest), REGNO (dest));
+ }
+ 
+ /* Return true if SEQ writes a condition-code register that still holds a
+    value which is live on exit from TEST_BB.
+ 
+    An if-converted sequence is emitted immediately before the jump that ends
+    TEST_BB, and the conversion then removes that jump, so a condition code
+    that is live out of TEST_BB is one which a later block still reads.
+    Expanding a conditional move can emit a fresh comparison, and that would
+    destroy it.  */
+ 
+ static bool
+ noce_clobbers_live_cc_p (basic_block test_bb, rtx_insn *seq)
+ {
+   noce_cc_reg_set cc_regs;
+   CLEAR_HARD_REG_SET (cc_regs.set);
+   cc_regs.fixed_regno1 = INVALID_REGNUM;
+   cc_regs.fixed_regno2 = INVALID_REGNUM;
+   targetm.fixed_condition_code_regs (&cc_regs.fixed_regno1,
+ 				     &cc_regs.fixed_regno2);
+   for (rtx_insn *insn = seq; insn; insn = NEXT_INSN (insn))
+     note_stores (insn, noce_record_cc_reg_set, &cc_regs);
+ 
+   bitmap live_out = df_get_live_out (test_bb);
+   hard_reg_set_iterator hrsi;
+   unsigned int regno;
+   EXECUTE_IF_SET_IN_HARD_REG_SET (cc_regs.set, 0, regno, hrsi)
+     if (bitmap_bit_p (live_out, regno))
+       return true;
+ 
+   return false;
+ }
+ 
  /* Return sequence of instructions generated by if conversion.  This
     function calls end_sequence() to end the current stream, ensures
     that the instructions are unshared, recognizable non-jump insns.
*************** end_ifcvt_sequence (struct noce_if_info
*** 1128,1133 ****
--- 1182,1191 ----
  	|| (cc && set_of (cc, insn)))
        return NULL;
  
+   /* CC above only covers the condition code read by the converted branch.  */
+   if (noce_clobbers_live_cc_p (if_info->test_bb, seq))
+     return NULL;
+ 
    return seq;
  }
  
*************** noce_convert_multiple_sets (struct noce_
*** 4015,4020 ****
--- 4073,4083 ----
  	|| recog_memoized (insn) == -1)
        return false;
  
+   /* This path does not go through end_ifcvt_sequence, so apply the same rule
+      about condition codes that outlive the if-region.  */
+   if (noce_clobbers_live_cc_p (test_bb, seq))
+     return false;
+ 
    emit_insn_before_setloc (seq, if_info->jump,
  			   INSN_LOCATION (insn_info.last ()->unmodified_insn));
  
*************** bb_ok_for_noce_convert_multiple_sets (ba
*** 4440,4450 ****
  /* Compute average of two given costs weighted by relative probabilities
     of respective basic blocks in an IF-THEN-ELSE.  E is the IF-THEN edge.
     With P as the probability to take the IF-THEN branch, return
!    P * THEN_COST + (1 - P) * ELSE_COST.  */
  static unsigned
  average_cost (unsigned then_cost, unsigned else_cost, edge e)
  {
!   return else_cost + e->probability.apply ((signed) (then_cost - else_cost));
  }
  
  /* Given a simple IF-THEN-JOIN or IF-THEN-ELSE-JOIN block, attempt to convert
--- 4503,4522 ----
  /* Compute average of two given costs weighted by relative probabilities
     of respective basic blocks in an IF-THEN-ELSE.  E is the IF-THEN edge.
     With P as the probability to take the IF-THEN branch, return
!    P * THEN_COST + (1 - P) * ELSE_COST.  Evaluate this as
!    ELSE_COST + P * (THEN_COST - ELSE_COST) when THEN_COST >= ELSE_COST, and
!    THEN_COST + (1 - P) * (ELSE_COST - THEN_COST) otherwise.  Both forms pass
!    a nonnegative value to profile_probability::apply and make its rounding
!    independent of the CFG arm order.  */
  static unsigned
  average_cost (unsigned then_cost, unsigned else_cost, edge e)
  {
!   if (then_cost < else_cost)
!     return then_cost
!       + e->probability.invert ().apply ((gcov_type) else_cost - then_cost);
! 
!   return else_cost
!     + e->probability.apply ((gcov_type) then_cost - else_cost);
  }
  
  /* Given a simple IF-THEN-JOIN or IF-THEN-ELSE-JOIN block, attempt to convert
diff -Nrcpad gcc-17-20260816/gcc/ipa-prop.cc gcc-17-20260823/gcc/ipa-prop.cc
*** gcc-17-20260816/gcc/ipa-prop.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/ipa-prop.cc	Sun Aug 23 22:32:08 2026
*************** ipa_compute_jump_functions_for_edge (str
*** 2501,2508 ****
    if (flag_devirtualize)
      vec_safe_grow_cleared (args->polymorphic_call_contexts, arg_num, true);
  
-   if (gimple_call_internal_p (call))
-     return;
    if (ipa_func_spec_opts_forbid_analysis_p (cs->caller))
      return;
  
--- 2501,2506 ----
diff -Nrcpad gcc-17-20260816/gcc/m2/ChangeLog gcc-17-20260823/gcc/m2/ChangeLog
*** gcc-17-20260816/gcc/m2/ChangeLog	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/m2/ChangeLog	Sun Aug 23 22:32:08 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-08-19  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/126911
+ 	* tools-src/mktargetsrc.py (safeRemove): New function.
+ 	(quietSystem): Call safeRemove for temporaryFile and
+ 	args.outputfile.
+ 
+ 2026-08-19  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	PR modula2/126911
+ 	* tools-src/mktargetsrc.py (quietSystem): Add temporaryFile
+ 	parameter.
+ 	Tidy up if result is non zero by removing temporaryFile
+ 	and args.outputfile.
+ 
  2026-08-12  Gaius Mulley  <gaiusmod2@gmail.com>
  
  	PR modula2/125129
diff -Nrcpad gcc-17-20260816/gcc/m2/tools-src/mktargetsrc.py gcc-17-20260823/gcc/m2/tools-src/mktargetsrc.py
*** gcc-17-20260816/gcc/m2/tools-src/mktargetsrc.py	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/m2/tools-src/mktargetsrc.py	Sun Aug 23 22:32:08 2026
*************** def printf (format, *args):
*** 38,44 ****
      print(str(format) % args, end=' ')
  
  
! def quietSystem(args, commandLine):
      # Execute commandline and exit if unsuccessful.  It will run
      # gdb on the command line if --gdb is set in args.
      if args.gdb:
--- 38,50 ----
      print(str(format) % args, end=' ')
  
  
! def safeRemove(filename):
!     # Remove filename if the name is not None and the filename exists.
!     if (filename != None) and os.path.exists(filename):
!         os.remove(filename)
! 
! 
! def quietSystem(args, commandLine, temporaryFile):
      # Execute commandline and exit if unsuccessful.  It will run
      # gdb on the command line if --gdb is set in args.
      if args.gdb:
*************** def quietSystem(args, commandLine):
*** 46,51 ****
--- 52,59 ----
      else:
          result = os.system(commandLine + " 2>&1 /dev/null")
      if result != 0:
+         safeRemove(temporaryFile)
+         safeRemove(args.outputfile)
          printf("failed to execute: %s with an exit code: %d\n",
                 commandLine, result)
          sys.exit(result)
*************** def determineBuiltins(args, includePath)
*** 397,410 ****
      if args.fiso or (not args.fpim):
          dialect = '-fiso'
      compiler = stripBackslash(args.compiler)
!     commandLine = "%s %s %s %s -c -fdump-system-exports -o /dev/null %s > %s" % (
          compiler, dialect, includePath, minimalCommandLine,
          args.modinputfile, temporaryFile)
!     quietSystem(args, commandLine)
!     commandLine = "%s %s %s %s -c -fdump-builtins %s >> %s" % (
          compiler, dialect, includePath, minimalCommandLine,
          args.modinputfile, temporaryFile)
!     quietSystem(args, commandLine)
      generateSource(args, temporaryFile)
      os.remove(temporaryFile)
  
--- 405,418 ----
      if args.fiso or (not args.fpim):
          dialect = '-fiso'
      compiler = stripBackslash(args.compiler)
!     commandLine = "%s %s %s %s -S -fdump-system-exports -o /dev/null %s > %s" % (
          compiler, dialect, includePath, minimalCommandLine,
          args.modinputfile, temporaryFile)
!     quietSystem(args, commandLine, temporaryFile)
!     commandLine = "%s %s %s %s -S -fdump-builtins %s >> %s" % (
          compiler, dialect, includePath, minimalCommandLine,
          args.modinputfile, temporaryFile)
!     quietSystem(args, commandLine, temporaryFile)
      generateSource(args, temporaryFile)
      os.remove(temporaryFile)
  
diff -Nrcpad gcc-17-20260816/gcc/match.pd gcc-17-20260823/gcc/match.pd
*** gcc-17-20260816/gcc/match.pd	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/match.pd	Sun Aug 23 22:32:08 2026
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 246,263 ****
     all possible spaceship combinations.  */
  #if GIMPLE
  (if (INTEGRAL_TYPE_P (type))
!   (for op (lt ne)
    (match (spaceship @0 @1)
!     (cond^ (le @0 @1) (negate (convert? (op @0 @1))) integer_onep)))
!   (for op (lt ne)
    (match (spaceship @0 @1)
!     (cond^ (le @1 @0) (convert? (op @1 @0)) integer_minus_onep)))
!   (for op (gt ne)
    (match (spaceship @0 @1)
!     (cond^ (ge @0 @1) (convert? (op @0 @1)) integer_minus_onep))))
!   (for op (gt ne)
    (match (spaceship @0 @1)
!     (cond^ (ge @1 @0) (negate (convert? (op @1 @0))) integer_onep)))
  #endif
  
  /* Simplifications of operations with one constant operand and
--- 246,261 ----
     all possible spaceship combinations.  */
  #if GIMPLE
  (if (INTEGRAL_TYPE_P (type))
!  (for ltne (lt ne)
!       gtne (gt ne)
    (match (spaceship @0 @1)
!    (cond^ (le @0 @1) (negate (convert? (ltne @0 @1))) integer_onep))
    (match (spaceship @0 @1)
!     (cond^ (le @1 @0) (convert? (ltne @1 @0)) integer_minus_onep))
    (match (spaceship @0 @1)
!     (cond^ (ge @0 @1) (convert? (gtne @0 @1)) integer_minus_onep))
    (match (spaceship @0 @1)
!     (cond^ (ge @1 @0) (negate (convert? (gtne @1 @0))) integer_onep))))
  #endif
  
  /* Simplifications of operations with one constant operand and
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1141,1146 ****
--- 1139,1163 ----
  #endif
     ))))
  
+ /* Simplify (t * u) % u -> 0.  The product is an exact multiple of u, so
+    the remainder is zero under every rounding convention as long as the
+    multiplication does not overflow.  Mirrors (t * u) / u -> t above.  */
+ (for mod (trunc_mod floor_mod ceil_mod round_mod)
+  (simplify
+   (mod (mult:c@2 @0 @1) @1)
+   (if (ANY_INTEGRAL_TYPE_P (type))
+    (if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type))
+     { build_zero_cst (type); }
+ #if GIMPLE
+     (with {int_range_max vr0, vr1;}
+      (if (INTEGRAL_TYPE_P (type)
+ 	  && gimple_match_range_of_expr (vr0, @0, @2)
+ 	  && gimple_match_range_of_expr (vr1, @1, @2)
+ 	  && range_op_handler (MULT_EXPR).overflow_free_p (vr0, vr1))
+       { build_zero_cst (type); }))
+ #endif
+    ))))
+ 
  #if GIMPLE
  (for div (trunc_div exact_div)
   /* Simplify (X + M*N) / N -> X / N + M.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1564,1569 ****
--- 1581,1606 ----
    (if (TYPE_UNSIGNED (type))
      (bit_and @0 (bit_not (lshift { build_all_ones_cst (type); } @1)))))
  
+ /* PR112533: Canonicalize boolean comparisons of masked pow2 bits into
+    xor-mask tests.
+    ((x & c) == 0) == ((y & c) == 0) -> (((x ^ y) & c) == 0)
+    ((x & c) == 0) != ((y & c) == 0) -> (((x ^ y) & c) != 0)
+    and equivalent xor forms.  */
+ (for masked_ocmp (eq ne bit_xor)
+  (for icmp0 (eq eq ne ne)
+       icmp1 (eq ne eq ne)
+   (simplify
+    (masked_ocmp
+     (icmp0:s (bit_and:s @0 integer_pow2p@1) integer_zerop@3)
+     (icmp1:s (bit_and:s @2 @1) @3))
+    (if (types_match (@0, @2))
+     (with {
+       bool innersame = icmp0 == icmp1;
+     }
+      (if (innersame == (masked_ocmp == EQ_EXPR))
+       (eq (bit_and (bit_xor @0 @2) @1) @3)
+       (ne (bit_and (bit_xor @0 @2) @1) @3)))))))
+ 
  (for bitop (bit_and bit_ior)
       cmp (eq ne)
   /* PR35691: Transform
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 1598,1603 ****
--- 1635,1670 ----
  	&& single_use (@3) && single_use (@4))
      (cmp (bit_and @0 (view_convert @1)) @2)))))
  
+ /* Combine two single-bit tests of the same value X into one masked
+    compare.  For distinct single bits C1, C2 and M = C1 | C2:
+      (X & C1) != 0 & (X & C2) != 0  ->  (X & M) == M
+      (X & C1) == 0 | (X & C2) == 0  ->  (X & M) != M
+      (X & C1) != 0 & (X & C2) == 0  ->  (X & M) == C1
+      (X & C1) != 0 | (X & C2) == 0  ->  (X & M) != C2
+    The == 0 & == 0 and != 0 | != 0 cases are handled by the more general
+    rule above.  Restricted to single-bit masks: for a multi-bit mask
+    (X & C) != 0 is not a single-bit test.  */
+ (for bitop (bit_and bit_ior)
+      cmp (ne eq)
+      rcmp (eq ne)
+  (simplify
+   (bitop (cmp:s (bit_and:s @0 INTEGER_CST@1) integer_zerop)
+ 	 (cmp:s (bit_and:s @0 INTEGER_CST@2) integer_zerop))
+   (if (integer_pow2p (@1) && integer_pow2p (@2)
+        && wi::to_wide (@1) != wi::to_wide (@2))
+    (with { tree m = wide_int_to_tree (TREE_TYPE (@0),
+ 				      wi::to_wide (@1) | wi::to_wide (@2)); }
+     (rcmp (bit_and @0 { m; }) { m; }))))
+  (simplify
+   (bitop:c (ne:s (bit_and:s @0 INTEGER_CST@1) integer_zerop)
+ 	   (eq:s (bit_and:s @0 INTEGER_CST@2) integer_zerop))
+   (if (integer_pow2p (@1) && integer_pow2p (@2)
+        && wi::to_wide (@1) != wi::to_wide (@2))
+    (with { tree m = wide_int_to_tree (TREE_TYPE (@0),
+ 				      wi::to_wide (@1) | wi::to_wide (@2)); }
+     (rcmp (bit_and @0 { m; })
+ 	  { bitop == BIT_AND_EXPR ? @1 : @2; })))))
+ 
  /* Fold (A & ~B) - (A & B) into (A ^ B) - B.  */
  (simplify
   (minus (bit_and:cs @0 (bit_not @1)) (bit_and:cs @0 @1))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 3968,3973 ****
--- 4035,4061 ----
      (if (types_match (type, TREE_TYPE (@0)))
       (bit_xor @0 { build_one_cst (type); } ))))))
  
+ /* For zero_one_valued operands:
+    (a == 0) != b -> a == b.  */
+ (simplify
+  (ne:c (convert (eq zero_one_valued_p@0 integer_zerop))
+        (convert zero_one_valued_p@1))
+  (if (INTEGRAL_TYPE_P (TREE_TYPE (@0))
+       && types_match (TREE_TYPE (@0), TREE_TYPE (@1)))
+   (eq @0 @1)))
+ 
+ /* For zero_one_valued operands:
+    (a op1 0) cmp (b op2 0) -> a out_cmp b
+    where out_cmp is cmp if op1 == op2, and the inverse of cmp otherwise.  */
+ (if (INTEGRAL_TYPE_P (type))
+   (for cmp     (ne ne eq eq ne ne eq eq)
+        op1     (eq ne eq ne eq ne eq ne)
+        op2     (eq ne eq ne ne eq ne eq)
+        out_cmp (ne ne eq eq eq eq ne ne)
+     (simplify
+       (cmp:c (op1 zero_one_valued_p@0 integer_zerop)
+              (op2 zero_one_valued_p@1 integer_zerop))
+       (out_cmp (convert:type @0) (convert:type @1)))))
  
  /* ((a ^ b) & c) cmp d || a != b --> (0 cmp d || a != b). */
  /* ((a ^ b) & c) cmp d && a == b --> (0 cmp d && a == b). */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4714,4720 ****
  	&& !TYPE_OVERFLOW_SANITIZED (type))
      (minus (minmax @0 @1) @2))))
  
! /* (type) minmax ((wide_type) a, (wide_type) b) -> minmax (a, b)
     when type matches the type of a and b, and wide_type is a wider
     type with the same signedness as type.  Extension is monotone, so it
     commutes with the comparison, and the truncation is then exact.  The
--- 4802,4808 ----
  	&& !TYPE_OVERFLOW_SANITIZED (type))
      (minus (minmax @0 @1) @2))))
  
! /* minmax ((wide_type) a, (wide_type) b) -> (wide_type) minmax (a, b)
     when type matches the type of a and b, and wide_type is a wider
     type with the same signedness as type.  Extension is monotone, so it
     commutes with the comparison, and the truncation is then exact.  The
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 4724,4741 ****
  (for minmax (min max)
       MINMAX (MIN_EXPR MAX_EXPR)
   (simplify
!   (convert (minmax:c@4 (convert@2 @0) (convert@3 @1)))
    (if (ANY_INTEGRAL_TYPE_P (type)
!        && ANY_INTEGRAL_TYPE_P (TREE_TYPE (@2))
!        && types_match (type, TREE_TYPE (@0))
!        && types_match (type, TREE_TYPE (@1))
!        && types_match (TREE_TYPE (@2), TREE_TYPE (@3))
!        && element_precision (TREE_TYPE (@2)) > element_precision (type)
!        && TYPE_UNSIGNED (TREE_TYPE (@2)) == TYPE_UNSIGNED (type)
         && (!VECTOR_TYPE_P (type)
! 	   || (single_use (@4)
! 	       && target_supports_op_p (type, MINMAX, optab_vector))))
!    (minmax @0 @1))))
  
  /* max (a, a + CST) -> a + CST where CST is positive.  */
  /* max (a, a + CST) -> a where CST is negative.  */
--- 4812,4826 ----
  (for minmax (min max)
       MINMAX (MIN_EXPR MAX_EXPR)
   (simplify
!   (minmax (convert @0) (convert @1))
    (if (ANY_INTEGRAL_TYPE_P (type)
!        && ANY_INTEGRAL_TYPE_P (TREE_TYPE (@0))
!        && types_match (TREE_TYPE (@0), TREE_TYPE (@1))
!        && element_precision (TREE_TYPE (@0)) < element_precision (type)
!        && TYPE_UNSIGNED (TREE_TYPE (@0)) == TYPE_UNSIGNED (type)
         && (!VECTOR_TYPE_P (type)
! 	   || target_supports_op_p (TREE_TYPE (@0), MINMAX, optab_vector)))
!    (convert (minmax @0 @1)))))
  
  /* max (a, a + CST) -> a + CST where CST is positive.  */
  /* max (a, a + CST) -> a where CST is negative.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6122,6128 ****
        && (!HONOR_SIGNED_ZEROS (type)
  	  || tree_expr_nonzero_p (@1)
  	  || (!flag_rounding_math
! 	      && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (@0)))))
    (negate @1)))
  
  /* Transform x * -1 into -x.  */
--- 6207,6213 ----
        && (!HONOR_SIGNED_ZEROS (type)
  	  || tree_expr_nonzero_p (@1)
  	  || (!flag_rounding_math
! 	      && real_negzerop (@0))))
    (negate @1)))
  
  /* Transform x * -1 into -x.  */
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6406,6411 ****
--- 6491,6598 ----
    (if (wi::to_wide (@2) == ~wi::to_wide (@1))
     @3))
  
+ /* PR124667: Similar to PR64567 above but with the bit given
+    by an (1 << val) lshift.  Note that this shift pattern
+    guarantees that this is a single bit operation.
+ 
+    The same pattern, if using '!=' instead of '==', will
+    result in just 'A'.
+ 
+    (A & (1 << val)) == 0 ? A |= (1 << val) : A => A |= (1 << val)
+    (A & (1 << val)) != 0 ? A |= (1 << val) : A => A;  */
+ (for neeq (eq ne)
+  (simplify
+   (cond
+    (neeq (bit_and:c @0 (lshift@1 integer_onep @2)) integer_zerop)
+ 	 (bit_ior:c@3 @0 @1)
+ 	 @0)
+     (if (neeq == EQ_EXPR)
+      @3
+      @0))
+ 
+ /* PR124667: NE variant of the previous match with switched true/false
+    legs:
+ 
+    (A & (1 << val)) != 0 ? A : A |= (1 << val) => A |= (1 << val)
+    (A & (1 << val)) == 0 ? A : A |= (1 << val) => A;  */
+  (simplify
+   (cond
+    (neeq (bit_and:c @0 (lshift@1 integer_onep @2)) integer_zerop)
+ 	 @0
+ 	 (bit_ior:c@3 @0 @1))
+     (if (neeq == NE_EXPR)
+      @3
+      @0))
+ 
+ /* PR124667: a bitmask set simplification that is possible as
+    long as the whole bitmask is being checked.  Switching the
+    comparison from '==' to '!=' results in 'A':
+ 
+    (A & B) == B ? A : A |= B  => A |= B
+    (A & B) != B ? A : A |= B  => A;  */
+  (simplify
+   (cond
+    (neeq:c (bit_and @0 @1) @1)
+ 	   @0
+ 	   (bit_ior@2 @0 @1))
+     (if (neeq == EQ_EXPR)
+      @2
+      @0))
+ 
+ /* PR124667: similar from above with true/false legs switched:
+ 
+    (A & B) != B ? A |= B : A => A | B.
+    (A & B) == B ? A |= B : A => A;  */
+ (simplify
+  (cond
+   (neeq:c (bit_and @0 @1) @1)
+ 	  (bit_ior@2 @0 @1)
+ 	  @0)
+    (if (neeq == NE_EXPR)
+     @2
+     @0)))
+ 
+ /* PR124667: these also reduces to just "A":
+    ((A >> val) & 1) == 0 ?  A : (A | (1 << val))
+    ((A >> val) & 1) != 0 ?  (A | (1 << val)) : A;
+ 
+    For both cases the zero_one patterns in lines 4860-4890
+    will turn both into the following 'original':
+ 
+    intD.7 bitshiftD.4489 = 1 << bitD.4485;
+    arrD.4488 = arrD.4488 >> bitD.4485 & 1) * bitshiftD.4489 | arrD.4488;
+ 
+    And it'll appear back in phiopt as:
+ 
+    _1 = arrD.4482;
+    _2 = _1 >> bit_7;
+    _3 = _2 & 1;
+    _4 = _3 << bit_7;
+    _6 = _1 | _4;
+ 
+    I.e. it'll drop the 'mult' and lshift the zero_one result from the
+    bit check.  The 3 middle stmts can be reduced to:
+ 
+    _3 = 1 << bit_7;
+    _4 = _1 & _3;
+ 
+    Resulting in:
+ 
+    _1 = arrD.4482;
+    _3 = 1 << bit_7;
+    _4 = _1 & _3
+    _6 = _1 | _4;
+ 
+    Which will reduce to just _1.  Simplifying the middle stmts has the
+    advantage of also benefitting other optimizations as well.  Note
+    that this transformation is valid with all CST masks, not just
+    '1'.  */
+ (simplify
+   (lshift
+     (bit_and:c (rshift @0 @1) INTEGER_CST@2)
+      @1)
+   (bit_and @0 (lshift @2 @1)))
+ 
  #if GIMPLE
  (match (nop_atomic_bit_test_and_p @0 @1 @4)
   (bit_and (convert?@4 (ATOMIC_FETCH_OR_XOR_N @2 INTEGER_CST@0 @3))
*************** DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
*** 6645,6650 ****
--- 6832,6856 ----
        (lshift (convert (bit_xor (convert:boolean_type_node @0)
  				{ boolean_true_node; })) { shift; })))))))
  
+ /* Recognize a 2-arg PHI of the form
+      PHI<base + pow2, base>
+    guarded by an unsigned compare on (@0, @1).  @1 is captured without
+    further structure; the long-mul fold in tree-ssa-forwprop.cc
+    classifies it to drive a PHI-form carry summand.  The consumer
+    treats the carry as strict @0 > @1, compares must encode that
+    same condition:
+      When the true edge selects (base + pow2), the
+        compare itself must be @0 > @1.
+      When the false edge selects (base + pow2), the
+        compare itself must be @0 <= @1 or rather the invese of @0 > @1.  */
+ (if (INTEGRAL_TYPE_P (type)
+      && TYPE_UNSIGNED (type)
+      && type_has_mode_precision_p (type))
+  (match (cond_carry_add @0 @1 @2 @3)
+   (cond^ (gt:c @0 @1) (plus @2 integer_pow2p@3) @2))
+  (match (cond_carry_add @0 @1 @2 @3)
+   (cond^ (le:c @0 @1) @2 (plus @2 integer_pow2p@3))))
+ 
  /* (a > 1) ? 0 : (cast)a is the same as (cast)(a == 1)
     for unsigned types. */
  (simplify
*************** and,
*** 12592,12597 ****
--- 12798,12956 ----
     INTEGER_CST@2) INTEGER_CST@3)
    (if (compare_tree_int (@sub1, 1) == 0)))
  
+ /* Match low and high parts of longhand multiplication.
+    Given a 2N-bit unsigned type, x = xh*2^N + xl and y = yh*2^N + yl,
+    where xh, xl, yh, yl are N-bit halves extracted via shifts and masks.  */
+ 
+ /* High half: op >> N.  */
+ (match (mul_hi @op @0)
+   (rshift @op INTEGER_CST@0)
+   (with { tree op_type = TREE_TYPE (@op); }
+   (if (INTEGRAL_TYPE_P (op_type)
+        && TYPE_UNSIGNED (op_type)
+        && TYPE_PRECISION (op_type) % 2 == 0
+        && wi::to_wide (@0) == TYPE_PRECISION (op_type) / 2))))
+ /* Low half: op & mask.  */
+ (match (mul_lo @op @0)
+   (bit_and @op INTEGER_CST@0)
+   (with { tree op_type = TREE_TYPE (@op); }
+   (if (INTEGRAL_TYPE_P (op_type)
+        && TYPE_UNSIGNED (op_type)
+        && TYPE_PRECISION (op_type) % 2 == 0
+        && (wi::to_wide (@0)
+ 	   == wi::mask (TYPE_PRECISION (op_type) / 2, false,
+ 			TYPE_PRECISION (op_type)))))))
+ /* Cross product: high(op0) * low(op1).  */
+ (match (mul_hilo @op0 @op1 @0 @1)
+   (mult:c
+     (mul_hi @op0 @0)
+     (mul_lo @op1 @1)))
+ /* Low-low product: low(op0) * low(op1).  */
+ (match (mul_lolo @op0 @op1 @0)
+   (mult:c
+     (mul_lo @op0 @0)
+     (mul_lo @op1 @0)))
+ /* High-high product: high(op0) * high(op1).  */
+ (match (mul_hihi @op0 @op1 @0)
+   (mult:c
+     (mul_hi @op0 @0)
+     (mul_hi @op1 @0)))
+ /* Cross sum: xh*yl + xl*yh.
+    Note: matches any PLUS; operands are validated as actual cross
+    products by the forwprop consumer (long_mul_check_consistency).  */
+ (match (mul_cross_sum @mul_hilo0 @mul_hilo1)
+   (plus @mul_hilo0 @mul_hilo1))
+ /* Low sum: cross_sum + (xl*yl >> N).  */
+ (match (mul_low_sum @op0 @op1 @mul_hilo0 @mul_hilo1 @0 @1)
+   (plus:c
+     (mul_cross_sum @mul_hilo0 @mul_hilo1)
+     (mul_hi
+       (mul_lolo @op0 @op1 @1)
+       @0)))
+ /* Carry from low-sum overflow: (cast?) (hilo > low_sum) << N.
+    No explicit type/width guard needed: mul_low_sum delegates to
+    mul_cross_sum + mul_hi + mul_lolo, which provide deep structural
+    constraints, and @shift0 ties the shift amount to the inner constants.  */
+ (match (mul_carry_low_sum @op0 @op1 @mul_hilo0 @mul_hilo1 @mul_hilo2 @shift0)
+   (lshift
+     (convert (gt
+       @mul_hilo0
+       (mul_low_sum @op0 @op1 @mul_hilo1 @mul_hilo2 @shift0
+        @1)))
+     @shift0))
+ /* Carry from cross-sum overflow: (cast?) (hilo > cross_sum) << N.
+    Explicit guard required because mul_cross_sum is just (plus:c @0 @1)
+    with no inherent type or halfwidth constraint.  */
+ (match (mul_carry_cross_sum @mul_hilo0 @mul_hilo1 @mul_hilo2 @0)
+   (lshift
+     (convert (gt
+       @mul_hilo0
+       (mul_cross_sum @mul_hilo1 @mul_hilo2)))
+     INTEGER_CST@0)
+   (with { tree op_type = TREE_TYPE (@mul_hilo0); }
+   (if (INTEGRAL_TYPE_P (op_type)
+        && TYPE_UNSIGNED (op_type)
+        && TYPE_PRECISION (op_type) % 2 == 0
+        && wi::to_wide (@0) == TYPE_PRECISION (op_type) / 2))))
+ /* Carry from addition overflow: (cast?) (a > a + b).
+    :c on gt also matches the LT form: (cast?) (a + b < a).  */
+ (match (mul_carry_low @0 @1)
+   (convert?
+     (gt:c @0 (plus:c @1 @0)))
+   (with { tree op_type = TREE_TYPE (@0); }
+   (if (INTEGRAL_TYPE_P (op_type) && TYPE_UNSIGNED (op_type)))))
+ /* Low accumulate: (xl*yl >> N) + (cross_sum & mask).  */
+ (match (mul_low_accum @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (mul_hi
+       (mul_lolo @op0 @op1 @0)
+       @1)
+     (mul_lo (mul_cross_sum @mul_hilo0 @mul_hilo1) @0)))
+ /* Ladder sum form 1: (hilo0 & mask) + hilo1 + (xl*yl >> N).
+    First variant: @mul_hilo1 is inside the inner plus:c alongside
+    (mul_lo ...).  */
+ (match (mul_ladder_sum1 @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (plus:c
+       (mul_lo
+ 	@mul_hilo0
+ 	@0)
+       @mul_hilo1)
+     (mul_hi (mul_lolo @op0 @op1 @0) @1)))
+ /* Second variant: @mul_hilo1 is the outermost addend and could match
+    anything, so guard that its definition is a MULT_EXPR.  */
+ (match (mul_ladder_sum1 @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (plus:c
+       (mul_lo @mul_hilo0 @0)
+       (mul_hi (mul_lolo @op0 @op1 @0) @1))
+     (mult@mul_hilo1 @2 @3)))
+ /* Partial ladder sum: (xl*yl >> N) + hilo.  */
+ (match (mul_ladder_part_sum @op0 @op1 @mul_hilo0 @0 @1)
+   (plus:c
+     (mul_hi (mul_lolo @op0 @op1 @0) @1)
+     @mul_hilo0))
+ /* Ladder sum form 2: (ladder_part_sum & mask) + hilo.  */
+ (match (mul_ladder_sum2 @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (mul_lo
+       (mul_ladder_part_sum @op0 @op1 @mul_hilo0 @0 @1)
+       @0)
+     @mul_hilo1))
+ /* Ladder sum form 3: (hilo0 & mask) + (hilo1 & mask) + (xl*yl >> N).  */
+ (match (mul_ladder_sum3 @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (plus:c
+       (mul_lo @mul_hilo0 @0)
+       (mul_lo @mul_hilo1 @0))
+     (mul_hi (mul_lolo @op0 @op1 @0) @1)))
+ (match (mul_ladder_sum3 @op0 @op1 @mul_hilo0 @mul_hilo1)
+   (plus:c
+     (plus:c
+       (mul_lo @mul_hilo0 @0)
+       (mul_hi (mul_lolo @op0 @op1 @0) @1))
+     (mul_lo @mul_hilo1 @0)))
+ 
+ /* Long-multiply high-part emit chain produced by forwprop's recognizer:
+ 
+      (N) ((2N) op1 * (2N) op2) >> N
+ 
+    `(convert? @X)` accepts a bare operand (PRE may hoist the (T_2N) cast
+    out into a PHI on a shared slot).  The lowering splits an operand
+    wider than T_N into T_N halves rather than truncating it.  Wide type
+    must be unsigned mode-precision integer of even width; BITINT_TYPE is
+    refused.  */
+ (match (long_mul_high_chain @0 @1)
+   (convert (rshift (mult:c@3 (convert? @0) (convert? @1)) INTEGER_CST@2))
+   (with { tree wide_type = TREE_TYPE (@3); }
+   (if (INTEGRAL_TYPE_P (wide_type)
+        && TYPE_UNSIGNED (wide_type)
+        && type_has_mode_precision_p (wide_type)
+        && TREE_CODE (wide_type) != BITINT_TYPE
+        && TYPE_PRECISION (wide_type) >= 8
+        && TYPE_PRECISION (wide_type) % 4 == 0
+        && wi::to_wide (@2) == TYPE_PRECISION (wide_type) / 2))))
+ 
  /* Floatint point/integer comparison and integer->integer
     or floating point -> float point conversion.  */
  (match (cond_expr_convert_p @0 @2 @3 @6)
diff -Nrcpad gcc-17-20260816/gcc/omp-expand.cc gcc-17-20260823/gcc/omp-expand.cc
*** gcc-17-20260816/gcc/omp-expand.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/omp-expand.cc	Sun Aug 23 22:32:08 2026
*************** expand_omp_for_static_nochunk (struct om
*** 5644,5650 ****
  						   cont_bb, body_bb);
      }
  
!   if (flag_openmp_ompt_detailed)
      {
        /* Insert call to GOMP_*_static_worksharing_dispatch at the end of
  	 seq_start_bb.  */
--- 5644,5650 ----
  						   cont_bb, body_bb);
      }
  
!   if (flag_openmp_ompt == OMP_OMPT_LEVEL_EXTENDED)
      {
        /* Insert call to GOMP_*_static_worksharing_dispatch at the end of
  	 seq_start_bb.  */
*************** expand_omp_for_static_chunk (struct omp_
*** 6492,6498 ****
      }
    gsi_remove (&gsi, true);
  
!   if (flag_openmp_ompt_detailed)
      {
        /* Insert call to GOMP_*_static_worksharing_dispatch at the end of
  	 seq_start_bb.  */
--- 6492,6498 ----
      }
    gsi_remove (&gsi, true);
  
!   if (flag_openmp_ompt == OMP_OMPT_LEVEL_EXTENDED)
      {
        /* Insert call to GOMP_*_static_worksharing_dispatch at the end of
  	 seq_start_bb.  */
diff -Nrcpad gcc-17-20260816/gcc/optabs-tree.cc gcc-17-20260823/gcc/optabs-tree.cc
*** gcc-17-20260816/gcc/optabs-tree.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/optabs-tree.cc	Sun Aug 23 22:32:08 2026
*************** supportable_convert_operation (enum tree
*** 375,380 ****
--- 375,384 ----
    if (!VECTOR_MODE_P (m1) || !VECTOR_MODE_P (m2))
      return false;
  
+   if (m1 == m2
+       && (CONVERT_EXPR_CODE_P (code) || code == VIEW_CONVERT_EXPR))
+     return true;
+ 
    /* First check if we can done conversion directly.  */
    if ((code == FIX_TRUNC_EXPR
         && can_fix_p (m1,m2,TYPE_UNSIGNED (vectype_out), &truncp)
diff -Nrcpad gcc-17-20260816/gcc/opts.cc gcc-17-20260823/gcc/opts.cc
*** gcc-17-20260816/gcc/opts.cc	Sun Aug 16 22:32:07 2026
--- gcc-17-20260823/gcc/opts.cc	Sun Aug 23 22:32:08 2026
*************** finish_options (struct gcc_options *opts
*** 1499,1507 ****
        opts->x_flag_var_tracking_assignments = 0;
      }
  
!   /* One could use EnabledBy, but it would lead to a circular dependency.  */
!   if (!opts_set->x_flag_var_tracking_uninit)
!     opts->x_flag_var_tracking_uninit = opts->x_flag_var_tracking;
  
    if (!opts_set->x_flag_var_tracking_assignments)
      opts->x_flag_var_tracking_assignments
--- 1499,1506 ----
        opts->x_flag_var_tracking_assignments = 0;
      }
  
!   if (opts_set->x_flag_var_tracking_uninit && opts->x_flag_var_tracking_uninit)
!     opts->x_flag_var_tracking = 1;
  
    if (!opts_set->x_flag_var_tracking_assignments)
      opts->x_flag_var_tracking_assignments
*************** finish_options (struct gcc_options *opts
*** 1537,1547 ****
  		    " %<-fstrict-flex-arrays%> is not present");
        }
  
!   if ((opts->x_flag_openmp_ompt || opts->x_flag_openmp_ompt_detailed)
!       && !opts->x_flag_openmp)
!     error_at (
!       loc,
!       "%<-fopenmp-ompt%> and %<-fopenmp-ompt-detailed%> require %<-fopenmp%>");
  
    diagnose_options (opts, opts_set, loc);
  }
--- 1536,1543 ----
  		    " %<-fstrict-flex-arrays%> is not present");
        }
  
!   if (opts->x_flag_openmp_ompt && !opts->x_flag_openmp)
!     error_at (loc, "%<-fopenmp-ompt%> requires %<-fopenmp%>");
  
    diagnose_options (opts, opts_set, loc);
  }
diff -Nrcpad gcc-17-20260816/gcc/profile-count.cc gcc-17-20260823/gcc/profile-count.cc
*** gcc-17-20260816/gcc/profile-count.cc	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/profile-count.cc	Sun Aug 23 22:32:09 2026
*************** along with GCC; see the file COPYING3.
*** 33,38 ****
--- 33,39 ----
  #include "wide-int.h"
  #include "sreal.h"
  #include "profile.h"
+ #include "selftest.h"
  
  /* Names from profile_quality enum values.  */
  
*************** profile_count::force_nonzero () const
*** 595,597 ****
--- 596,644 ----
      }
    return ret;
  }
+ 
+ #if CHECKING_P
+ 
+ namespace selftest {
+ 
+ /* Verify profile_probability::apply.  */
+ 
+ static void
+ test_profile_probability_apply ()
+ {
+   const gcov_type min = INTTYPE_MINIMUM (gcov_type);
+   const gcov_type max = INTTYPE_MAXIMUM (gcov_type);
+   profile_probability quarter = profile_probability::guessed_always () / 4;
+   profile_probability even = profile_probability::even ();
+ 
+   ASSERT_EQ (1, quarter.apply (3));
+   ASSERT_EQ (-1, quarter.apply (-3));
+   ASSERT_EQ (2, even.apply (3));
+   ASSERT_EQ (-2, even.apply (-3));
+   ASSERT_EQ (0, even.apply (0));
+ 
+   ASSERT_EQ (0, profile_probability::never ().apply (min));
+   ASSERT_EQ (min, profile_probability::always ().apply (min));
+   ASSERT_EQ (max, profile_probability::always ().apply (max));
+   ASSERT_EQ (min, profile_probability::guessed_always ().apply (min));
+   ASSERT_EQ (min / 2, even.apply (min));
+   ASSERT_EQ (max / 2 + 1, even.apply (max));
+ 
+   profile_probability uninitialized = profile_probability::uninitialized ();
+   ASSERT_EQ (1, uninitialized.apply (3));
+   ASSERT_EQ (-1, uninitialized.apply (-3));
+   ASSERT_EQ (min / 2, uninitialized.apply (min));
+   ASSERT_EQ (max / 2, uninitialized.apply (max));
+ }
+ 
+ /* Run all of the selftests within this file.  */
+ 
+ void
+ profile_count_cc_tests ()
+ {
+   test_profile_probability_apply ();
+ }
+ 
+ } // namespace selftest
+ 
+ #endif
diff -Nrcpad gcc-17-20260816/gcc/profile-count.h gcc-17-20260823/gcc/profile-count.h
*** gcc-17-20260816/gcc/profile-count.h	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/profile-count.h	Sun Aug 23 22:32:09 2026
*************** public:
*** 513,523 ****
        return ret;
      }
  
    gcov_type apply (gcov_type val) const
      {
        if (*this == uninitialized ())
  	return val / 2;
!       return RDIV (val * m_val, max_probability);
      }
  
    /* Return 1-*THIS.  */
--- 513,547 ----
        return ret;
      }
  
+   /* Return VAL scaled by this probability.  Round initialized probabilities
+      to the nearest integer, with halfway values away from zero.  Treat an
+      uninitialized probability as one half and truncate toward zero.  */
    gcov_type apply (gcov_type val) const
      {
        if (*this == uninitialized ())
  	return val / 2;
! 
!       /* A unit probability leaves VAL unchanged.  Return it directly because
! 	 the magnitude of the minimum gcov_type value is one greater than the
! 	 maximum gcov_type value.  */
!       if (m_val == max_probability)
! 	return val;
! 
!       /* Convert to unsigned before negating so that the minimum gcov_type
! 	 value has a representable magnitude.  Scale the magnitude with
! 	 overflow-safe arithmetic, then restore the sign.  */
!       gcov_type_unsigned magnitude
! 	= val < 0 ? -(gcov_type_unsigned) val : (gcov_type_unsigned) val;
!       uint64_t scaled;
!       bool scaled_p
! 	= safe_scale_64bit (magnitude, m_val, max_probability, &scaled);
!       /* The scaled result fits in uint64_t.  With the unit case handled above,
! 	 it also fits in the nonnegative range of gcov_type.  */
!       gcc_checking_assert (scaled_p);
!       gcc_checking_assert
! 	(scaled <= (gcov_type_unsigned) INTTYPE_MAXIMUM (gcov_type));
! 
!       return val < 0 ? -(gcov_type) scaled : (gcov_type) scaled;
      }
  
    /* Return 1-*THIS.  */
diff -Nrcpad gcc-17-20260816/gcc/range-op-mixed.h gcc-17-20260823/gcc/range-op-mixed.h
*** gcc-17-20260816/gcc/range-op-mixed.h	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/range-op-mixed.h	Sun Aug 23 22:32:09 2026
*************** public:
*** 849,854 ****
--- 849,855 ----
    using range_operator::fold_range;
    using range_operator::op1_range;
    using range_operator::op2_range;
+   using range_operator::op1_op2_relation_effect;
    using range_operator::update_bitmask;
  
    bool fold_range (prange &r, tree type,
*************** public:
*** 861,866 ****
--- 862,872 ----
    bool op2_range (irange &r, tree type,
  		  const irange &lhs, const irange &op1,
  		  relation_trio rel = TRIO_VARYING) const override;
+   bool op1_op2_relation_effect (irange &lhs_range,
+ 				tree type,
+ 				const irange &op1_range,
+ 				const irange &op2_range,
+ 				relation_kind rel) const final override;
    void update_bitmask (irange &r, const irange &lh,
  		       const irange &rh) const override;
    // Check compatibility of all operands.
diff -Nrcpad gcc-17-20260816/gcc/range-op.cc gcc-17-20260823/gcc/range-op.cc
*** gcc-17-20260816/gcc/range-op.cc	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/range-op.cc	Sun Aug 23 22:32:09 2026
*************** class operator_div : public cross_produc
*** 2499,2504 ****
--- 2499,2505 ----
  {
    using range_operator::update_bitmask;
    using range_operator::op2_range;
+   using range_operator::op1_op2_relation_effect;
  public:
    operator_div (tree_code div_kind) { m_code = div_kind; }
    bool op2_range (irange &r, tree type, const irange &lhs, const irange &,
*************** public:
*** 2511,2516 ****
--- 2512,2522 ----
    virtual bool wi_op_overflows (wide_int &res, tree type,
  				const wide_int &, const wide_int &)
      const final override;
+   bool op1_op2_relation_effect (irange &lhs_range,
+ 				tree type,
+ 				const irange &op1_range,
+ 				const irange &op2_range,
+ 				relation_kind rel) const final override;
    void update_bitmask (irange &r, const irange &lh, const irange &rh)
      const final override
      { update_known_bitmask (r, m_code, lh, rh); }
*************** operator_div::wi_fold (irange &r, tree t
*** 2624,2629 ****
--- 2630,2664 ----
    gcc_checking_assert (!r.undefined_p ());
  }
  
+ bool
+ operator_div::op1_op2_relation_effect (irange &lhs_range,
+ 				       tree type,
+ 				       const irange &op1_range,
+ 				       const irange &op2_range,
+ 				       relation_kind rel) const
+ {
+   if (rel == VREL_VARYING)
+     return false;
+ 
+   int_range<2> rel_range;
+ 
+   switch (rel)
+     {
+     /* op1/op2 = 0 if op1 < op2 and both op1 and op2
+        are known positives.  */
+     case VREL_LT:
+       if (!op1_range.nonnegative_p ()
+ 	   || !op2_range.nonnegative_p ())
+ 	return false;
+       rel_range.set_zero (type);
+       break;
+     default:
+       return false;
+     }
+ 
+   lhs_range.intersect (rel_range);
+   return true;
+ }
  
  class operator_exact_divide : public operator_div
  {
*************** operator_bitwise_or::wi_fold (irange &r,
*** 4068,4073 ****
--- 4103,4133 ----
  }
  
  bool
+ operator_bitwise_or::op1_op2_relation_effect (irange &lhs_range,
+ 					      tree type,
+ 					      const irange &,
+ 					      const irange &,
+ 					      relation_kind rel) const
+ {
+   if (rel == VREL_VARYING)
+     return false;
+ 
+   int_range<2> rel_range;
+ 
+   switch (rel)
+     {
+     case VREL_NE:
+       rel_range.set_nonzero (type);
+       break;
+     default:
+       return false;
+     }
+ 
+   lhs_range.intersect (rel_range);
+   return true;
+ }
+ 
+ bool
  operator_bitwise_or::op1_range (irange &r, tree type,
  				const irange &lhs,
  				const irange &op2,
diff -Nrcpad gcc-17-20260816/gcc/selftest-run-tests.cc gcc-17-20260823/gcc/selftest-run-tests.cc
*** gcc-17-20260816/gcc/selftest-run-tests.cc	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/selftest-run-tests.cc	Sun Aug 23 22:32:09 2026
*************** selftest::run_tests ()
*** 72,77 ****
--- 72,78 ----
    wide_int_cc_tests ();
    ggc_tests_cc_tests ();
    sreal_cc_tests ();
+   profile_count_cc_tests ();
    fibonacci_heap_cc_tests ();
    typed_splay_tree_cc_tests ();
    opt_suggestions_cc_tests ();
diff -Nrcpad gcc-17-20260816/gcc/selftest.h gcc-17-20260823/gcc/selftest.h
*** gcc-17-20260816/gcc/selftest.h	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/selftest.h	Sun Aug 23 22:32:09 2026
*************** extern void path_coverage_cc_tests ();
*** 248,253 ****
--- 248,254 ----
  extern void predict_cc_tests ();
  extern void pretty_print_cc_tests ();
  extern void pretty_print_token_buffer_cc_tests ();
+ extern void profile_count_cc_tests ();
  extern void pub_sub_cc_tests ();
  extern void range_op_tests ();
  extern void range_tests ();
diff -Nrcpad gcc-17-20260816/gcc/target.def gcc-17-20260823/gcc/target.def
*** gcc-17-20260816/gcc/target.def	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/target.def	Sun Aug 23 22:32:09 2026
*************** implementation returns the lowest possib
*** 4217,4222 ****
--- 4217,4232 ----
   HOST_WIDE_INT, (poly_int64 val, poly_value_estimate_kind kind),
   default_estimated_poly_value)
  
+ DEFHOOK
+ (poly_int_indeterminate_bound,
+  "Return a @code{poly_uint64} whose coefficients give conservative\n\
+ inclusive upper bounds for the corresponding @code{poly_int}\n\
+ indeterminates.  The constant coefficient is ignored and should be zero.\n\
+ This hook is used for correctness rather than for costing, so the returned\n\
+ bounds must be safe for all architecturally-valid runtime values.",
+  poly_uint64, (void),
+  NULL)
+ 
  /* Permit speculative instructions in delay slots during delayed-branch
     scheduling.  */
  DEFHOOK
diff -Nrcpad gcc-17-20260816/gcc/testsuite/ChangeLog gcc-17-20260823/gcc/testsuite/ChangeLog
*** gcc-17-20260816/gcc/testsuite/ChangeLog	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/testsuite/ChangeLog	Sun Aug 23 22:32:09 2026
***************
*** 1,3 ****
--- 1,946 ----
+ 2026-08-22  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124888
+ 	* g++.dg/modules/typeid-2_a.C: New test.
+ 	* g++.dg/modules/typeid-2_b.C: New test.
+ 
+ 2026-08-22  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/arc/mulsi3_highpart-2.c: Disable -fexpensive-optimizations.
+ 
+ 2026-08-21  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	PR target/126873
+ 	* gcc.target/riscv/pr126873.c: New test.
+ 
+ 2026-08-21  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/slp_12.c: Update testcases
+ 	* gcc.target/aarch64/sve/cnt_fold_7.c: New test.
+ 	* gcc.target/aarch64/sve/cnt_fold_7_run.c: New test.
+ 
+ 2026-08-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/i386/no-callee-saved-15.c: Add -mdynamic-no-pic
+ 	for ia32 Darwin.
+ 	* gcc.target/i386/pr100865-1.c: Likewise.
+ 	* gcc.target/i386/pr100865-2.c: Likewise.
+ 	* gcc.target/i386/pr100865-3.c: Likewise.
+ 	* gcc.target/i386/pr100865-4a.c: Likewise.
+ 	* gcc.target/i386/pr100865-4b.c: Likewise.
+ 	* gcc.target/i386/pr100865-5a.c: Likewise.
+ 	* gcc.target/i386/pr100865-5b.c: Likewise.
+ 	* gcc.target/i386/pr100865-6a.c: Likewise.
+ 	* gcc.target/i386/pr100865-6b.c: Likewise.
+ 	* gcc.target/i386/pr100865-6c.c: Likewise.
+ 	* gcc.target/i386/pr100865-7a.c: Likewise.
+ 	* gcc.target/i386/pr100865-7b.c: Likewise.
+ 	* gcc.target/i386/pr100865-7c.c: Likewise.
+ 	* gcc.target/i386/pr101989-broadcast-1.c: Likewise.
+ 	* gcc.target/i386/pr102021.c: Likewise.
+ 	* gcc.target/i386/pr106060-2.c: Likewise.
+ 	* gcc.target/i386/pr106060-3.c: Likewise.
+ 	* gcc.target/i386/pr15184-1.c: Likewise.
+ 	* gcc.target/i386/pr15184-2.c: Likewise.
+ 	* gcc.target/i386/pr54855-3.c: Likewise.
+ 	* gcc.target/i386/pr54855-7.c: Likewise.
+ 	* gcc.target/i386/pr78035.c: Likewise.
+ 	* gcc.target/i386/pr81736-5.c: Likewise.
+ 	* gcc.target/i386/pr90773-17.c: Likewise.
+ 	* gcc.target/i386/preserve-none-20.c: Likewise.
+ 	* gcc.target/i386/sse2-stv-1.c: Likewise.
+ 	* gcc.target/i386/vect-shiftv4qi.c: Likewise.
+ 
+ 2026-08-21  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* gcc.target/aarch64/sme/acle-asm/test_sme_acle.h
+ 	(TEST_UNIFORM_ZA, TEST_DUAL_ZA): Add new `fpm_t fpm0` arguments.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_base.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c: New test.
+ 	* gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c: New test.
+ 	* gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c: New test.
+ 
+ 2026-08-21  Karl Meakin  <karl.meakin@arm.com>
+ 
+ 	* gcc.target/aarch64/pragma_cpp_predefs_4.c: Test that
+ 	`__ARM_FEATURE_SME_F8F16`, `__ARM_FEATURE_SME_F8F32`
+ 	and `__ARM_FEATURE_SME_MOP4` macros are defined when the
+ 	relevant extension is enabled.
+ 	* lib/target-supports.exp: Add `sme-mop4` to `exts`.
+ 
+ 2026-08-21  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gcc.target/x86_64/abi/ms-sysv/do-test.S: Wrap call to
+ 	do_test_unaligned in the ASMNAME macro.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.dg/fwrite-1.c: New test.
+ 	* gcc.dg/fwrite-2.c: New test.
+ 	* gcc.dg/fwrite-3.c: New test.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR sanitizer/88109
+ 	* c-c++-common/ubsan/overflow-vec-3.c: New test.
+ 
+ 2026-08-21  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* lib/target-supports.exp
+ 	(check_effective_target_aarch64_sve2_hw): Add a target pragma to
+ 	the probe program.
+ 
+ 2026-08-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126965
+ 	* gcc.dg/tree-ssa/ssa-pre-37.c: New testcase.
+ 
+ 2026-08-21  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR rtl-optimization/126686
+ 	* gcc.dg/torture/pr126686.c: New test.
+ 
+ 2026-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/126959
+ 	* gcc.target/i386/pr126959-1a.c: New test.
+ 	* gcc.target/i386/pr126959-1b.c: Likewise.
+ 	* gcc.target/i386/pr126959-2a.c: Likewise.
+ 	* gcc.target/i386/pr126959-2b.c: Likewise.
+ 
+ 2026-08-21  Jojo R  <rjiejie@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/crc-size-no-table.c: New test.
+ 
+ 2026-08-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/pr114734.c: Require rvv_zvl256b_ok.
+ 	* gcc.target/riscv/rvv/vsetvl/pr113429.c: Require rvv_zvl_ge_256b_ok.
+ 
+ 2026-08-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* gcc.target/riscv/rvv/vls-cc/empty-aggregate.c: New test.
+ 	* g++.target/riscv/vls-cc-empty-aggregate.C: New test.
+ 
+ 2026-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/avx256-unaligned-load-1.c (dg-options): Add
+ 	-mno-avx512f.
+ 	* gcc.target/i386/avx256-unaligned-load-2.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx256-unaligned-load-3.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx256-unaligned-store-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx256-unaligned-store-2.c (dg-options): Likewise.
+ 
+ 2026-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/widen_mult_high_chain.c: Scan both mulq and
+ 	mulx.
+ 
+ 2026-08-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126971
+ 	PR tree-optimization/112104
+ 	* gcc.target/i386/pr92080-12.c: Remove scan-assembler-times and
+ 	add check-function-bodies to check for optimized codegen.
+ 
+ 2026-08-21  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* gcc.target/riscv/fusion-cache-aligned-std.c: Remove.
+ 
+ 2026-08-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c: New
+ 	test.
+ 
+ 2026-08-21  Jin Ma  <jinma@linux.alibaba.com>
+ 
+ 	* lib/target-supports.exp (check_effective_target_rvv_zvl128b_ok):
+ 	Use a unique check_runtime property name.
+ 	(check_effective_target_rvv_zvl256b_ok): Likewise.
+ 	(check_effective_target_rvv_zvl_ge_256b_ok): Likewise.
+ 	(check_effective_target_rvv_zvl512b_ok): Likewise.
+ 
+ 2026-08-21  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* g++.dg/cpp0x/initlist135.C: Include <initializer_list> and
+ 	remove the inline definition of std::initializer_list.
+ 
+ 2026-08-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/126472
+ 	* g++.dg/cpp0x/initlist135.C: New test.
+ 
+ 2026-08-20  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/124983
+ 	* g++.dg/template/pr124983.C: New test.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/sve/perm_splice_1.c: New test.
+ 	* gcc.target/aarch64/sve/perm_splice_1-run.c: Likewise.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve/reduc_3_costly.c: Update the expected number
+ 	of horizontal reductions.
+ 	* gcc.target/aarch64/sve/widen_sum_1.c: New test.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	Revert:
+ 	2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve/reduc_3_costly.c: Update the expected number
+ 	of horizontal reductions.
+ 	* gcc.target/aarch64/sve/widen_sum_1.c: New test.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR middle-end/122069
+ 	* gcc.target/aarch64/sve/reduc_3_costly.c: Update the expected number
+ 	of horizontal reductions.
+ 	* gcc.target/aarch64/sve/widen_sum_1.c: New test.
+ 
+ 2026-08-20  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/vect-ctz.h: New file.
+ 	* gcc.target/aarch64/vect-ctz-1.c: New test.
+ 	* gcc.target/aarch64/vect-ctz-2.c: New test.
+ 	* gcc.target/aarch64/vect-ctz-3.c: New test.
+ 
+ 2026-08-20  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* c-c++-common/gomp/for-static-3.c: Use -fopenmp-ompt=extended
+ 	instead of -fopenmp-ompt-detailed.
+ 	* c-c++-common/gomp/openmp-ompt-1.c: Adjust expected diagnostic.
+ 	* c-c++-common/gomp/openmp-ompt-2.c: Use -fopenmp-ompt=extended
+ 	and adjust expected diagnostic.
+ 	* c-c++-common/gomp/scan-8.c: Use -fopenmp-ompt=basic instead of
+ 	-fopenmp-ompt.
+ 	* c-c++-common/gomp/scope-7.c: Likewise.
+ 	* c-c++-common/gomp/single2.c: Likewise.
+ 	* c-c++-common/gomp/for-static-4.c: New test.
+ 	* c-c++-common/gomp/openmp-ompt-3.c: New test.
+ 	* c-c++-common/gomp/openmp-ompt-4.c: New test.
+ 
+ 2026-08-20  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/126775
+ 	* gcc.dg/pr126775.c: New test case.
+ 
+ 2026-08-20  Shivam Gupta  <shivam98.tkg@gmail.com>
+ 
+ 	* gcc.dg/tree-ssa/bool-eq-bitxor.c: Update expected number
+ 	of optimized XOR forms.
+ 	* gcc.dg/tree-ssa/bool-xor-zero-one-valued.c: New test.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/sse2-bfloat16-scalar-typecheck.c (dg-options):
+ 	Add -mno-avx512bf16 -mno-avxneconvert.
+ 	* gcc.target/i386/vect-bfloat16-typecheck_1.c (dg-options):
+ 	Likewise.
+ 	* gcc.target/i386/vect-bfloat16-typecheck_2.c (dg-options):
+ 	Likewise.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* g++.dg/cpp23/ext-floating14.C (dg-additional-options): Add
+ 	-mno-avx512bf16 -mno-avxneconvert for x86.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/126959
+ 	* gcc.target/i386/uintr-4.c: Check SSE, AVX or AVX512 in the
+ 	expected error message.
+ 
+ 2026-08-20  Eikansh Gupta  <eikansh.gupta@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/112104
+ 	* gcc.target/i386/pr105735-1.c: Bump final value replacement count
+ 	from 8 to 9.
+ 	* gcc.target/i386/pr105735-3.c: Likewise.
+ 	* gcc.dg/tree-ssa/pr112104-1.c: New test.
+ 	* gcc.dg/tree-ssa/pr112104-2.c: New test.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/pr84876.c (dg-options): Add -mno-avx512f.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/pr70325.c (dg-options): Add -mno-avx512bw.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/fuse-caller-save-xmm.c (dg-options): Add
+ 	-mtune-ctrl=^sse_packed_single_insn_optimal.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/vect-shiftv4qi.c (dg-options): Replace
+ 	"-mno-avx2 -mno-avx512vl" with "-mno-ssse3 -mtune=generic".
+ 	* gcc.target/i386/vect-shiftv8qi.c (dg-options): Likewise.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/avx2-vbroadcastsi128-1.c (dg-options): Add
+ 	-mno-avx512f.
+ 	* gcc.target/i386/avx2-vbroadcastss_ps256-1.c (dg-options):
+ 	Likewise.
+ 	* gcc.target/i386/avx2-vextracti128-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vinserti128-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vpand-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vpand-3.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vpandn-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vpor-1.c (dg-options): Likewise.
+ 	* gcc.target/i386/avx2-vpxor-1.c (dg-options): Likewise.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/fma4-256-vector.c (dg-options): Add
+ 	-mno-avx512f.
+ 	* gcc.target/i386/fma4-builtin-2.c (dg-options): Likewise.
+ 	* gcc.target/i386/fma4-vector-2.c (dg-options): Likewise.
+ 	* gcc.target/i386/fma4-vector.c (dg-options): Likewise.
+ 
+ 2026-08-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/memset-pr120683-10.c (dg-options): Add
+ 	-mtune=generic.
+ 	* gcc.target/i386/memset-pr120683-12.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr122343-1b.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr122343-5b.c (dg-options): Likewise.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/pr125436-1a.c (dg-options): Add -mno-avx.
+ 	* gcc.target/i386/pr125436-1b.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr125436-2a.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr125436-2b.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr125436-3.c (dg-options): Likewise.
+ 	* gcc.target/i386/pr125436-4.c (dg-options): Likewise.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/builtin-copysign-4.c (dg-options): Add
+ 	-mtune-ctrl=^sse_packed_single_insn_optimal.
+ 	* gcc.target/i386/builtin-copysign-5.c (dg-options): Likewise.
+ 	* gcc.target/i386/builtin-copysign-6.c (dg-options): Likewise.
+ 	* gcc.target/i386/builtin-copysign-7.c (dg-options): Likewise.
+ 	* gcc.target/i386/builtin-copysign-8a.c (dg-options): Likewise.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/sse2-shiftqihi-constant-1.c (dg-options): Add
+ 	-mno-gfni.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/avx512bw-shiftqihi-constant-1.c (dg-options):
+ 	Add -mno-gfni.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/avx2-shiftqihi-constant-1.c (dg-options): Add
+ 	-mno-gfni.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/abi-mix-1.c (dg-options): Add -mno-avx.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	PR tree-optimization/126642
+ 	* gcc.dg/torture/long-mul-64-run.c: Add near-miss variants of the
+ 	idiom, cross-checked against their literal meaning.
+ 	* gcc.dg/tree-ssa/long-mul-carry.c: Add scans for the high-part
+ 	chain lowering and its dump message. Exclude sparc/hppa from
+ 	the chain-lowering scan.
+ 	* gcc.dg/tree-ssa/long-mul-ladder.c: Likewise.
+ 	* lib/target-supports.exp (check_effective_target_oi_mode): New;
+ 	enumerates targets whose mode table declares OImode.
+ 	* gcc.dg/long-mul-128-Og.c: New test.
+ 	* gcc.dg/torture/long-mul-128.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-chain-cse-128.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-chain-trunc-128.c: New test.
+ 	* gcc.target/arm/long-mul-thumb1-inline.c: New test.
+ 	* gcc.target/arm/long-mul-umull.c: New test.
+ 	* gcc.target/i386/long-mul-phi-split.c: New test.
+ 	* gcc.target/i386/long-mul-sweep.c: New test.
+ 	* gcc.target/i386/widen_mult_high_chain.c: New test.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.dg/tree-ssa/long-mul-carry.c: Add PHI-form CARRY_LOW_SUM,
+ 	CARRY_CROSS_SUM, and negated-branch compile variants; split the
+ 	forwprop1 high-part fold count into 10 on int128 and 8 on !int128.
+ 	* gcc.dg/tree-ssa/long-mul-two-carry.c: Add the
+ 	mulh_two_carry_low_phi function and its forwprop3 high-part
+ 	(carry PHI) fold scan.
+ 	* gcc.dg/tree-ssa/long-mul-boundary-64.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-boundary.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-partial.c: New test.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.dg/tree-ssa/long-mul-two-carry.c: Add a forwprop4 LOW
+ 	fold expectation for full_mul_two_carry, deferred from
+ 	forwprop3 by long_mul_check_low_plus_defer.
+ 	* gcc.dg/tree-ssa/long-mul-low-plus.c: New test.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.target/aarch64/long_mul.c: Add mulh_ladder and
+ 	mulh_ladder_32 functions; bump expected umulh / umull
+ 	scan counts from 1 to 2.
+ 	* gcc.target/i386/long_mul.c: Same for mulq / imulq.
+ 	* gcc.dg/tree-ssa/long-mul-ladder.c: New test.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.dg/tree-ssa/long-mul-two-carry.c: New test.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.dg/tree-ssa/long-mul-carry.c: Add carry-low-sum
+ 	coverage (mulh_carry_low_sum, full_mul_carry_low_sum,
+ 	mulh_carry_low_sum_comm, mulh_carry_low_sum_lohi,
+ 	mulh_carry_low_sum_128, mulh_carry_low_sum_v2i32) and
+ 	update fold counts.
+ 
+ 2026-08-19  Konstantinos Eleftheriou  <konstantinos.eleftheriou@vrull.eu>
+ 	    Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR tree-optimization/107090
+ 	* gcc.dg/torture/long-mul-64-run.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-carry.c: New test.
+ 	* gcc.dg/tree-ssa/long-mul-extra-addend.c: New test.
+ 	* gcc.target/aarch64/long_mul.c: New test.
+ 	* gcc.target/i386/long_mul.c: New test.
+ 
+ 2026-08-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* g++.dg/reflect/mangle3.C: Adjust.
+ 	* g++.dg/reflect/splice1.C: Remove XFAIL.
+ 
+ 2026-08-19  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* gcc.target/arm/cmse/cmse-18.c: Use effective-target
+ 	arm_arch_v8m_main.
+ 	* gcc.target/arm/cmse/cmse-19.c: Use effective-target
+ 	arm_arch_v8_1m_mve.
+ 	* lib/target-supports.exp: Define effective-target
+ 	arm_arch_v8m_main.
+ 
+ 2026-08-19  Andrea Pinski  <andrew.pinski@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126934
+ 	* gcc.dg/torture/pr126934-1.c: New test.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/vect-sat-trunc-1.c: New test.
+ 	* gcc.target/aarch64/vect-sat-trunc-2.c: New test.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/cmpdi-neg-1.c: New test.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR tree-optimization/125557
+ 	* gcc.target/i386/ifcvt-average-cost-1.c: New test.
+ 
+ 2026-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/specs/generic_inst10.ads: New test.
+ 	* gnat.dg/specs/generic_inst10_g1.ads: New helper.
+ 	* gnat.dg/specs/generic_inst10_g2.ads: Likewise.
+ 	* gnat.dg/specs/generic_inst10_g3.ads: Likewise.
+ 	* gnat.dg/specs/generic_inst10_pkg.ads: Likewise.
+ 
+ 2026-08-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gnat.dg/reduce7.adb: New test.
+ 
+ 2026-08-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/ext/sync-4.C: Adjust XFAIL to reflect that this issue
+ 	is now fixed on modern Darwin.
+ 
+ 2026-08-19  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/lto/pr86585_0.C: Add -dylib0.o for Darwin8/9.
+ 	* g++.dg/lto/pr87906_0.C: Likewise.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/126784
+ 	* g++.dg/tree-ssa/vec-narrow-1.C: Remove -Wno-psabi.  Add -msse4
+ 	and require int128 for x86.
+ 	* g++.dg/tree-ssa/vec-narrow-minmax-2.C: Likewise.
+ 
+ 2026-08-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126936
+ 	* gcc.dg/vect/bb-slp-pr126936.c: New testcase.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126927
+ 	* gcc.target/x86_64/abi/ms-sysv/do-test.S (call_do_test_unaligned):
+ 	New.
+ 	* gcc.target/x86_64/abi/ms-sysv/gen.cc (make_do_tests_decl):
+ 	Replace do_test_unaligned with call_do_test_unaligned.
+ 	(make_do_test): Remove asm statements with stack adjustment.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/xorps-sse2.c (dg-options): Add
+ 	-mtune-ctrl=^sse_packed_single_insn_optimal.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/xop-pcmov3.c (dg-options): Replace -mno-avx512vl
+ 	with -mno-avx512f.
+ 
+ 2026-08-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* gcc.target/i386/zero-scratch-regs-29.c (dg-options): Add
+ 	-mtune-ctrl=^use_ffreep.
+ 	* gcc.target/i386/zero-scratch-regs-30.c (dg-options): Likewise.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/126597
+ 	* gcc.target/aarch64/pr126597.c: New test.
+ 
+ 2026-08-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126918
+ 	* g++.dg/cpp26/constexpr-eh24.C: New test.
+ 	* g++.dg/cpp26/constexpr-eh25.C: New test.
+ 
+ 2026-08-19  Eczbek  <eczbek.void@gmail.com>
+ 
+ 	PR c++/70097
+ 	* g++.dg/cpp0x/ref-qual22.C: New test.
+ 
+ 2026-08-18  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/126856
+ 	* gcc.dg/pr126856.c: New test.
+ 
+ 2026-08-18  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR testsuite/126923
+ 	* g++.target/i386/mv28.C (dg-additional-options): New.
+ 
+ 2026-08-18  Dylan Rees  <dylan.rees@arm.com>
+ 
+ 	* gcc.target/aarch64/sve/pr121604_brk.c: Test extended.
+ 	* gcc.target/aarch64/sve/acle/general/pfirst_2.c: New test.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126867
+ 	* g++.dg/cpp1z/has-unique-obj-representations6.C: New test.
+ 
+ 2026-08-18  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121683
+ 	* gfortran.dg/structure_constructor_18.f90: New test
+ 
+ 2026-08-18  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* gfortran.dg/bind_c_private_1.f90: Use generic asm matchers for
+ 	hidden symbols.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126752
+ 	* g++.dg/cpp0x/initlist-array25.C: New test.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/126093
+ 	* g++.dg/reflect/mangle1.C: Add 2 new tests for reflections of
+ 	conversion templates.
+ 
+ 2026-08-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c: Adjust
+ 	expected output.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c: Likewise.
+ 	* gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c: Likewise.
+ 
+ 2026-08-18  Jeff Law  <jeffrey.law@oss.qualcomm.com>
+ 
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c: Disable
+ 	jump threading.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c: Likewise.
+ 	* gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c: Likewise.
+ 	* gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c: Likewise.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* g++.dg/eh/pr119507.C: Skip on alpha.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* gcc.dg/cmp-mem-const-3.c: Skip on alpha.
+ 	* gcc.dg/cmp-mem-const-4.c: Likewise.
+ 	* gcc.dg/cmp-mem-const-5.c: Likewise.
+ 	* gcc.dg/cmp-mem-const-6.c: Likewise.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* c-c++-common/attr-retain-2.c: Also pass -G0 on alpha.
+ 	* c-c++-common/attr-retain-3.c: Likewise.
+ 	* c-c++-common/attr-retain-4.c: Likewise.
+ 	* gcc.c-torture/compile/attr-retain-1.c: Likewise.
+ 	* gcc.c-torture/compile/attr-retain-2.c: Likewise.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* gcc.dg/torture/pr125545.c: Require asm_goto_with_outputs.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* g++.dg/opt/pr94589-6.C: Add dg-add-options ieee.
+ 	* g++.dg/torture/pr116120-2.C: Likewise.
+ 	* gcc.c-torture/execute/20190901-1.c: Likewise.
+ 	* gcc.dg/pr108447.c: Likewise.
+ 	* gcc.dg/pr94589-6.c: Likewise.
+ 	* gcc.dg/torture/pr126464.c: Likewise.
+ 	* gcc.dg/torture/pr126576.c: Likewise.
+ 
+ 2026-08-18  Matt Turner  <mattst88@gmail.com>
+ 
+ 	* g++.dg/no-stack-protector-attr.C: Remove the dead dg-do directive
+ 	and the hppa exclusion, and require fstack_protector.
+ 
+ 2026-08-18  Paul Thomas  <pault@gcc.gnu.org>
+ 
+ 	PR fortran/121384
+ 	* gfortran.dg/associate_83.f90: New test.
+ 	* gfortran.dg/associate_84.f90: New test.
+ 
+ 2026-08-18  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* gcc.target/aarch64/sve/roundeven_1.c: New test.
+ 	* gcc.target/aarch64/sve/roundeven_2.c: New test.
+ 
+ 2026-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126926
+ 	* gcc.dg/vect/bb-slp-pr126926.c: New testcase.
+ 
+ 2026-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126925
+ 	* gcc.dg/torture/pr126925.c: New testcase.
+ 
+ 2026-08-18  Dominic P  <gcc@gcc.dp11.uk>
+ 
+ 	* gcc.dg/fold-bit-test-combine-1.c: New test.
+ 
+ 2026-08-18  Egas Ribeiro  <egas.g.ribeiro@gmail.com>
+ 
+ 	PR analyzer/110578
+ 	* g++.dg/analyzer/dyncast-1.C: Rewrite to cover
+ 	[expr.dynamic.cast]/9.1 and /9.2 over public, non-virtual
+ 	inheritance.
+ 	* g++.dg/analyzer/dyncast-2.C: New test.
+ 	* g++.dg/analyzer/dyncast-3.C: New test.
+ 	* g++.dg/analyzer/dyncast-4.C: New test.
+ 	* g++.dg/analyzer/dyncast-5.C: New test.
+ 
+ 2026-08-18  Aldy Hernandez  <aldy@quesejoda.com>
+ 
+ 	PR tree-optimization/126876
+ 	* gcc.dg/tree-ssa/pr126876.c: New test.
+ 
+ 2026-08-18  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/126784
+ 	* g++.target/i386/pr126784-1.C: New test.
+ 	* g++.target/i386/pr126784-2.C: Likewise.
+ 	* gcc.target/i386/pr126784-1.c: Likewise.
+ 	* gcc.target/i386/pr126784-2.c: Likewise.
+ 	* gcc.target/i386/pr126784-3.c: Likewise.
+ 	* gcc.target/i386/pr126784-4.c: Likewise.
+ 	* gcc.target/i386/pr126784-5.c: Likewise.
+ 	* gcc.target/i386/pr126784-6.c: Likewise.
+ 
+ 2026-08-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.dg/tree-ssa/divmul-mod-1.c: Add -Wno-psabi to dg-options.
+ 	* gcc.dg/tree-ssa/round-up-ior-1.c: Likewise.
+ 	* gcc.dg/tree-ssa/vec-mask-zero-1.c: Require vect_int effective
+ 	target.  Add -Wno-psabi to dg-options and add -msse2 as
+ 	dg-additional-options on ia32.
+ 	* gcc.dg/tree-ssa/vector-alignup-1.c: Add -msse2 as
+ 	dg-additional-options on ia32.
+ 	* g++.dg/tree-ssa/vec-narrow-minmax-2.C: Add -Wno-psabi to dg-options.
+ 	* g++.dg/tree-ssa/vec-narrow-1.C: Likewise. Add -mmmx as
+ 	dg-additional-options on ia32.
+ 
+ 2026-08-18  Dominic P  <gcc@gcc.dp11.uk>
+ 
+ 	* gcc.dg/fold-mod-mult-1.c: New test.
+ 
+ 2026-08-18  Shivam Gupta  <shivam98.tkg@gmail.com>
+ 
+ 	PR tree-optimization/112533
+ 	* gcc.dg/tree-ssa/bool-eq-bitxor.c: New test.
+ 	* gcc.dg/tree-ssa/bool-eq-evenness.c: New test.
+ 	* gcc.dg/tree-ssa/bool-eq-pow2.c: New test.
+ 
+ 2026-08-17  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* g++.dg/lto/pr108772_0.C: Allow undefined symbols on Darwin.
+ 	* g++.dg/lto/pr114790_0.C: Likewise.
+ 	* g++.dg/lto/pr119614_0.C: Likewise.
+ 	* g++.dg/lto/pr85405_0.C: Likewise.
+ 	* g++.dg/lto/pr85405b_0.C: Likewise.
+ 	* g++.dg/lto/pr85655_0.C: Likewise.
+ 	* g++.dg/lto/pr86523-3_0.C: Likewise.
+ 	* g++.dg/lto/pr86585_0.C: Likewise.
+ 	* g++.dg/lto/pr87906_0.C: Likewise.
+ 	* g++.dg/lto/pr88046_0.C: Likewise.
+ 	* g++.dg/lto/pr88758_0.C: Likewise.
+ 	* g++.dg/lto/pr89330_0.C: Likewise.
+ 	* g++.dg/lto/pr91574_0.C: Likewise.
+ 	* g++.dg/lto/pr92609_0.C: Likewise.
+ 	* g++.dg/lto/pr93166_0.C: Likewise.
+ 	* gcc.dg/lto/pr61526_0.c: Likewise.
+ 	* g++.dg/lto/pr87295_0.C: Skip on Darwin.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/53800
+ 	* gfortran.dg/c_loc_test_22.f90: Update dump patterns for span
+ 	addressing.
+ 	* gfortran.dg/class_to_type_5.f90: New test.
+ 	* gfortran.dg/class_to_type_6.f90: New test.
+ 	* gfortran.dg/class_to_type_7.f90: New test.
+ 	* gfortran.dg/class_to_type_8.f90: New test.
+ 	* gfortran.dg/class_to_type_9.f90: New test.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/95542
+ 	* gfortran.dg/pr95542.f90: New test.
+ 
+ 2026-08-17  Dipesh Sharma  <Dipesh.Sharma@amd.com>
+ 	    Venkataramanan Kumar  <Venkataramanan.Kumar@amd.com>
+ 	    Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* g++.dg/other/i386-2.C: Add tests for avx10v2aux.
+ 	* g++.dg/other/i386-3.C: Likewise.
+ 	* gcc.target/i386/avx-1.c: Likewise.
+ 	* gcc.target/i386/funcspec-56.inc: Likewise.
+ 	* gcc.target/i386/sse-12.c: Likewise.
+ 	* gcc.target/i386/sse-13.c: Likewise.
+ 	* gcc.target/i386/sse-14.c: Likewise.
+ 	* gcc.target/i386/sse-22.c: Likewise.
+ 	* gcc.target/i386/sse-23.c: Likewise.
+ 	* lib/target-supports.exp: Add more checks for avx10v2aux.
+ 	* gcc.target/i386/avx10v2aux-convert-1i.c: New test.
+ 	* gcc.target/i386/avx10v2aux-convert-1j.c: New test.
+ 	* gcc.target/i386/avx10v2aux-convert-1k.c: New test.
+ 	* gcc.target/i386/avx10v2aux-convert-1l.c: New test.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/86937
+ 	* gcc.dg/warn-strnlen-no-nul.c: warnings were
+ 	added/removed/changed due to the new STRNLEN folding.
+ 	* gcc.dg/tree-ssa/pr86937.c: New test.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126743
+ 	* gcc.dg/tree-ssa/pr126743.c: New test.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/126748
+ 	* gcc.dg/tree-ssa/pr126748.c: New test.
+ 
+ 2026-08-17  Daniel Barboza  <daniel.barboza@oss.qualcomm.com>
+ 
+ 	PR tree-optimization/124667
+ 	* gcc.dg/tree-ssa/pr124667-2.c: New test.
+ 	* gcc.dg/tree-ssa/pr124667.c: New test.
+ 
+ 2026-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/126788
+ 	* gcc.target/i386/pr126788.c: New testcase.
+ 
+ 2026-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/126887
+ 	* gcc.dg/tree-ssa/ssa-thread-23.c: New testcase.
+ 	* gcc.dg/tree-ssa/ssa-thread-24.c: Likewise.
+ 
+ 2026-08-17  Abhishek Kaushik  <abhishek.kaushik@arm.com>
+ 
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_s16.c: New test.
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_s32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_s64.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_u16.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_u32.c: Likewise.
+ 	* gcc.target/aarch64/sve2/acle/asm/abal_u64.c: Likewise.
+ 
+ 2026-08-17  Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ 	PR fortran/126895
+ 	* gfortran.dg/is_contiguous_7.f90: New test.
+ 
+ 2026-08-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/base/pr112431-51.c: New test.
+ 
+ 2026-08-17  Pan Li  <pan2.li@intel.com>
+ 
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h:
+ 	Add test helper macros.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c: New test.
+ 	* gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c: New test.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/126872
+ 	* gfortran.dg/bind_c_private_1.f90: New test.
+ 
+ 2026-08-17  Odysseas Georgoudis  <odygrd@hotmail.com>
+ 
+ 	PR c++/126324
+ 	* g++.dg/cpp2a/constexpr-virtual-pr126324.C: New test.
+ 
+ 2026-08-16  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* lib/target-supports.exp (pytest_invoke): New function.
+ 	(check_effective_target_pytest3): Use pytest_invoke to add some
+ 	additional arguments to the pytest invocation.
+ 	* lib/gcov.exp (run-gcov-pytest): Set timeout to 300 seconds, report
+ 	test failure upon timeout, and use new pytest_invoke helper.
+ 	* lib/scanhtml.exp (run-html-pytest): Likewise.
+ 	* lib/scansarif.exp (run-sarif-pytest): Likewise.
+ 
+ 2026-08-16  Christopher Albert  <albert@tugraz.at>
+ 
+ 	PR fortran/110626
+ 	* gfortran.dg/finalize_62.f90: New test.
+ 
  2026-08-15  Mikael Morin  <mikael@gcc.gnu.org>
  
  	PR fortran/126892
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-2.c gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-2.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-2.c	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-2.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
--- 1,8 ----
  /* { dg-do compile { target gnu_retain } } */
  /* { dg-options "-Wall -O2" } */
+ /* Alpha places small objects in gp-relative sdata/sbss, which carry an
+    extra "s" section flag the scans do not match. */
+ /* { dg-additional-options "-G0" { target alpha*-*-* } } */
  
  static int xyzzy __attribute__((__used__, __retain__)) = 1; 
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-3.c gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-3.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-3.c	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-3.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
--- 1,8 ----
  /* { dg-do compile { target gnu_retain } } */
  /* { dg-options "-Wall -O2 -fcommon" } */
+ /* Alpha places small objects in gp-relative sdata/sbss, which carry an
+    extra "s" section flag the scans do not match. */
+ /* { dg-additional-options "-G0" { target alpha*-*-* } } */
  
  static int xyzzy __attribute__((__used__, __retain__)); 
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-4.c gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-4.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/attr-retain-4.c	Sun Aug 16 22:32:08 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/attr-retain-4.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
--- 1,8 ----
  /* { dg-do compile { target gnu_retain } } */
  /* { dg-options "-Wall -O2 -fcommon" } */
+ /* Alpha places small objects in gp-relative sdata/sbss, which carry an
+    extra "s" section flag the scans do not match. */
+ /* { dg-additional-options "-G0" { target alpha*-*-* } } */
  
  int xyzzy __attribute__((__used__, __retain__)); 
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/for-static-3.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/for-static-3.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/for-static-3.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/for-static-3.c	Sun Aug 23 22:32:10 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt-detailed -fdump-tree-ompexp" } */
  
! /* Check that, with -fopenmp-ompt-detailed, _dispatch builtins are called along
     with the _start and _end variants.  */
  
  #include "for-static.h"
--- 1,7 ----
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt=extended -fdump-tree-ompexp" } */
  
! /* Check that, with -fopenmp-ompt=extended, _dispatch builtins are called along
     with the _start and _end variants.  */
  
  #include "for-static.h"
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/for-static-4.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/for-static-4.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/for-static-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/for-static-4.c	Sun Aug 23 22:32:10 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fopenmp-ompt -fopenmp-ompt=minimal -fdump-tree-ompexp" } */
+ 
+ /* Check that minimal OMPT callbacks are generated (same as for-static-1.c).  */
+ 
+ #include "for-static.h"
+ 
+ /* { dg-final { scan-tree-dump-times "GOMP_loop_static_worksharing \\(\[^\\)\]" 2 "ompexp" } } */
+ /* { dg-final { scan-tree-dump-not "GOMP_loop_static_worksharing_start" "ompexp" } } */
+ /* { dg-final { scan-tree-dump-not "GOMP_loop_static_worksharing_dispatch" "ompexp" } } */
+ /* { dg-final { scan-tree-dump-not "GOMP_loop_static_worksharing_end" "ompexp" } } */
+ /* { dg-final { scan-tree-dump-times "GOMP_distribute_static_worksharing \\(\[^\\)\]" 2 "ompexp" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-1.c	Sun Aug 23 22:32:10 2026
***************
*** 1,4 ****
  /* { dg-do compile } */
  /* { dg-options "-fopenmp-ompt" } */
  
! /* { dg-error ".-fopenmp-ompt. and .-fopenmp-ompt-detailed. require .-fopenmp." "" { target *-*-* } 0 } */
--- 1,4 ----
  /* { dg-do compile } */
  /* { dg-options "-fopenmp-ompt" } */
  
! /* { dg-error ".-fopenmp-ompt. requires .-fopenmp." "" { target *-*-* } 0 } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-2.c	Sun Aug 23 22:32:10 2026
***************
*** 1,4 ****
  /* { dg-do compile } */
! /* { dg-options "-fopenmp-ompt-detailed" } */
  
! /* { dg-error ".-fopenmp-ompt. and .-fopenmp-ompt-detailed. require .-fopenmp." "" { target *-*-* } 0 } */
--- 1,4 ----
  /* { dg-do compile } */
! /* { dg-options "-fopenmp-ompt=extended" } */
  
! /* { dg-error ".-fopenmp-ompt. requires .-fopenmp." "" { target *-*-* } 0 } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-3.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-3.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-3.c	Sun Aug 23 22:32:10 2026
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fno-openmp-ompt" } */
+ 
+ /* { dg-error "unrecognized command-line option .-fno-openmp-ompt." "" { target *-*-* } 0 } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-4.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-4.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/openmp-ompt-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/openmp-ompt-4.c	Sun Aug 23 22:32:10 2026
***************
*** 0 ****
--- 1,4 ----
+ /* { dg-do compile } */
+ /* { dg-options "-fno-openmp-ompt=none" } */
+ 
+ /* { dg-error "unrecognized command-line option .-fno-openmp-ompt=none." "" { target *-*-* } 0 } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/scan-8.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/scan-8.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/scan-8.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/scan-8.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt -fdump-tree-ompexp" } */
  
  /* Check that an extra, OMPT variant of GOMP_loop_end is not emitted when the
     inscan modifier is present on the for construct.  */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt=basic -fdump-tree-ompexp" } */
  
  /* Check that an extra, OMPT variant of GOMP_loop_end is not emitted when the
     inscan modifier is present on the for construct.  */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/scope-7.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/scope-7.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/scope-7.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/scope-7.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt -fdump-tree-omplower" } */
  
  /* Check that OMPT variants of libgomp calls are emitted for the scope
     construct, both with and without a task reduction clause.  */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt=basic -fdump-tree-omplower" } */
  
  /* Check that OMPT variants of libgomp calls are emitted for the scope
     construct, both with and without a task reduction clause.  */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/single2.c gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/single2.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/gomp/single2.c	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/c-c++-common/gomp/single2.c	Sun Aug 23 22:32:10 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt -fdump-tree-ompexp" } */
  
  void
  foo (void)
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-additional-options "-fopenmp-ompt=basic -fdump-tree-ompexp" } */
  
  void
  foo (void)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c gcc-17-20260823/gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c
*** gcc-17-20260816/gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/c-c++-common/ubsan/overflow-vec-3.c	Sun Aug 23 22:32:11 2026
***************
*** 0 ****
--- 1,12 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-psabi -fsanitize=signed-integer-overflow -fdump-tree-ubsan" } */
+ 
+ typedef int v4si __attribute__ ((vector_size (4 * sizeof (int))));
+ 
+ v4si
+ f (v4si x)
+ {
+   return -(-x);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "\\.UBSAN_CHECK_SUB" 2 "ubsan" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-1.C gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-1.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-1.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-1.C	Sun Aug 23 22:32:11 2026
***************
*** 1,21 ****
  #include "../../gcc.dg/analyzer/analyzer-decls.h"
  
! struct base
! {
!   virtual ~base () {}
! };
! struct sub : public base
! {
!   int m_field;
! };
  
! int
! test_1 (base *p)
! {
!   if (sub *q = dynamic_cast <sub*> (p))
!     {
!       __analyzer_dump_path (); // { dg-message "path" }
!       return q->m_field;
!     }
!   return 0;
  }
--- 1,63 ----
+ /* Basic runtime checks:
+    [expr.dynamic.cast]/9.1 and /9.2 over public, non-virtual inheritance.  */
+ 
  #include "../../gcc.dg/analyzer/analyzer-decls.h"
  
! struct A { virtual ~A () {} };
! struct B : A { };
! struct C : B { int m; };
! struct S { virtual ~S () {} };
! struct D : C, S { };
  
! /* /9.1: SRC is a public base subobject of a unique DST object.  */
! void test_downcast () {
!   C obj;
!   obj.m = 50;
!   A *a = &obj;
! 
!   __analyzer_eval (dynamic_cast<B *> (a) != NULL); /* { dg-warning "TRUE" } */
! 
!   C *c = dynamic_cast<C *> (a);
!   __analyzer_eval (c != NULL); /* { dg-warning "TRUE" } */
!   /* The result region must alias the FE's own field accesses.  */
!   __analyzer_eval (c->m == 50); /* { dg-warning "TRUE" } */
!   __analyzer_eval (c == &obj);	/* { dg-warning "TRUE" } */
! }
! 
! /* The dynamic type is the SRC type itself: no DST above it.  */
! void test_no_derived_object () {
!   A obj;
!   A *a = &obj;
!   __analyzer_eval (dynamic_cast<C *> (a) == NULL); /* { dg-warning "TRUE" } */
! }
! 
! /* SRC sits at a nonzero offset in MDTYPE.  */
! void test_from_secondary_base () {
!   D obj;
!   obj.m = 7;
!   S *s = &obj;
!   D *d = dynamic_cast<D *> (s);
!   __analyzer_eval (d != NULL); /* { dg-warning "TRUE" } */
!   __analyzer_eval (d->m == 7); /* { dg-warning "TRUE" } */
! }
! 
! /* /9.2: A and S are unrelated, both public bases of D.  */
! void test_sidecast () {
!   D obj;
!   A *a = &obj;
!   S *s = dynamic_cast<S *> (a);
!   __analyzer_eval (s != NULL);	     /* { dg-warning "TRUE" } */
!   __analyzer_eval (s == (S *) &obj); /* { dg-warning "TRUE" } */
! }
! 
! /* Nothing is known about the dynamic type.  */
! void test_symbolic (A *p) {
!   __analyzer_eval (dynamic_cast<S *> (p) == NULL); /* { dg-warning "UNKNOWN" } */
!   /* { dg-warning "TRUE" "" { target *-*-* } .-1 } */
! }
! 
! /* /6: a null operand yields null with no runtime check.  */
! void test_null_operand () {
!   A *p = NULL;
!   __analyzer_eval (dynamic_cast<S *> (p) == NULL); /* { dg-warning "TRUE" } */
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-2.C gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-2.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-2.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-2.C	Sun Aug 23 22:32:11 2026
***************
*** 0 ****
--- 1,57 ----
+ /* Access control.
+    /9.1 constrains only the DST -> SRC path
+    /9.2 also requires SRC to be a public base subobject of MDTYPE.  */
+ 
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct P1 { virtual ~P1 () {} };
+ struct P2 { virtual ~P2 () {} };
+ struct B : private P1 { virtual ~B () {} };
+ struct C { virtual ~C () {} };
+ struct U { virtual ~U () {} };
+ struct MD : B, C, protected P2 { };
+ 
+ void test_nonpublic_src () {
+   MD obj;
+   P1 *p1 = (P1 *) &obj;
+   P2 *p2 = (P2 *) &obj;
+ 
+   /* /9.1 fails and /9.2's first premise fails.  */
+   __analyzer_eval (dynamic_cast<B *> (p1) == NULL); /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<C *> (p1) == NULL); /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<C *> (p2) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ void test_nonpublic_dst () {
+   MD obj;
+   B *b = &obj;
+   /* P2 is a protected, U is not a base.  */
+   __analyzer_eval (dynamic_cast<P2 *> (b) == NULL); /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<U *> (b) == NULL);  /* { dg-warning "TRUE" } */
+ }
+ 
+ /* Private edge moved across the DST object.  */
+ 
+ struct Base { virtual ~Base () {} };
+ struct Mid : Base { };
+ struct Outer : private Mid { };
+ struct Mid2 : private Base { };
+ struct Outer2 : Mid2 { };
+ 
+ void test_private_above_dst () {
+   Outer obj;
+   Base *b = (Base *) (Mid *) &obj;
+   /* /9.1 succeeds: Base is a public base of a unique Mid object.
+      The private Mid -> Outer edge doesn't affect /9.1.  */
+   __analyzer_eval (dynamic_cast<Mid *> (b) != NULL);   /* { dg-warning "TRUE" } */
+   /* ... but Outer itself is unreachable.  */
+   __analyzer_eval (dynamic_cast<Outer *> (b) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ void test_private_below_dst () {
+   Outer2 obj;
+   Base *b = (Base *) (Mid2 *) &obj;
+   /* /9.1 fails: no DST object has Base as a public base subobject.  */
+   __analyzer_eval (dynamic_cast<Mid2 *> (b) == NULL);	/* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<Outer2 *> (b) == NULL);	/* { dg-warning "TRUE" } */
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-3.C gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-3.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-3.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-3.C	Sun Aug 23 22:32:11 2026
***************
*** 0 ****
--- 1,50 ----
+ /* Ambiguity ignores access, and /9.1 is anchored at one SRC subobject
+    so a repeated base need not be ambiguous there.  */
+ 
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct A { virtual ~A () {} };
+ struct C { virtual ~C () {} };
+ struct P1 : C { };
+ struct P2 : C { };
+ struct MDpub : A, P1, P2 { };
+ struct MDpriv : A, P1, private P2 { };
+ 
+ /* /9.1 fails (A is below no C); /9.2 sees two C subobjects.  */
+ void test_ambiguous_dst () {
+   MDpub obj;
+   A *a = &obj;
+   __analyzer_eval (dynamic_cast<C *> (a) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* One of the two C subobjects is only reachable privately: ambiguity
+    ignores access, so this is still null.  */
+ void test_ambiguous_dst_mixed_access () {
+   MDpriv obj;
+   A *a = &obj;
+   __analyzer_eval (dynamic_cast<C *> (a) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* The SRC subobject selects which C encloses it.  */
+ void test_repeated_base_anchored_at_src () {
+   MDpub obj;
+   C *c = (C *) (P1 *) &obj;
+ 
+   /* /9.1: exactly one P1, and one MDpub, derive from this C.  */
+   __analyzer_eval (dynamic_cast<P1 *> (c) != NULL);    /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<MDpub *> (c) != NULL); /* { dg-warning "TRUE" } */
+ 
+   /* /9.1 fails for P2 (this C is not inside one),
+      but /9.2 succeeds: P2 is an unambiguous public base of MDpub.
+      Result is the other branch of the hierarchy.  */
+   __analyzer_eval (dynamic_cast<P2 *> (c) != NULL);	   /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<P2 *> (c) == (P2 *) &obj); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* Same, with P2 private: /9.2 now fails.  */
+ void test_repeated_base_private_sibling () {
+   MDpriv obj;
+   C *c = (C *) (P1 *) &obj;
+   __analyzer_eval (dynamic_cast<P1 *> (c) != NULL); /* { dg-warning "TRUE" } */
+   __analyzer_eval (dynamic_cast<P2 *> (c) == NULL); /* { dg-warning "TRUE" } */
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-4.C gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-4.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-4.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-4.C	Sun Aug 23 22:32:11 2026
***************
*** 0 ****
--- 1,83 ----
+ /* Virtual bases.  Before C++26, a constexpr constructor/destructor in a
+    class with virtual bases is rejected outright (constexpr-dynamic10.C), so
+    this part of /9 has no pre-C++26 counterpart in g++.dg/cpp2a.  */
+ 
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct A { virtual ~A () {} };
+ 
+ /* One shared V subobject, reached by two paths.  */
+ struct V { virtual ~V () {} int m; };
+ struct L : virtual V { };
+ struct R : virtual V { };
+ struct Diamond : A, L, R { };
+ 
+ void test_shared_virtual_dst () {
+   Diamond obj;
+   obj.m = 5;
+   A *a = &obj;
+   V *v = dynamic_cast<V *> (a);
+   __analyzer_eval (v != NULL); /* { dg-warning "TRUE" } */
+   __analyzer_eval (v->m == 5); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* Only one of the two paths to the shared V is public.  */
+ struct LPub : public virtual V { };
+ struct RPriv : private virtual V { };
+ struct MixedDiamond : A, LPub, RPriv { };
+ 
+ void test_shared_virtual_dst_mixed_access () {
+   MixedDiamond obj;
+   A *a = &obj;
+   /* [class.access.base]: one public path suffices.  */
+   __analyzer_eval (dynamic_cast<V *> (a) != NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* Two distinct B0 subobjects, each under its own virtual ancestor.  */
+ struct B0 { virtual ~B0 () {} };
+ struct V1 : B0 { };
+ struct V2 : B0 { };
+ struct D1 : virtual V1 { };
+ struct D2 : virtual V2 { };
+ struct TwoB0 : A, D1, D2 { };
+ 
+ void test_distinct_virtual_subobjects () {
+   TwoB0 obj;
+   A *a = &obj;
+   __analyzer_eval (dynamic_cast<B0 *> (a) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* SRC is a shared virtual base with two enclosing C objects: /9.1's
+    uniqueness clause fails, and /9.2 then finds C ambiguous.  */
+ struct S { virtual ~S () {} };
+ struct C : virtual S { };
+ struct CL : C { };
+ struct CR : C { };
+ struct TwoC : CL, CR { };
+ 
+ void test_virtual_src_two_enclosing_dst () {
+   TwoC obj;
+   S *s = &obj;
+   __analyzer_eval (dynamic_cast<C *> (s) == NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* Exactly one C derives from the shared S, and it is private in the most
+    derived object: /9.1 succeeds where /9.2 cannot.  */
+ struct OneC : private C { };
+ 
+ void test_virtual_src_one_enclosing_dst () {
+   OneC obj;
+   S *s = (S *) &obj;
+   __analyzer_eval (dynamic_cast<C *> (s) != NULL); /* { dg-warning "TRUE" } */
+ }
+ 
+ /* As above, but the operand was formed through a sibling that is not a
+    C, so the enclosing C is off that path.  */
+ struct NotC : virtual S { };
+ struct SideC : NotC, private C { };
+ 
+ void test_virtual_src_dst_off_the_path () {
+   SideC obj;
+   S *s = (S *) (NotC *) &obj;
+   __analyzer_eval (dynamic_cast<C *> (s) != NULL); /* { dg-warning "TRUE" } */
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-5.C gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-5.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/analyzer/dyncast-5.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/analyzer/dyncast-5.C	Sun Aug 23 22:32:11 2026
***************
*** 0 ****
--- 1,30 ----
+ /* /10: a failed cast to reference type throws std::bad_cast.  */
+ 
+ #include <typeinfo>
+ #include "../../gcc.dg/analyzer/analyzer-decls.h"
+ 
+ struct A { virtual ~A () {} };
+ struct B : A { int m; };
+ 
+ void test_ref_success () {
+   B obj;
+   obj.m = 3;
+   A &a = obj;
+   B &b = dynamic_cast<B &> (a);
+   __analyzer_eval (b.m == 3);	/* { dg-warning "TRUE" } */
+ }
+ 
+ void test_ref_failure () {
+   A obj;
+   A &a = obj;
+   try
+     {
+       B &b = dynamic_cast<B &> (a);
+       __analyzer_dump_path ();	/* { dg-bogus "path" } */
+       (void) b;
+     }
+   catch (std::bad_cast &)
+     {
+       __analyzer_dump_path ();	/* { dg-message "path" } */
+     }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/initlist-array25.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/initlist-array25.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/initlist-array25.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/initlist-array25.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/126752
+ // { dg-do compile { target c++11 } }
+ 
+ struct A {
+   struct B { constexpr B () {} };
+   struct C { ~C (); B c; };
+   struct D : private C {};
+   struct E { E (); };
+   struct F { D f {}; };
+   struct G { F g[1] {}; E h; };
+   void foo () { G {}; }
+ };
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/initlist135.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/initlist135.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/initlist135.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/initlist135.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,42 ----
+ // PR c++/126472
+ // { dg-do run { target c++11 } }
+ 
+ #include <initializer_list>
+ 
+ namespace std {
+ struct _Optional_payload_base {
+   struct _Storage {
+     constexpr _Storage() : _M_empty() {}
+ #if __cpp_constexpr >= 201907L
+     constexpr
+ #endif
+     ~_Storage() {}
+     int _M_empty;
+   } _M_payload;
+ };
+ struct _Optional_payload : _Optional_payload_base {};
+ template <typename> struct optional {
+   constexpr optional() {}
+   template <typename _Up> optional(_Up) {}
+   _Optional_payload _M_payload;
+ };
+ template <typename _T1, typename _T2> struct pair {
+   _T1 first;
+   _T2 second;
+   constexpr pair(_T1 __x, _T2 __y) : first(__x), second(__y) { }
+ };
+ template <typename> struct vector {
+   vector(int, int) {}
+ };
+ } // namespace std
+ 
+ using namespace std;
+ const initializer_list<pair<optional<vector<int>>, int>> data {
+   pair<optional<vector<int>>, int>( optional<vector<int>>(vector<int>(1, 10)), 42), // non-constant
+   pair<optional<vector<int>>, int>( optional<vector<int>>(), 100), // constant
+ };
+ 
+ int main() {
+   if (data.begin()[0].second != 42 || data.begin()[1].second != 100)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/ref-qual22.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/ref-qual22.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp0x/ref-qual22.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp0x/ref-qual22.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,18 ----
+ // PR c++/70097
+ // { dg-do compile { target c++11 } }
+ 
+ struct T {
+ 	void f() & {}
+ 	void g() && {}
+ };
+ using F = void() &;
+ using G = void() &&;
+ 
+ F T::* f = &T::f;
+ G T::* g = &T::g;
+ 
+ template<typename> struct U;
+ template<> struct U<void(T::*)() &> {};
+ template<> struct U<void(T::*)() &&> {};
+ U<F T::*> u;
+ U<G T::*> v;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations6.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations6.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations6.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations6.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,10 ----
+ // PR c++/126867
+ // { dg-do compile { target c++17 } }
+ 
+ template <class T>
+ constexpr bool U = __has_unique_object_representations (T);
+ 
+ struct S {};		// { dg-message "'S' does not have unique object representations, because" }
+ 			// { dg-message "'S' has padding and no data fields" "" { target *-*-* } .-1 }
+ 
+ static_assert (U <S>);	// { dg-error "static assertion failed" }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp23/ext-floating14.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp23/ext-floating14.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp23/ext-floating14.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp23/ext-floating14.C	Sun Aug 23 22:32:12 2026
***************
*** 2,7 ****
--- 2,8 ----
  // PR target/107703
  // { dg-do run { target c++23 } }
  // { dg-options "-fexcess-precision=standard" }
+ // { dg-additional-options "-mno-avx512bf16 -mno-avxneconvert" { target { i?86-*-* x86_64-*-* } } }
  
  #include "ext-floating.h"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp26/constexpr-eh24.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp26/constexpr-eh24.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp26/constexpr-eh24.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp26/constexpr-eh24.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,164 ----
+ // PR c++/126918
+ // { dg-do compile { target c++26 } }
+ 
+ struct S {
+   int m, n;
+   int foo (int x) { return x + 42; }
+   int bar (int x) noexcept { return x + 42; }
+ };
+ 
+ constexpr int S::*
+ foo (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw nullptr;
+     }
+   catch (int S::*p)
+     {
+       return p;
+     }
+   return &S::m;
+ }
+ 
+ constexpr int S::*
+ bar (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw nullptr;
+     }
+   catch (int S::*const &p)
+     {
+       return p;
+     }
+   return &S::m;
+ }
+ 
+ constexpr const int S::*
+ baz (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw &S::m;
+     }
+   catch (const int S::*p)
+     {
+       return p;
+     }
+   return nullptr;
+ }
+ 
+ constexpr const int S::*
+ qux (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw &S::m;
+     }
+   catch (const int S::*const &p)
+     {
+       return p;
+     }
+   return nullptr;
+ }
+ 
+ using F = int (S::*) (int);
+ using FNE = int (S::*) (int) noexcept;
+ 
+ constexpr F
+ corge (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw nullptr;
+     }
+   catch (F p)
+     {
+       return p;
+     }
+   return &S::foo;
+ }
+ 
+ constexpr F
+ garply (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       throw nullptr;
+     }
+   catch (F const &p)
+     {
+       return p;
+     }
+   return &S::foo;
+ }
+ 
+ constexpr F
+ fred (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       FNE fne = &S::bar;
+       throw fne;
+     }
+   catch (F p)
+     {
+       return p;
+     }
+   return nullptr;
+ }
+ 
+ constexpr F
+ waldo (bool x)
+ {
+   if (x)
+     return nullptr;
+   try
+     {
+       FNE fne = &S::bar;
+       throw fne;
+     }
+   catch (F const &p)
+     {
+       return p;
+     }
+   return nullptr;
+ }
+ 
+ static_assert (foo (false) == nullptr);
+ static_assert (bar (false) == nullptr);
+ static_assert (baz (false) == &S::m);
+ static_assert (qux (false) == &S::m);
+ static_assert (corge (false) == nullptr);
+ static_assert (garply (false) == nullptr);
+ static_assert (fred (false) == F (&S::bar));
+ static_assert (waldo (false) == F (&S::bar));
+ 
+ int
+ main ()
+ {
+   if (foo (false) != nullptr
+       || bar (false) != nullptr
+       || baz (false) != &S::m
+       || qux (false) != &S::m
+       || corge (false) != nullptr
+       || garply (false) != nullptr
+       || fred (false) != F (&S::bar)
+       || waldo (false) != F (&S::bar))
+     __builtin_abort ();
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp26/constexpr-eh25.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp26/constexpr-eh25.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp26/constexpr-eh25.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp26/constexpr-eh25.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,89 ----
+ // PR c++/126918
+ // { dg-do compile { target c++26 } }
+ 
+ struct S {
+   int m, n;
+   int foo (int x) { return x + 42; }
+   int bar (int x) noexcept { return x + 42; }
+ };
+ 
+ constexpr int S::*const &
+ foo (bool x)
+ {
+   static constexpr int S::*sm = &S::m;
+   if (x)
+     return sm;
+   try
+     {
+       throw nullptr;
+     }
+   catch (int S::*const &p)
+     {
+       return p;
+     }
+   return sm;
+ }
+ 
+ constexpr const int S::*const &
+ bar (bool x)
+ {
+   static constexpr const int S::*np = nullptr;
+   if (x)
+     return np;
+   try
+     {
+       throw &S::m;
+     }
+   catch (const int S::*const &p)
+     {
+       return p;
+     }
+   return np;
+ }
+ 
+ using F = int (S::*) (int);
+ using FNE = int (S::*) (int) noexcept;
+ 
+ constexpr F const &
+ baz (bool x)
+ {
+   static constexpr F f = &S::foo;
+   if (x)
+     return f;
+   try
+     {
+       throw nullptr;
+     }
+   catch (F const &p)
+     {
+       return p;
+     }
+   return f;
+ }
+ 
+ constexpr F const &
+ qux (bool x)
+ {
+   static constexpr F np = nullptr;
+   if (x)
+     return np;
+   try
+     {
+       FNE fne = &S::bar;
+       throw fne;
+     }
+   catch (F const &p)
+     {
+       return p;
+     }
+   return np;
+ }
+ 
+ static_assert (foo (false) == nullptr);		// { dg-error "non-constant condition for static assertion" }
+ 						// { dg-error "use of allocated storage after deallocation in a constant expression" "" { target *-*-* } .-1 }
+ static_assert (bar (false) == &S::m);		// { dg-error "non-constant condition for static assertion" }
+ 						// { dg-error "use of allocated storage after deallocation in a constant expression" "" { target *-*-* } .-1 }
+ static_assert (baz (false) == nullptr);		// { dg-error "non-constant condition for static assertion" }
+ 						// { dg-error "use of allocated storage after deallocation in a constant expression" "" { target *-*-* } .-1 }
+ static_assert (qux (false) == F (&S::bar));	// { dg-error "non-constant condition for static assertion" }
+ 						// { dg-error "use of allocated storage after deallocation in a constant expression" "" { target *-*-* } .-1 }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual-pr126324.C gcc-17-20260823/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual-pr126324.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual-pr126324.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/cpp2a/constexpr-virtual-pr126324.C	Sun Aug 23 22:32:12 2026
***************
*** 0 ****
--- 1,53 ----
+ // PR c++/126324
+ // { dg-do compile { target c++20 } }
+ 
+ struct B
+ {
+   virtual constexpr B *clone(bool null)
+   {
+     return null ? nullptr : this;
+   }
+ };
+ 
+ struct C
+ {
+   virtual void dummy() { }
+ };
+ 
+ struct D : B
+ {
+   constexpr D *clone(bool null) override
+   {
+     return null ? nullptr : this;
+   }
+ };
+ 
+ struct E : C, B
+ {
+   int calls = 0;
+ 
+   constexpr E *clone(bool null) override
+   {
+     ++calls;
+     return null ? nullptr : this;
+   }
+ };
+ 
+ constexpr bool test()
+ {
+   D d;
+   B *b = &d;
+   D *direct = d.clone (false);
+   B *nonnull = b->clone (false);
+   B *null = b->clone (true);
+ 
+   E e;
+   B *eb = &e;
+   B *enonnull = eb->clone (false);
+   B *enull = eb->clone (true);
+ 
+   return (direct == &d && nonnull == b && null == nullptr
+ 	  && enonnull == eb && enull == nullptr && e.calls == 2);
+ }
+ 
+ static_assert (test ());
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/eh/pr119507.C gcc-17-20260823/gcc/testsuite/g++.dg/eh/pr119507.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/eh/pr119507.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/eh/pr119507.C	Sun Aug 23 22:32:12 2026
***************
*** 3,8 ****
--- 3,10 ----
  // { dg-skip-if "!TARGET_EXCEPTION_DATA" { arm_eabi } }
  // Solaris/SPARC as uses a widely different COMDAT section syntax.
  // { dg-skip-if "Solaris/SPARC as syntax" { sparc*-*-* && solaris_as } }
+ // Alpha emits a single .gcc_except_table rather than per-function COMDAT ones.
+ // { dg-skip-if "no COMDAT exception tables" { alpha*-*-* } }
  // Force off function sections
  // Force on exceptions
  // { dg-options "-fno-function-sections -fexceptions" }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/ext/sync-4.C gcc-17-20260823/gcc/testsuite/g++.dg/ext/sync-4.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/ext/sync-4.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/ext/sync-4.C	Sun Aug 23 22:32:13 2026
***************
*** 1,6 ****
  /* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* *-*-uclinux* } } */
! /* FIXME The following additional option should be removed after the fix for radr://19802258.
! /* { dg-xfail-run-if "PR60563 radr://19802258" { *-*-darwin* } } */
  /* { dg-require-effective-target sync_long_long_runtime } */
  /* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
  /* { dg-additional-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
--- 1,5 ----
  /* { dg-do run { target hppa*-*-hpux* *-*-linux* *-*-gnu* powerpc*-*-darwin* *-*-darwin[912]* *-*-uclinux* } } */
! /* { dg-xfail-run-if "PR60563 radr://19802258" { *-*-darwin1* *-*-darwin2[0-3]* powerpc-*-darwin* } } */
  /* { dg-require-effective-target sync_long_long_runtime } */
  /* { dg-options "-fexceptions -fnon-call-exceptions -O2" } */
  /* { dg-additional-options "-march=pentium" { target { { i?86-*-* x86_64-*-* } && ia32 } } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr108772_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr108772_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr108772_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr108772_0.C	Sun Aug 23 22:32:13 2026
***************
*** 3,8 ****
--- 3,9 ----
  // { dg-require-effective-target fpic }
  // { dg-lto-options { "-flto -fPIC -shared -O1 -fimplicit-constexpr -g1" } }
  // { dg-extra-ld-options "-shared" }
+ // { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  namespace std {
  struct _Sp_counted_base {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr114790_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr114790_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr114790_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr114790_0.C	Sun Aug 23 22:32:13 2026
***************
*** 1,5 ****
--- 1,6 ----
  // { dg-lto-do link }
  // { dg-lto-options { { -w -flto -g -flto-partition=1to1 -O2 -shared -fPIC -fvisibility=hidden} } }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target shared }
  struct APITracerContext {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr119614_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr119614_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr119614_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr119614_0.C	Sun Aug 23 22:32:13 2026
***************
*** 5,10 ****
--- 5,11 ----
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target musttail }
  // { dg-extra-ld-options "-shared" }
+ // { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  struct S {} b;
  char *foo ();
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85405_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85405_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85405_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85405_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-lto-options {{-fPIC -shared -flto}} }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  class VclReferenceBase {
    int mnRefCnt;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85405b_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85405b_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85405b_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85405b_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-lto-options {{-fPIC -shared -flto}} }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  class VclReferenceBase { 
    int mnRefCnt;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85655_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85655_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr85655_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr85655_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-lto-options {{-O2 -fPIC -shared -flto}} }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  int a;
  void b(...);
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr86523-3_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr86523-3_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr86523-3_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr86523-3_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target shared }
  // { dg-lto-options { { -fPIC -flto -g -shared } } }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  class a {
      int b;
  };
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr86585_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr86585_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr86585_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr86585_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,9 ----
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target shared }
  // { dg-lto-options { { -flto -g -nostdlib -shared -fPIC } } }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup -lSystem" { target *-*-darwin[12][0-9]* } }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup -ldylib1.o -lSystem" { target *-*-darwin[89]* } }
  namespace Inkscape {
      class a;
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr87295_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr87295_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr87295_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr87295_0.C	Sun Aug 23 22:32:13 2026
***************
*** 1,6 ****
  // { dg-lto-do assemble }
  // { dg-lto-options { { -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 } } }
! 
  template<typename _Tp, _Tp __v>
  struct integral_constant
  {
--- 1,6 ----
  // { dg-lto-do assemble }
  // { dg-lto-options { { -flto -ffat-lto-objects -fdebug-types-section -g -std=gnu++17 } } }
! // { dg-skip-if "no fdebug-types-section"  { *-*-darwin* } }
  template<typename _Tp, _Tp __v>
  struct integral_constant
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr87906_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr87906_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr87906_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr87906_0.C	Sun Aug 23 22:32:13 2026
***************
*** 4,10 ****
  // { dg-require-effective-target shared }
  // { dg-lto-options { { -O -fPIC -flto } } }
  // { dg-extra-ld-options "-shared -nostdlib" }
! 
  namespace com {
  namespace moon {
  namespace star {}
--- 4,11 ----
  // { dg-require-effective-target shared }
  // { dg-lto-options { { -O -fPIC -flto } } }
  // { dg-extra-ld-options "-shared -nostdlib" }
! // { dg-extra-ld-options "-shared -nostdlib -Wl,-undefined,dynamic_lookup -lSystem" { target *-*-darwin[12][0-9]* } }
! // { dg-extra-ld-options "-shared -nostdlib -Wl,-undefined,dynamic_lookup -ldylib1.o -lSystem" { target *-*-darwin[89]* } }
  namespace com {
  namespace moon {
  namespace star {}
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr88046_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr88046_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr88046_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr88046_0.C	Sun Aug 23 22:32:13 2026
***************
*** 4,9 ****
--- 4,10 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-extra-ld-options "-shared -g" }
+ // { dg-extra-ld-options "-shared -g -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  class a {};
  class b : virtual a {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr88758_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr88758_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr88758_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr88758_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target shared }
  // { dg-lto-options { { -O3 -fPIC -flto -shared } } }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  void PreEvaluate(void);
  int main() { PreEvaluate(); return 0; }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr89330_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr89330_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr89330_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr89330_0.C	Sun Aug 23 22:32:13 2026
***************
*** 2,7 ****
--- 2,8 ----
  // { dg-lto-options { { -O3 -g -flto -shared -fPIC -Wno-odr } } }
  // { dg-require-effective-target fpic }
  // { dg-require-effective-target shared }
+ // { dg-extra-ld-options "-Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  namespace Inkscape {
  class Anchored {};
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr91574_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr91574_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr91574_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr91574_0.C	Sun Aug 23 22:32:13 2026
***************
*** 4,9 ****
--- 4,10 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-extra-ld-options "-shared" }
+ // { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  class A
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr92609_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr92609_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr92609_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr92609_0.C	Sun Aug 23 22:32:13 2026
***************
*** 4,9 ****
--- 4,10 ----
  // { dg-require-effective-target shared }
  // { dg-require-effective-target fpic }
  // { dg-extra-ld-options "-shared" }
+ // { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  namespace std {
  inline namespace __cxx11 {}
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr93166_0.C gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr93166_0.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/lto/pr93166_0.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/lto/pr93166_0.C	Sun Aug 23 22:32:13 2026
***************
*** 5,10 ****
--- 5,11 ----
  // { dg-require-effective-target fpic }
  // { dg-extra-ld-options "-shared" }
  // { dg-require-visibility "" }
+ // { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } }
  
  namespace Qt {
  enum DropAction {};
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/modules/typeid-2_a.C gcc-17-20260823/gcc/testsuite/g++.dg/modules/typeid-2_a.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/modules/typeid-2_a.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/modules/typeid-2_a.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,12 ----
+ // PR c++/124888
+ // { dg-additional-options -fmodules }
+ 
+ module;
+ #include <typeinfo>
+ export module foo;
+ 
+ export template <class T>
+ const std::type_info &f(T *p)
+ {
+   return typeid (*p);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/modules/typeid-2_b.C gcc-17-20260823/gcc/testsuite/g++.dg/modules/typeid-2_b.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/modules/typeid-2_b.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/modules/typeid-2_b.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,12 ----
+ // { dg-additional-options -fmodules }
+ 
+ import foo;
+ 
+ struct A { };
+ struct B { virtual void f() { } };
+ 
+ void g(A* a, B* b)
+ {
+   f (a);
+   f (b);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/no-stack-protector-attr.C gcc-17-20260823/gcc/testsuite/g++.dg/no-stack-protector-attr.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/no-stack-protector-attr.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/no-stack-protector-attr.C	Sun Aug 23 22:32:13 2026
***************
*** 1,11 ****
  /* PR c/94722 */
  /* Test that stack protection is disabled via no_stack_protector attribute. */
  
! /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
  /* { dg-options "-O2 -fstack-protector-all" } */
  
- /* { dg-do compile { target { ! hppa*-*-* } } } */
- 
  int __attribute__((no_stack_protector)) c()
  {
    int a;
--- 1,10 ----
  /* PR c/94722 */
  /* Test that stack protection is disabled via no_stack_protector attribute. */
  
! /* { dg-do compile } */
! /* { dg-require-effective-target fstack_protector } */
  /* { dg-options "-O2 -fstack-protector-all" } */
  
  int __attribute__((no_stack_protector)) c()
  {
    int a;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/opt/pr94589-6.C gcc-17-20260823/gcc/testsuite/g++.dg/opt/pr94589-6.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/opt/pr94589-6.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/opt/pr94589-6.C	Sun Aug 23 22:32:13 2026
***************
*** 1,6 ****
--- 1,7 ----
  // { dg-do run { target c++20 } }
  // { dg-require-effective-target inf }
  // { dg-options "-O2 -g" }
+ // { dg-add-options ieee }
  
  #include "pr94589-5.C"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/other/i386-2.C gcc-17-20260823/gcc/testsuite/g++.dg/other/i386-2.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/other/i386-2.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/other/i386-2.C	Sun Aug 23 22:32:13 2026
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/other/i386-3.C gcc-17-20260823/gcc/testsuite/g++.dg/other/i386-3.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/other/i386-3.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/other/i386-3.C	Sun Aug 23 22:32:13 2026
***************
*** 1,5 ****
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
--- 1,5 ----
  /* { dg-do compile { target i?86-*-* x86_64-*-* } } */
! /* { dg-options "-O -fkeep-inline-functions -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
  /* { dg-skip-if "requires hosted libstdc++ for cstdlib malloc" { ! hostedlib } } */
  
  /* Test that {,x,e,p,t,s,w,a,b,i}mmintrin.h, mm3dnow.h, fma4intrin.h,
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/reflect/mangle1.C gcc-17-20260823/gcc/testsuite/g++.dg/reflect/mangle1.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/reflect/mangle1.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/reflect/mangle1.C	Sun Aug 23 22:32:13 2026
*************** struct S : B {
*** 15,20 ****
--- 15,24 ----
    int : 0;
    static int var;
  };
+ struct Q {
+   template <typename T>
+   operator T () { return T (); }
+ };
  struct W { union {}; union {}; union {}; union {}; };
  template <auto> struct TCls {};
  template <auto> void TFn ();
*************** namespace NS2 {
*** 65,70 ****
--- 69,78 ----
    struct Z {
    };
    struct AA { int a, b; };
+   struct Q {
+     template <int N>
+     operator int () { return N; }
+   };
  }
  
  constexpr auto ctx = std::meta::access_context::current ();
*************** baz (int x)
*** 147,152 ****
--- 155,162 ----
    bar <241, ^^NS2::TCls> (); // class template
    bar <250, ^^TFn> (); // function template
    bar <251, ^^NS2::TFn> (); // function template
+   bar <252, members_of (^^Q, ctx)[0]> (); // function template
+   bar <253, members_of (^^NS2::Q, ctx)[0]> (); // function template
    bar <260, ^^TVar> (); // variable template
    bar <261, ^^NS2::TVar> (); // variable template
    bar <270, ^^TAlias> (); // alias template
*************** baz (int x)
*** 239,244 ****
--- 249,256 ----
  // { dg-final { scan-assembler "_Z3barILi241ELDmct3NS24TClsEEvv" } }
  // { dg-final { scan-assembler "_Z3barILi250ELDmft3TFnEEvv" } }
  // { dg-final { scan-assembler "_Z3barILi251ELDmft3NS23TFnEEvv" } }
+ // { dg-final { scan-assembler "_Z3barILi252ELDmft1QcvT_EEvv" } }
+ // { dg-final { scan-assembler "_Z3barILi253ELDmft3NS21QcviEEvv" } }
  // { dg-final { scan-assembler "_Z3barILi260ELDmvt4TVarEEvv" } }
  // { dg-final { scan-assembler "_Z3barILi261ELDmvt3NS24TVarEEvv" } }
  // { dg-final { scan-assembler "_Z3barILi270ELDmat6TAliasEEvv" } }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/reflect/mangle3.C gcc-17-20260823/gcc/testsuite/g++.dg/reflect/mangle3.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/reflect/mangle3.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/reflect/mangle3.C	Sun Aug 23 22:32:13 2026
*************** consteval auto f26 (typename [:^^T:] x)
*** 134,139 ****
--- 134,142 ----
  template<info R>
  constexpr auto f27 (typename [:R:]::Alias x) { return x; }
  
+ template<info M>
+ constexpr auto f28 () -> decltype(S{}.[:M:].i) { return 42; }
+ 
  void
  g (int p)
  {
*************** g (int p)
*** 175,182 ****
  // { dg-final { scan-assembler "_Z2f5ILDmvlLi42EEEDtDST_EEv" } }
    f5<std::meta::reflect_object (arr[1])>();
  // { dg-final { scan-assembler "_Z2f5ILDmobixL_Z3arrEL\[ilx]1EEEDtDST_EEv" } }
-   f5<bases_of (^^S, ctx)[0]>();
- // { dg-final { scan-assembler "_Z2f5ILDmba_1SEEDtDST_EEv" } }
    f6<Y>(Y{42});
  // { dg-final { scan-assembler "_Z2f6I1YEDaDSLDmtyT_EE" } }
    f7<^^TCls>(TCls<0>{});
--- 178,183 ----
*************** g (int p)
*** 236,239 ****
--- 237,242 ----
    constexpr auto r = f26<std::meta::info>({});
    f27<^^::>(42);
  // { dg-final { scan-assembler "_Z3f27ILDmgsEEDaNDST_E5AliasE" } }
+   f28<bases_of (^^S, ctx)[0]>();
+ // { dg-final { scan-assembler "_Z3f28ILDmba_1SEEDtdtdttlS0_EDST_E1iEv" } }
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/reflect/splice1.C gcc-17-20260823/gcc/testsuite/g++.dg/reflect/splice1.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/reflect/splice1.C	Sun Aug 16 22:32:09 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/reflect/splice1.C	Sun Aug 23 22:32:13 2026
*************** foo ()
*** 24,28 ****
    s.[: (members_of (^^S, ctx) | std::views::filter (is_destructor) | std::ranges::to <std::vector> ())[0] :] ();		// { dg-error "cannot use constructor or destructor .constexpr S::~S\\(\\). in a splice expression" }
    [: annotations_of (^^foo)[0] :]; // { dg-error "cannot use an annotation .1. in a splice expression" }
    [: data_member_spec (^^S, { .name = "name" }) :]; // { dg-error "cannot use a data member specification in a splice expression" }
!   [: bases_of (^^T, ctx)[0] :];													// { dg-error "" "" { xfail *-*-* } }
  }
--- 24,28 ----
    s.[: (members_of (^^S, ctx) | std::views::filter (is_destructor) | std::ranges::to <std::vector> ())[0] :] ();		// { dg-error "cannot use constructor or destructor .constexpr S::~S\\(\\). in a splice expression" }
    [: annotations_of (^^foo)[0] :]; // { dg-error "cannot use an annotation .1. in a splice expression" }
    [: data_member_spec (^^S, { .name = "name" }) :]; // { dg-error "cannot use a data member specification in a splice expression" }
!   [: bases_of (^^T, ctx)[0] :];	// { dg-error "cannot use a base class in a splice expression" }
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/template/pr124983.C gcc-17-20260823/gcc/testsuite/g++.dg/template/pr124983.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/template/pr124983.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.dg/template/pr124983.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,49 ----
+ // PR c++/124983
+ // { dg-do compile }
+ 
+ template <class T>
+ struct A
+ {
+   using typename T::Type;
+ 
+   void f()
+   {
+     this->type(); // { dg-error "no member named 'type'; did you mean 'Type'" }
+   }
+ };
+ 
+ template <class T>
+ struct B
+ {
+   typedef typename T::Type Type;
+   static T Value;
+ 
+   void f()
+   {
+     this->type(); // { dg-error "no member named 'type'; did you mean 'Type'" }
+     this->value(); // { dg-error "no member named 'value'; did you mean 'Value'" }
+   }
+ };
+ 
+ struct X
+ {
+   typedef int Type;
+ };
+ 
+ template <class T>
+ struct C
+ {
+ private:
+   typedef typename T::Type Type; // { dg-message "declared private" }
+   static T Value; // { dg-message "declared private" }
+ };
+ 
+ template <class T>
+ void g()
+ {
+   typename C<T>::Type t; // { dg-error "private within this context" }
+   (void) C<T>::Value; // { dg-error "private within this context" }
+   (void) t;
+ }
+ 
+ template void g<X>(); // { dg-message "required from here" }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/torture/pr116120-2.C gcc-17-20260823/gcc/testsuite/g++.dg/torture/pr116120-2.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/torture/pr116120-2.C	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/torture/pr116120-2.C	Sun Aug 23 22:32:13 2026
***************
*** 1,4 ****
--- 1,5 ----
  // { dg-do run }
+ // { dg-add-options ieee }
  // PR tree-optimization/116120
  
  // The optimization for `(a ? x : y) == (b ? x : y)`
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C gcc-17-20260823/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-1.C	Sun Aug 23 22:32:13 2026
***************
*** 1,6 ****
  // { dg-do compile }
  // { dg-options "-O2 -fdump-tree-optimized" }
! // { dg-additional-options "-mavx512vl -mavx512dq" { target { i?86-*-* x86_64-*-* } } }
  // Extension is monotone, so it commutes with the comparison and the outer
  // truncation is exact.  The argument is lanewise, so a widened vector
  // MIN/MAX feeding a truncating conversion narrows.
--- 1,7 ----
  // { dg-do compile }
  // { dg-options "-O2 -fdump-tree-optimized" }
! // { dg-additional-options "-msse4" { target { i?86-*-* x86_64-*-* } } }
! // { dg-require-effective-target int128 { target { i?86-*-* x86_64-*-* } } }
  // Extension is monotone, so it commutes with the comparison and the outer
  // truncation is exact.  The argument is lanewise, so a widened vector
  // MIN/MAX feeding a truncating conversion narrows.
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C gcc-17-20260823/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C
*** gcc-17-20260816/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/g++.dg/tree-ssa/vec-narrow-minmax-2.C	Sun Aug 23 22:32:13 2026
***************
*** 1,5 ****
--- 1,7 ----
  // { dg-do compile }
  // { dg-options "-O2 -fdump-tree-optimized" }
+ // { dg-additional-options "-msse4" { target { i?86-*-* x86_64-*-* } } }
+ // { dg-require-effective-target int128 { target { i?86-*-* x86_64-*-* } } }
  
  typedef int v2si __attribute__((vector_size (8)));
  typedef long long v2di __attribute__((vector_size (16)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.target/i386/mv28.C gcc-17-20260823/gcc/testsuite/g++.target/i386/mv28.C
*** gcc-17-20260816/gcc/testsuite/g++.target/i386/mv28.C	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/g++.target/i386/mv28.C	Sun Aug 23 22:32:13 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-require-ifunc "" }  */
+ /* { dg-additional-options "-march=x86-64" } */
  
  void __attribute__ ((target("avx512vl"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */
  void __attribute__ ((target("avx512bw"))) foo () {} /* { dg-error "ISA '\[^\n\r\]*' is not supported in 'target' attribute, use 'arch=' syntax" } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.target/i386/pr126784-1.C gcc-17-20260823/gcc/testsuite/g++.target/i386/pr126784-1.C
*** gcc-17-20260816/gcc/testsuite/g++.target/i386/pr126784-1.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.target/i386/pr126784-1.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2 -march=x86-64 -msse4 -std=c++17" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **_Z4funcDv2_iS_:
+ **.LFB0:
+ **	.cfi_startproc
+ **	pminsd	%xmm1, %xmm0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ typedef int  v2si __attribute__((vector_size (8)));
+ typedef long long v2di __attribute__((vector_size (16)));
+ 
+ v2si
+ func (v2si a, v2si b)
+ {
+   v2di x = __builtin_convertvector (a, v2di);
+   v2di y = __builtin_convertvector (b, v2di);
+   v2di z = x < y ? x : y;
+   return __builtin_convertvector (z, v2si);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.target/i386/pr126784-2.C gcc-17-20260823/gcc/testsuite/g++.target/i386/pr126784-2.C
*** gcc-17-20260816/gcc/testsuite/g++.target/i386/pr126784-2.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.target/i386/pr126784-2.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2 -march=x86-64 -msse4 -std=c++17" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **_Z4funcDv2_iS_PDv2_x:
+ **.LFB0:
+ **	.cfi_startproc
+ **	pminsd	%xmm1, %xmm0
+ **	pmovsxdq	%xmm0, %xmm1
+ **	movaps	%xmm1, \(%[er]di\)
+ **	ret
+ **...
+ */
+ 
+ typedef int  v2si __attribute__((vector_size (8)));
+ typedef long long v2di __attribute__((vector_size (16)));
+ 
+ v2si
+ func (v2si a, v2si b, v2di *p)
+ {
+   v2di x = __builtin_convertvector (a, v2di);
+   v2di y = __builtin_convertvector (b, v2di);
+   v2di z = x < y ? x : y;
+   *p = z;
+   return __builtin_convertvector (z, v2si);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/g++.target/riscv/vls-cc-empty-aggregate.C gcc-17-20260823/gcc/testsuite/g++.target/riscv/vls-cc-empty-aggregate.C
*** gcc-17-20260816/gcc/testsuite/g++.target/riscv/vls-cc-empty-aggregate.C	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/g++.target/riscv/vls-cc-empty-aggregate.C	Sun Aug 23 22:32:13 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl512b -mabi=lp64d" } */
+ 
+ /* An aggregate with no field has nothing to pass in a vector register.  It
+    used to run an empty field list into riscv_pass_aggregate_in_vr.  */
+ 
+ struct empty { };
+ struct derived : empty { };
+ 
+ __attribute__((riscv_vls_cc(1024))) void arg (empty);
+ __attribute__((riscv_vls_cc(1024))) void arg_derived (derived);
+ __attribute__((riscv_vls_cc(1024))) empty ret ();
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ def_arg (empty x)
+ {
+   arg (x);
+ }
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ def_arg_derived (derived x)
+ {
+   arg_derived (x);
+ }
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ call_ret ()
+ {
+   ret ();
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c gcc-17-20260823/gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
--- 1,9 ----
  /* { dg-do compile { target gnu_retain } } */
  /* Prevent readonly data from being put in writable sdata for 32-bit powerpc. */
  /* { dg-options "-G0" { target { powerpc*-*-* && ilp32 } } } */
+ /* Alpha places small objects in gp-relative sdata/sbss, which carry an
+    extra "s" section flag the scans do not match. */
+ /* { dg-additional-options "-G0" { target alpha*-*-* } } */
  /* { dg-final { scan-assembler ".text.*,\"axR\"" } } */
  /* { dg-final { scan-assembler ".bss.*,\"awR\"" } } */
  /* { dg-final { scan-assembler ".data.*,\"awR\"" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c gcc-17-20260823/gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c	Sun Aug 23 22:32:14 2026
***************
*** 13,17 ****
--- 13,20 ----
  /* { dg-options "-ffunction-sections -fdata-sections" } */
  /* Prevent readonly data from being put in writable sdata for 32-bit powerpc. */
  /* { dg-options "-ffunction-sections -fdata-sections -G0" { target { powerpc*-*-* && ilp32 } } } */
+ /* Alpha places small objects in gp-relative sdata/sbss, which carry an
+    extra "s" section flag the scans do not match. */
+ /* { dg-additional-options "-G0" { target alpha*-*-* } } */
  
  #include "attr-retain-1.c"
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/20190901-1.c gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/20190901-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/20190901-1.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/20190901-1.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* PR target/91472 */
  /* Reported by John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de> */
  /* { dg-require-effective-target double64plus } */
+ /* { dg-add-options ieee } */
  
  #if __SIZEOF_INT__ >= 4
  typedef unsigned int gmp_uint_least32_t;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/pr126501.c gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/pr126501.c
*** gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/pr126501.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/pr126501.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,64 ----
+ /* PR rtl-optimization/126501 */
+ /* If-conversion emitted a fresh comparison at the end of the test block
+    while a condition-code value set earlier in that block was still live
+    in the join block.  */
+ 
+ struct F { unsigned int f0 : 2, f1 : 2, f2 : 2; };
+ struct G { unsigned int g : 2; };
+ struct S { struct F f; struct G g[6]; };
+ 
+ __attribute__((noipa)) int
+ f (struct S *p, int x)
+ {
+   p->g[1].g = (1 >= p->f.f1);
+   p->g[2].g = x ? p->f.f0 : p->f.f2;
+   p->g[0].g = p->g[1].g + p->g[2].g;
+   return p->g[0].g;
+ }
+ 
+ __attribute__((noipa)) int
+ ref (struct S *p, int x)
+ {
+   volatile int f0 = p->f.f0, f1 = p->f.f1, f2 = p->f.f2;
+   volatile int a = (1 >= f1);
+   volatile int b = (x ? f0 : f2);
+ 
+   p->g[1].g = a;
+   p->g[2].g = b;
+   p->g[0].g = (int) p->g[1].g + (int) p->g[2].g;
+   return p->g[0].g;
+ }
+ 
+ __attribute__((noipa)) int
+ opaque (int v)
+ {
+   return v;
+ }
+ 
+ int
+ main (void)
+ {
+   struct S s;
+   int i, j, k, xi;
+ 
+   for (i = 0; i < 4; i++)
+     for (j = 0; j < 4; j++)
+       for (k = 0; k < 4; k++)
+ 	for (xi = 0; xi < 2; xi++)
+ 	  {
+ 	    int x = opaque (xi);
+ 	    int got, want;
+ 
+ 	    __builtin_memset (&s, 0, sizeof s);
+ 	    s.f.f0 = i; s.f.f1 = j; s.f.f2 = k;
+ 	    got = f (&s, x);
+ 
+ 	    __builtin_memset (&s, 0, sizeof s);
+ 	    s.f.f0 = i; s.f.f1 = j; s.f.f2 = k;
+ 	    want = ref (&s, x);
+ 
+ 	    if (got != want)
+ 	      __builtin_abort ();
+ 	  }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/pr126747.c gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/pr126747.c
*** gcc-17-20260816/gcc/testsuite/gcc.c-torture/execute/pr126747.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.c-torture/execute/pr126747.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,26 ----
+ /* PR rtl-optimization/126747 */
+ /* Both overflow tests read one condition-code value that late-combine left
+    live across the branches.  If-conversion emitted a fresh comparison at the
+    end of the test block and destroyed it.  */
+ 
+ volatile int c[2];
+ 
+ __attribute__((noipa)) int
+ foo (unsigned x, unsigned y)
+ {
+   unsigned r = x * y;
+   int t = 0;
+   if (c[0]) { int u = 0; if (x != 0) u = (r / x != y); t += u; }
+   if (c[1]) { int u = 0; if (x != 0) u = (r / x != y); t += u; }
+   return t;
+ }
+ 
+ int
+ main (void)
+ {
+   c[0] = 1;
+   c[1] = 1;
+   if (foo (1, 1) != 0)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-3.c gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-3.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-3.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* } } } } } */
  /* Excluding sparc since there we do not end up with a comparison of memory and
     a constant which means that the optimization is not applicable.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to HI" "combine" } } */
  
--- 1,7 ----
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* alpha*-*-* } } } } } */
  /* Excluding sparc since there we do not end up with a comparison of memory and
     a constant which means that the optimization is not applicable.  */
+ /* Excluding alpha since memory comparisons are not narrowed there.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to HI" "combine" } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-4.c gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-4.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-4.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* } } } } } */
  /* Excluding sparc since there we do not end up with a comparison of memory and
     a constant which means that the optimization is not applicable.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to HI" "combine" } } */
  
--- 1,7 ----
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* alpha*-*-* } } } } } */
  /* Excluding sparc since there we do not end up with a comparison of memory and
     a constant which means that the optimization is not applicable.  */
+ /* Excluding alpha since memory comparisons are not narrowed there.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to HI" "combine" } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-5.c gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-5.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-5.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* } } } } } */
  /* Excluding sparc since there a prior optimization already reduced the
     constant, i.e., nothing left for us.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to SI" "combine" } } */
  
--- 1,7 ----
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* alpha*-*-* } } } } } */
  /* Excluding sparc since there a prior optimization already reduced the
     constant, i.e., nothing left for us.  */
+ /* Excluding alpha since memory comparisons are not narrowed there.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to SI" "combine" } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-6.c gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-6.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/cmp-mem-const-6.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/cmp-mem-const-6.c	Sun Aug 23 22:32:14 2026
***************
*** 1,6 ****
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* } } } } } */
  /* Excluding sparc since there a prior optimization already reduced the
     constant, i.e., nothing left for us.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to SI" "combine" } } */
  
--- 1,7 ----
! /* { dg-do compile { target { lp64 && { ! { sparc*-*-* hppa*-*-* alpha*-*-* } } } } } */
  /* Excluding sparc since there a prior optimization already reduced the
     constant, i.e., nothing left for us.  */
+ /* Excluding alpha since memory comparisons are not narrowed there.  */
  /* { dg-options "-O2 -fdump-rtl-combine-details" } */
  /* { dg-final { scan-rtl-dump "narrow comparison from mode .I to SI" "combine" } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/fold-bit-test-combine-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/fold-bit-test-combine-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/fold-bit-test-combine-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/fold-bit-test-combine-1.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,33 ----
+ /* Two single-bit tests of the same value combine into one masked compare.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int
+ t_and_set_set (unsigned x)		/* (x&8)!=0 & (x&16)!=0 -> (x&24)==24 */
+ {
+   return ((x & 8) != 0) & ((x & 16) != 0);
+ }
+ 
+ int
+ t_and_set_clr (unsigned x)		/* (x&8)!=0 & (x&16)==0 -> (x&24)==8 */
+ {
+   return ((x & 8) != 0) & ((x & 16) == 0);
+ }
+ 
+ int
+ t_or_clr_clr (unsigned x)		/* (x&8)==0 | (x&16)==0 -> (x&24)!=24 */
+ {
+   return ((x & 8) == 0) | ((x & 16) == 0);
+ }
+ 
+ int
+ t_or_set_clr (unsigned x)		/* (x&8)!=0 | (x&16)==0 -> (x&24)!=16 */
+ {
+   return ((x & 8) != 0) | ((x & 16) == 0);
+ }
+ 
+ /* Each becomes a single (x & 24) compare; the separate & 8 / & 16 masks and
+    the boolean combiner are gone.  */
+ /* { dg-final { scan-tree-dump-times " & 24;" 4 "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " & 8;" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " & 16;" "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/fold-mod-mult-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/fold-mod-mult-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/fold-mod-mult-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/fold-mod-mult-1.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,25 ----
+ /* (t * u) % u is zero whenever the product does not overflow: for signed
+    types the overflow is undefined so it always folds; for unsigned types it
+    folds when value ranges prove the multiply cannot wrap.  */
+ /* { dg-do compile } */
+ /* { dg-require-effective-target int32plus } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ int
+ f_signed (int a, int b)
+ {
+   return (a * b) % b;
+ }
+ 
+ unsigned
+ f_ranged (unsigned a, unsigned b)
+ {
+   a &= 0xffff;
+   b &= 0xffff;
+   if (b == 0)
+     return 7;
+   return (a * b) % b;		/* a*b <= 0xfffe0001, cannot wrap */
+ }
+ 
+ /* Both remainders fold away; no modulo survives.  */
+ /* { dg-final { scan-tree-dump-not " % " "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-1.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,15 ----
+ /* fwrite of a single byte whose result is unused writes the same byte as
+    fputc, so it should be folded.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-unused-result -fdump-tree-optimized" } */
+ 
+ #include <stdio.h>
+ 
+ void one (FILE *f, const char *p) { fwrite (p, 1, 1, f); }
+ size_t used (FILE *f, const char *p) { return fwrite (p, 1, 1, f); }
+ void two_items (FILE *f, const char *p) { fwrite (p, 1, 2, f); }
+ void two_bytes (FILE *f, const char *p) { fwrite (p, 2, 1, f); }
+ void unknown (FILE *f, const char *p, size_t n) { fwrite (p, 1, n, f); }
+ 
+ /* { dg-final { scan-tree-dump-times "fputc" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "fwrite" 4 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-2.c gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-2.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,32 ----
+ /* Check that folding fwrite of a single byte to fputc keeps the output the
+    same, including the bytes that are not folded, and that a side effect in the
+    stream argument is still evaluated exactly once.  */
+ /* { dg-do run } */
+ /* { dg-options "-O2 -Wno-unused-result" } */
+ 
+ #include <stdio.h>
+ 
+ extern void abort (void);
+ 
+ const char s[] = "abcd";
+ 
+ int
+ main (void)
+ {
+   FILE *streams[] = { stdout, NULL }, **p = streams;
+ 
+   fwrite (s, 1, 1, stdout);
+   fwrite (s + 1, 1, 1, stdout);
+   fwrite (s + 2, 1, 2, stdout);
+   fwrite (s, 2, 1, stdout);
+ 
+   /* The folded call must still advance P exactly once.  */
+   fwrite (s, 1, 1, *p++);
+   if (p != streams + 1 || *p != NULL)
+     abort ();
+ 
+   fflush (stdout);
+   return 0;
+ }
+ 
+ /* { dg-output "abcdaba" } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-3.c gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/fwrite-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/fwrite-3.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,30 ----
+ /* fwrite_unlocked of a single byte whose result is unused writes the same byte
+    as fputc_unlocked, so it is folded the same way as the locked form, and into
+    the unlocked entry point rather than the locked one.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -Wno-unused-result -fdump-tree-optimized" } */
+ 
+ #include <stdio.h>
+ 
+ /* glibc defines fwrite_unlocked as a macro that turns a small constant
+    transfer into a putc_unlocked loop, which would keep the call from ever
+    reaching the folder under test.  */
+ #undef fwrite_unlocked
+ 
+ /* Declared here rather than through _GNU_SOURCE so that the test does not
+    depend on the host header exposing the unlocked entry points.  */
+ extern int (fputc_unlocked) (int, FILE *);
+ extern size_t (fwrite_unlocked) (const void *, size_t, size_t, FILE *);
+ 
+ void one (FILE *f, const char *p) { fwrite_unlocked (p, 1, 1, f); }
+ size_t used (FILE *f, const char *p) { return fwrite_unlocked (p, 1, 1, f); }
+ void two_items (FILE *f, const char *p) { fwrite_unlocked (p, 1, 2, f); }
+ void two_bytes (FILE *f, const char *p) { fwrite_unlocked (p, 2, 1, f); }
+ void unknown (FILE *f, const char *p, size_t n) { fwrite_unlocked (p, 1, n, f); }
+ 
+ /* { dg-final { scan-tree-dump-times "fputc_unlocked" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "fwrite_unlocked" 4 "optimized" } } */
+ /* The unlocked form must not be folded into the locked fputc.  A call with no
+    result is dumped as "  fputc (...", which the leading space matches without
+    also matching fputc_unlocked.  */
+ /* { dg-final { scan-tree-dump-not " fputc \\(" "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/long-mul-128-Og.c gcc-17-20260823/gcc/testsuite/gcc.dg/long-mul-128-Og.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/long-mul-128-Og.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/long-mul-128-Og.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile { target int128 } } */
+ /* { dg-options "-Og -fexpensive-optimizations" } */
+ 
+ /* The -Og pipeline does not run pass_optimize_widening_mul, so the
+    long-multiply fold must not emit a 2N wide-multiply chain here:
+    nothing would lower it before expansion.  */
+ 
+ typedef __uint128_t u128;
+ 
+ u128
+ mulh (u128 x, u128 y)
+ {
+   u128 x_hi = x >> 64;
+   u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 y_hi = y >> 64;
+   u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   return cond + (add_cross_sum >> 64);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/lto/pr61526_0.c gcc-17-20260823/gcc/testsuite/gcc.dg/lto/pr61526_0.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/lto/pr61526_0.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/lto/pr61526_0.c	Sun Aug 23 22:32:14 2026
***************
*** 3,8 ****
--- 3,9 ----
  /* { dg-lto-do link } */
  /* { dg-lto-options { { -fPIC -flto -flto-partition=1to1 } } } */
  /* { dg-extra-ld-options { -shared } } */
+ /* { dg-extra-ld-options "-shared -Wl,-undefined,dynamic_lookup" { target *-*-darwin* } } */
  
  static void *master;
  void *foo () { return master; }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/pr108447.c gcc-17-20260823/gcc/testsuite/gcc.dg/pr108447.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/pr108447.c	Sun Aug 16 22:32:10 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/pr108447.c	Sun Aug 23 22:32:14 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run } */
  /* { dg-options "-O2" } */
+ /* { dg-add-options ieee } */
  
  __attribute__((noipa)) int
  foo (float x, float y)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/pr126775.c gcc-17-20260823/gcc/testsuite/gcc.dg/pr126775.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/pr126775.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/pr126775.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,8 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -ffinite-math-only" } */
+ 
+ _Complex float foo(_Complex float x)
+ {
+   _Complex float negzero = -0.0f + -0.0fi;
+   return negzero - x;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/pr126856.c gcc-17-20260823/gcc/testsuite/gcc.dg/pr126856.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/pr126856.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/pr126856.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do run } */
+ /* { dg-options "-O2" } */
+ __attribute__((noipa)) static int
+ mpfr_scale2_bad (int exp)
+ {
+     if (-1073 > exp || exp > 1025)
+       __builtin_unreachable();
+     if (exp < -1021)
+       __builtin_abort();
+     return exp;
+ }
+ int main ()
+ {
+     if (mpfr_scale2_bad(499) != 499)
+     __builtin_abort();
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/pr94589-6.c gcc-17-20260823/gcc/testsuite/gcc.dg/pr94589-6.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/pr94589-6.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/pr94589-6.c	Sun Aug 23 22:32:14 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* { dg-do run { target inf } } */
  /* { dg-options "-O2 -g" } */
+ /* { dg-add-options ieee } */
  
  #include "pr94589-5.c"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/sinhatanh-3.c gcc-17-20260823/gcc/testsuite/gcc.dg/sinhatanh-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/sinhatanh-3.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/sinhatanh-3.c	Sun Aug 23 22:32:14 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-Ofast -fmath-errno -fdump-tree-optimized" } */
  
  extern float sinhf (float);
  extern float coshf (float);
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-Ofast -fmath-errno -fdump-tree-optimized -fno-thread-jumps" } */
  
  extern float sinhf (float);
  extern float coshf (float);
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/long-mul-128.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/long-mul-128.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/long-mul-128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/long-mul-128.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,121 ----
+ /* { dg-do run { target int128 } } */
+ 
+ /* Runtime correctness for the full 128-bit pipeline: forwprop folds the
+    longhand to (u256) x * (u256) y >> 128 and widening_mul lowers it back
+    to a 128-bit longhand.  mulh_reference stays unfolded via volatiles.  */
+ 
+ typedef __uint128_t u128;
+ 
+ /* The recognized longhand high-part multiply, shared by the callers below.
+    static inline so each caller inlines a copy, exposing its own chain to
+    forwprop.  */
+ static inline u128
+ mulh_inline (u128 x, u128 y)
+ {
+   u128 x_hi = x >> 64;
+   u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 y_hi = y >> 64;
+   u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   return cond + (add_cross_sum >> 64);
+ }
+ 
+ /* Standalone folded instance (noipa keeps it distinct from the inline
+    copies), validated against the unfolded reference.  */
+ __attribute__((noipa)) u128
+ mulh_folded (u128 x, u128 y)
+ {
+   return mulh_inline (x, y);
+ }
+ 
+ __attribute__((noipa)) u128
+ mulh_reference (u128 x, u128 y)
+ {
+   volatile u128 x_hi = x >> 64;
+   volatile u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   volatile u128 y_hi = y >> 64;
+   volatile u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   return cond + (add_cross_sum >> 64);
+ }
+ 
+ /* Two mulh calls sharing an operand: inlining exposes both chains and
+    VN CSEs the shared (u256) cast.  Guard that lowering the first chain
+    does not free a cast the second still references.  */
+ __attribute__((noipa)) u128
+ mulh_shared_xor (u128 x, u128 y, u128 z)
+ {
+   return mulh_inline (x, y) ^ mulh_inline (x, z);
+ }
+ 
+ /* One chain's high half feeding the next, first high part also live.  After
+    recognition the second chain multiplies by the first product shifted down;
+    truncating that shift would leave the product live past its own lowering.  */
+ __attribute__((noipa)) u128
+ mulh_chain_high (u128 x, u128 y, u128 z, u128 *first)
+ {
+   u128 h1 = mulh_inline (x, y);
+   *first = h1;
+   return mulh_inline (h1, z);
+ }
+ 
+ /* Squaring: VN CSEs the two (u256) casts of x, so lowering sees the
+    same stmt on both operand-cast slots.  */
+ __attribute__((noipa)) u128
+ mulh_square (u128 x)
+ {
+   return mulh_inline (x, x);
+ }
+ 
+ int
+ main (void)
+ {
+   static const u128 vals[] = {
+     0,
+     1,
+     (u128)0xFFFFFFFFFFFFFFFF,			/* low half all-ones */
+     ((u128)1 << 64),				/* 2^64 */
+     ((u128)1 << 127),				/* high bit */
+     ~(u128)0,					/* all-ones */
+     ((u128)0xDEADBEEFCAFEBABE << 64) | 0x0123456789ABCDEF,
+     ((u128)0x8000000000000001 << 64) | 0xFFFFFFFFFFFFFFFE,
+   };
+   const unsigned n = sizeof (vals) / sizeof (vals[0]);
+ 
+   for (unsigned i = 0; i < n; i++)
+     for (unsigned j = 0; j < n; j++)
+       {
+ 	u128 x = vals[i], y = vals[j];
+ 	if (mulh_folded (x, y) != mulh_reference (x, y))
+ 	  __builtin_abort ();
+ 	for (unsigned k = 0; k < n; k++)
+ 	  {
+ 	    u128 z = vals[k];
+ 	    u128 want = mulh_reference (x, y) ^ mulh_reference (x, z);
+ 	    if (mulh_shared_xor (x, y, z) != want)
+ 	      __builtin_abort ();
+ 	    u128 first = 0;
+ 	    u128 h1 = mulh_reference (x, y);
+ 	    if (mulh_chain_high (x, y, z, &first) != mulh_reference (h1, z)
+ 		|| first != h1)
+ 	      __builtin_abort ();
+ 	  }
+ 	if (mulh_square (x) != mulh_reference (x, x))
+ 	  __builtin_abort ();
+       }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/long-mul-64-run.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/long-mul-64-run.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/long-mul-64-run.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/long-mul-64-run.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,180 ----
+ /* { dg-do run { target int128 } } */
+ 
+ /* Runtime behavior of the recognizer on the longhand 64x64 high-part
+    idiom.  Two groups: shapes that must fold, checked against a 128-bit
+    reference multiply, and near misses that must not fold (each violates
+    one recognizer guard: low mask value, carry shift tie, cross-half
+    orientation, operand consistency), checked against their literal
+    meaning computed behind volatiles.  Either way a misfold aborts.  */
+ 
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef unsigned __int128 uint128_t;
+ 
+ /* The genuine idiom.  */
+ __attribute__((noipa)) uint64_t
+ mulh_good (uint64_t x, uint64_t y)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t carry = (uint64_t) (hilo > low_sum) << 32;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ /* The idiom with an extra addend appended after the full chain: the
+    folded form must keep the addend on top of the wide multiply.  */
+ __attribute__((noipa)) uint64_t
+ mulh_acc (uint64_t x, uint64_t y, uint64_t acc)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   int carry_out = hilo > low_sum;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   return xh * yh + (low_sum >> 32) + carry + acc;
+ }
+ 
+ /* Same, with the extra addend interleaved into the middle of the
+    chain.  */
+ __attribute__((noipa)) uint64_t
+ mulh_acc_interleaved (uint64_t x, uint64_t y, uint64_t acc)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   int carry_out = hilo > low_sum;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   return ((xh * yh + acc) + (low_sum >> 32)) + carry;
+ }
+ 
+ /* Wrong low mask (0xFFFF, not the half mask).  */
+ __attribute__((noipa)) uint64_t
+ mulh_wrong_mask (uint64_t x, uint64_t y)
+ {
+   uint64_t xl = x & 0xFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t carry = (uint64_t) (hilo > low_sum) << 32;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ /* Wrong carry position (<< 16, not the half width).  */
+ __attribute__((noipa)) uint64_t
+ mulh_wrong_carry_shift (uint64_t x, uint64_t y)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t carry = (uint64_t) (hilo > low_sum) << 16;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ /* Doubled cross term (hilo + hilo, same orientation).  */
+ __attribute__((noipa)) uint64_t
+ mulh_doubled_cross (uint64_t x, uint64_t y)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t cross = hilo + hilo;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t carry = (uint64_t) (hilo > low_sum) << 32;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ /* Third operand sneaks into one cross term.  */
+ __attribute__((noipa)) uint64_t
+ mulh_mixed_ops (uint64_t x, uint64_t y, uint64_t z)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t zh = z >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * zh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t carry = (uint64_t) (hilo > low_sum) << 32;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ /* What each (mis)shaped source literally means, computed behind
+    volatiles so no folding applies.  */
+ __attribute__((noipa)) uint64_t
+ ref_eval (uint64_t x, uint64_t y, uint64_t z, int variant)
+ {
+   volatile uint64_t vx = x, vy = y, vz = z;
+   uint64_t xh = vx >> 32, yl0 = vy & 0xFFFFFFFF, yh = vy >> 32, zh = vz >> 32;
+   uint64_t xl, yl;
+   switch (variant)
+     {
+     case 1: xl = vx & 0xFFFF; yl = vy & 0xFFFF; break;
+     default: xl = vx & 0xFFFFFFFF; yl = yl0; break;
+     }
+   uint64_t hilo = xh * yl;
+   uint64_t lohi;
+   switch (variant)
+     {
+     case 3: lohi = hilo; break;
+     case 4: lohi = xl * zh; break;
+     default: lohi = xl * yh; break;
+     }
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   uint64_t shift = (variant == 2) ? 16 : 32;
+   uint64_t carry = (uint64_t) (hilo > low_sum) << shift;
+   return xh * yh + (low_sum >> 32) + carry;
+ }
+ 
+ int
+ main (void)
+ {
+   static const uint64_t vals[] = {
+     0, 1, 0xFFFFFFFFULL, 0x100000000ULL, 0xFFFFFFFFFFFFFFFFULL,
+     0xDEADBEEFCAFEBABEULL, 0x8000000080000000ULL, 0x00000001FFFFFFFFULL
+   };
+   const int n = sizeof (vals) / sizeof (vals[0]);
+   for (int i = 0; i < n; i++)
+     for (int j = 0; j < n; j++)
+       {
+ 	uint64_t x = vals[i], y = vals[j], z = vals[(i + j) % n];
+ 	uint64_t hi = (uint64_t) (((uint128_t) x * y) >> 64);
+ 	if (mulh_good (x, y) != hi)
+ 	  __builtin_abort ();
+ 	if (mulh_acc (x, y, z) != hi + z)
+ 	  __builtin_abort ();
+ 	if (mulh_acc_interleaved (x, y, z) != hi + z)
+ 	  __builtin_abort ();
+ 	if (mulh_wrong_mask (x, y) != ref_eval (x, y, z, 1))
+ 	  __builtin_abort ();
+ 	if (mulh_wrong_carry_shift (x, y) != ref_eval (x, y, z, 2))
+ 	  __builtin_abort ();
+ 	if (mulh_doubled_cross (x, y) != ref_eval (x, y, z, 3))
+ 	  __builtin_abort ();
+ 	if (mulh_mixed_ops (x, y, z) != ref_eval (x, y, z, 4))
+ 	  __builtin_abort ();
+       }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr125545.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr125545.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr125545.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr125545.c	Sun Aug 23 22:32:14 2026
***************
*** 1,4 ****
! /* { dg-do compile } */
  
  int b(int c)
  {
--- 1,4 ----
! /* { dg-do compile { target asm_goto_with_outputs } } */
  
  int b(int c)
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126464.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126464.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126464.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126464.c	Sun Aug 23 22:32:14 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* PR tree-optimization/126464 */
  /* { dg-do run } */
+ /* { dg-add-options ieee } */
  
  #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
      && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126576.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126576.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126576.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126576.c	Sun Aug 23 22:32:14 2026
***************
*** 1,5 ****
--- 1,6 ----
  /* PR tree-optimization/126576 */
  /* { dg-do run } */
+ /* { dg-add-options ieee } */
  
  #if __DBL_MANT_DIG__ == 53 && __DBL_MAX_10_EXP__ == 308 \
      && __DBL_HAS_INFINITY__ && __FLT_EVAL_METHOD__ == 0
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126686.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126686.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126686.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126686.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,16 ----
+ /* PR rtl-optimization/126686 */
+ /* { dg-do compile } */
+ /* { dg-additional-options "-favoid-store-forwarding" } */
+ 
+ int tmp;
+ short d_e;
+ 
+ int
+ foo ()
+ {
+   long f = 0;
+   __builtin_memset ((char *) &f + sizeof f - 2, d_e, 2);
+   tmp = f;
+ 
+   return f;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126925.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126925.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126925.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126925.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile } */
+ 
+ int a;
+ long b;
+ int c(long d) {
+   for (;;)
+     if (d)
+       return b;
+ }
+ void e(int d) {
+   unsigned long f = 6;
+   int g;
+   while (c(f)) {
+     g = 0;
+     for (; g < 2; g++) {
+       a = 0;
+       short h = d;
+       f = d + f - (h + f + (a + 4 + f));
+     }
+   }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126934-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126934-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/torture/pr126934-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/torture/pr126934-1.c	Sun Aug 23 22:32:14 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do run } */
+ /* PR tree-optimization/126934 */
+ 
+ __attribute__((noinline))
+ int ff(int a, signed char c)
+ {
+   int t = c;
+   int t1 = c+60;
+   if (a)
+     return t/t1;
+   return 1000;
+ }
+ 
+ int main ()
+ {
+   if (ff(1,-127) != 1)
+     __builtin_abort ();
+   if (ff(1,1) != 0)
+     __builtin_abort ();
+   if (ff(1,4) != 0)
+     __builtin_abort ();
+ }
+ 
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-bitxor.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-bitxor.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-bitxor.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-bitxor.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ typedef unsigned int u32;
+ 
+ _Bool
+ xor_ne_eq (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) ^ (t2 == 0);
+ }
+ 
+ _Bool
+ xor_eq_eq (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) ^ (t2 == 0);
+ }
+ 
+ _Bool
+ xor_eq_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) ^ (t2 != 0);
+ }
+ 
+ _Bool
+ xor_ne_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) ^ (t2 != 0);
+ }
+ 
+ /* Verify all functions canonicalize to xor-mask tests.  */
+ /* { dg-final { scan-tree-dump-times "a_\[0-9\]+\\(D\\) \\^ b_\[0-9\]+\\(D\\)" 4 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-evenness.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-evenness.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-evenness.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-evenness.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ /* Verify the GIMPLE-level fix for PR112533. */
+ 
+ typedef unsigned int u32;
+ 
+ static _Bool
+ is_even (u32 a)
+ {
+   return a % 2 == 0;
+ }
+ 
+ _Bool
+ same_evenness (u32 a, u32 b)
+ {
+   return is_even (a) == is_even (b);
+ }
+ 
+ _Bool
+ diff_evenness (u32 a, u32 b)
+ {
+   return is_even (a) != is_even (b);
+ }
+ 
+ _Bool
+ same_evenness_cmp_zero (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) == (t2 == 0);
+ }
+ 
+ _Bool
+ diff_evenness_cmp_zero (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) != (t2 == 0);
+ }
+ 
+ /* Verify all functions canonicalize to xor forms.  */
+ /* { dg-final { scan-tree-dump-times "\\^" 4 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-pow2.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-pow2.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-pow2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-eq-pow2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,89 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ typedef unsigned int u32;
+ 
+ _Bool
+ eq_eq_outer_eq_mask2 (u32 a, u32 b)
+ {
+   u32 t1 = a & 2;
+   u32 t2 = b & 2;
+   return (t1 == 0) == (t2 == 0);
+ }
+ 
+ _Bool
+ eq_eq_outer_eq_mask4 (u32 a, u32 b)
+ {
+   u32 t1 = a & 4;
+   u32 t2 = b & 4;
+   return (t1 == 0) == (t2 == 0);
+ }
+ 
+ _Bool
+ eq_eq_outer_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) != (t2 == 0);
+ }
+ 
+ _Bool
+ ne_eq_outer_eq (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) == (t2 == 0);
+ }
+ 
+ _Bool
+ ne_eq_outer_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) != (t2 == 0);
+ }
+ 
+ _Bool
+ eq_ne_outer_eq (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) == (t2 != 0);
+ }
+ 
+ _Bool
+ eq_ne_outer_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 == 0) != (t2 != 0);
+ }
+ 
+ _Bool
+ ne_ne_outer_eq (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) == (t2 != 0);
+ }
+ 
+ _Bool
+ ne_ne_outer_ne (u32 a, u32 b)
+ {
+   u32 t1 = a & 1;
+   u32 t2 = b & 1;
+   return (t1 != 0) != (t2 != 0);
+ }
+ 
+ /* Non-power-of-2: should not be simplified.  */
+ _Bool
+ eq_eq_outer_eq_nonpow2 (u32 a, u32 b)
+ {
+   u32 t1 = a & 3;
+   u32 t2 = b & 3;
+   return (t1 == 0) == (t2 == 0);
+ }
+ 
+ /* Verify power-of-2 masks are simplified, non-power-of-2 masks are not.  */
+ /* { dg-final { scan-tree-dump-times "a_\[0-9\]+\\(D\\) \\^ b_\[0-9\]+\\(D\\)" 9 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times "& 3" 2 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-xor-zero-one-valued.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-xor-zero-one-valued.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/bool-xor-zero-one-valued.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/bool-xor-zero-one-valued.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-optimized" } */
+ 
+ _Bool
+ f1 (unsigned a, unsigned b)
+ {
+   if (a != 0 && a != 1) __builtin_unreachable();
+   if (b != 0 && b != 1) __builtin_unreachable();
+   return (a == 0) ^ (b != 0);
+ }
+ 
+ _Bool
+ f2 (unsigned a, unsigned b)
+ {
+   if (a != 0 && a != 1) __builtin_unreachable();
+   if (b != 0 && b != 1) __builtin_unreachable();
+   return (a != 0) ^ (b == 0);
+ }
+ 
+ _Bool
+ f3 (unsigned a, unsigned b)
+ {
+   if (a != 0 && a != 1) __builtin_unreachable();
+   if (b != 0 && b != 1) __builtin_unreachable();
+   return (a == 0) ^ (b == 0);
+ }
+ 
+ _Bool
+ f4 (unsigned a, unsigned b)
+ {
+   if (a != 0 && a != 1) __builtin_unreachable();
+   if (b != 0 && b != 1) __builtin_unreachable();
+   return (a != 0) ^ (b != 0);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "a_\[0-9\]+\\(D\\) \\^ b_\[0-9\]+\\(D\\)" 4 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ceil-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ceil-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ceil-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ceil-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,17 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-optimized" } */
+ /* PR tree-optimization/126827 */
+ 
+ double f(double a)
+ {
+     if (a > 0)
+     {
+       a = __builtin_ceil(a);
+       if (a < 0)
+         __builtin_trap();
+     }
+     return a;
+ }
+ 
+ /* The call to __builtin_trap should have been removed.  */
+ /* { dg-final { scan-tree-dump-not "trap " "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/divmul-mod-1.c	Sun Aug 23 22:32:15 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-optimized" } */
  
  typedef int v4si __attribute__ ((vector_size (16)));
  typedef unsigned int v4ui __attribute__ ((vector_size (16)));
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-optimized -Wno-psabi" } */
  
  typedef int v4si __attribute__ ((vector_size (16)));
  typedef unsigned int v4ui __attribute__ ((vector_size (16)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary-64.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary-64.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary-64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary-64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,417 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target int128 } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef unsigned __int128 uint128_t;
+ 
+ /* Reference: high part of 64x64 -> 128 multiply.  */
+ __attribute__((noipa))
+ uint64_t mulh_ref (uint64_t x, uint64_t y)
+ {
+   return (uint64_t)(((uint128_t)x * y) >> 64);
+ }
+ 
+ /* Carry pattern for high part.  */
+ __attribute__((noipa))
+ uint64_t mulh_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t mulhilo = x_hi * y_lo;
+   uint64_t mullohi = x_lo * y_hi;
+   uint64_t cross_sum = mulhilo + mullohi;
+   uint64_t mullolo = x_lo * y_lo;
+   uint64_t shrlolo = mullolo >> 32;
+   uint64_t add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   uint64_t cond = ((uint64_t) carry << 32) + x_hi * y_hi;
+   uint64_t add = cond + (add_cross_sum >> 32);
+ 
+   return add;
+ }
+ 
+ /* Ladder pattern for high part.  */
+ __attribute__((noipa))
+ uint64_t mulh_ladder (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t t0 = y_lo * x_lo;
+   uint64_t t1 = y_lo * x_hi;
+   uint64_t t2 = y_hi * x_lo;
+   uint64_t t3 = y_hi * x_hi;
+   uint64_t t0_hi = t0 >> 32;
+   uint64_t u0 = t0_hi + t1;
+   uint64_t u0_lo = u0 & 0xFFFFFFFFUL;
+   uint64_t u0_hi = u0 >> 32;
+   uint64_t u1 = u0_lo + t2;
+   uint64_t u1_hi = u1 >> 32;
+   uint64_t u2 = u0_hi + t3;
+   uint64_t hw = u2 + u1_hi;
+ 
+   return hw;
+ }
+ 
+ /* Ladder-long full multiply (both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul (uint64_t x, uint64_t y, uint64_t *p)
+ {
+   uint64_t xl = x & 0xFFFFFFFFUL;
+   uint64_t xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFFUL;
+   uint64_t yh = y >> 32;
+   uint64_t mulll = xl * yl;
+   uint64_t mullh = xl * yh;
+   uint64_t mulhl = xh * yl;
+   uint64_t mulhh = xh * yh;
+   uint64_t shr8 = mulll >> 32;
+   uint64_t conv10 = mullh & 0xFFFFFFFFUL;
+   uint64_t add = shr8 + conv10;
+   uint64_t conv12 = mulhl & 0xFFFFFFFFUL;
+   uint64_t add13 = add + conv12;
+   uint64_t shr14 = add13 >> 32;
+   uint64_t shr15 = mullh >> 32;
+   uint64_t add16 = mulhh + shr15;
+   uint64_t shr17 = mulhl >> 32;
+   uint64_t add18 = add16 + shr17;
+   uint64_t add19 = add18 + shr14;
+   p[1] = add19;
+   uint64_t add_13_shl = add13 << 32;
+   uint64_t and17 = mulll & 0xFFFFFFFFUL;
+   uint64_t or_val = add_13_shl | and17;
+   p[0] = or_val;
+ }
+ 
+ /* Two-carry pattern for high part.  */
+ __attribute__((noipa))
+ uint64_t mulh_two_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+ 
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+   uint64_t low_carry = (uint64_t)(low_result < cross_shifted);
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry + low_carry;
+ 
+   return high;
+ }
+ 
+ /* Two-carry full multiply (both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul_two_carry (uint64_t x, uint64_t y, uint64_t *p)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+ 
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+   uint64_t low_carry = (uint64_t)(low_result < cross_shifted);
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry + low_carry;
+ 
+   p[0] = low_result;
+   p[1] = high;
+ }
+ 
+ /* Carry-long pattern for high part.  */
+ __attribute__((noipa))
+ uint64_t mulh_carry_long (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFFUL;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t interm = cross_sum_hi + y_hi_x_hi;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* Carry-long full multiply (both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul_carry_long (uint64_t x, uint64_t y, uint64_t *p)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFFUL;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t upper_mid = y_hi_x_hi + carry;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t upper_mid_with_cross = upper_mid + cross_sum_hi;
+   p[1] = upper_mid_with_cross + low_accum_hi;
+   uint64_t low_accum_shifted = low_accum << 32;
+   uint64_t y_lo_x_lo_lo = y_lo_x_lo & 0xFFFFFFFFUL;
+   p[0] = low_accum_shifted | y_lo_x_lo_lo;
+ }
+ 
+ /* Ladder-long pattern for high part.  */
+ __attribute__((noipa))
+ uint64_t mulh_ladder_long (uint64_t x, uint64_t y)
+ {
+   uint64_t xl = x & 0xFFFFFFFFUL;
+   uint64_t xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFFUL;
+   uint64_t yh = y >> 32;
+   uint64_t mulll = xl * yl;
+   uint64_t mullh = xl * yh;
+   uint64_t mulhl = xh * yl;
+   uint64_t mulhh = xh * yh;
+   uint64_t shr8 = mulll >> 32;
+   uint64_t conv10 = mullh & 0xFFFFFFFFUL;
+   uint64_t add = shr8 + conv10;
+   uint64_t conv12 = mulhl & 0xFFFFFFFFUL;
+   uint64_t add13 = add + conv12;
+   uint64_t shr14 = add13 >> 32;
+   uint64_t shr15 = mullh >> 32;
+   uint64_t add16 = mulhh + shr15;
+   uint64_t shr17 = mulhl >> 32;
+   uint64_t add18 = add16 + shr17;
+   return add18 + shr14;
+ }
+ 
+ /* PHI-form, cond_carry_add (strict carry-on-true).  */
+ __attribute__((noipa))
+ uint64_t mulh_carry_phi (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t mulhilo = x_hi * y_lo;
+   uint64_t mullohi = x_lo * y_hi;
+   uint64_t cross_sum = mulhilo + mullohi;
+   uint64_t mullolo = x_lo * y_lo;
+   uint64_t add_cross_sum = cross_sum + (mullolo >> 32);
+   uint64_t add = x_hi * y_hi + (add_cross_sum >> 32);
+   if (add_cross_sum < mulhilo)
+     add += (uint64_t)1 << 32;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add_neg (negated branch, carry-on-false).  */
+ __attribute__((noipa))
+ uint64_t mulh_carry_phi_neg (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t mulhilo = x_hi * y_lo;
+   uint64_t mullohi = x_lo * y_hi;
+   uint64_t cross_sum = mulhilo + mullohi;
+   uint64_t mullolo = x_lo * y_lo;
+   uint64_t add_cross_sum = cross_sum + (mullolo >> 32);
+   uint64_t add = x_hi * y_hi + (add_cross_sum >> 32);
+   if (add_cross_sum >= mulhilo)
+     ;
+   else
+     add += (uint64_t)1 << 32;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add written as gt (operand-swapped from lt).  */
+ __attribute__((noipa))
+ uint64_t mulh_carry_phi_gt (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t mulhilo = x_hi * y_lo;
+   uint64_t mullohi = x_lo * y_hi;
+   uint64_t cross_sum = mulhilo + mullohi;
+   uint64_t mullolo = x_lo * y_lo;
+   uint64_t add_cross_sum = cross_sum + (mullolo >> 32);
+   uint64_t add = x_hi * y_hi + (add_cross_sum >> 32);
+   if (mulhilo > add_cross_sum)
+     add += (uint64_t)1 << 32;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add_neg written as le (operand-swapped from ge).  */
+ __attribute__((noipa))
+ uint64_t mulh_carry_phi_le (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t mulhilo = x_hi * y_lo;
+   uint64_t mullohi = x_lo * y_hi;
+   uint64_t cross_sum = mulhilo + mullohi;
+   uint64_t mullolo = x_lo * y_lo;
+   uint64_t add_cross_sum = cross_sum + (mullolo >> 32);
+   uint64_t add = x_hi * y_hi + (add_cross_sum >> 32);
+   if (mulhilo <= add_cross_sum)
+     ;
+   else
+     add += (uint64_t)1 << 32;
+   return add;
+ }
+ 
+ /* Low part via PLUS: lolo + (cross_sum << 32) with no comparison.  */
+ __attribute__((noipa))
+ uint64_t mul_low_plus (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_shifted = cross_sum << 32;
+   return lolo + cross_shifted;
+ }
+ 
+ /* PHI-form, two-carry shape with the low carry as the PHI
+    (LMK_CARRY_LOW path in match_long_mul_phi).  */
+ __attribute__((noipa))
+ uint64_t mulh_two_carry_low_phi (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry;
+   if (low_result < cross_shifted)
+     high += 1;
+ 
+   return high;
+ }
+ 
+ int main ()
+ {
+   /* Boundary inputs: zero, one, half-word mask, half-word+1, signed max,
+      unsigned max.  */
+   uint64_t vals[] = {
+     0, 1, 0xFFFFFFFFUL, 0x100000000ULL,
+     0x7FFFFFFFFFFFFFFFULL, 0xFFFFFFFFFFFFFFFFULL
+   };
+   int n = sizeof (vals) / sizeof (vals[0]);
+ 
+   for (int i = 0; i < n; i++)
+     for (int j = 0; j < n; j++)
+       {
+ 	uint64_t x = vals[i], y = vals[j];
+ 	uint64_t expected_hi = mulh_ref (x, y);
+ 	uint64_t expected_lo = x * y;
+ 
+ 	if (mulh_carry (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_ladder (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_two_carry (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	uint64_t p[2];
+ 	full_mul (x, y, p);
+ 	if (p[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (p[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	uint64_t q[2];
+ 	full_mul_two_carry (x, y, q);
+ 	if (q[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (q[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_long (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_ladder_long (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	uint64_t r[2];
+ 	full_mul_carry_long (x, y, r);
+ 	if (r[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (r[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_neg (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_gt (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_le (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_two_carry_low_phi (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mul_low_plus (x, y) != expected_lo)
+ 	  __builtin_abort ();
+       }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-boundary.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,394 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* Reference: high part of 32x32 -> 64 multiply.  */
+ __attribute__((noipa))
+ uint32_t mulh_ref (uint32_t x, uint32_t y)
+ {
+   return (uint32_t)(((uint64_t)x * y) >> 32);
+ }
+ 
+ /* Carry pattern for high part.  */
+ __attribute__((noipa))
+ uint32_t mulh_carry (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t shrlolo = mullolo >> 16;
+   uint32_t add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   uint32_t cond = ((uint32_t) carry << 16) + x_hi * y_hi;
+   uint32_t add = cond + (add_cross_sum >> 16);
+ 
+   return add;
+ }
+ 
+ /* Ladder pattern for high part.  */
+ __attribute__((noipa))
+ uint32_t mulh_ladder (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = y_hi * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_lo = u0 & 0xFFFF;
+   uint32_t u0_hi = u0 >> 16;
+   uint32_t u1 = u0_lo + t2;
+   uint32_t u1_hi = u1 >> 16;
+   uint32_t u2 = u0_hi + t3;
+   uint32_t hw = u2 + u1_hi;
+ 
+   return hw;
+ }
+ 
+ /* Ladder-long pattern for full multiplication (both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul (uint32_t x, uint32_t y, uint32_t *p)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = xl * yl;
+   uint32_t mullh = xl * yh;
+   uint32_t mulhl = xh * yl;
+   uint32_t mulhh = xh * yh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mullh & 0xFFFF;
+   uint32_t add = shr8 + conv10;
+   uint32_t conv12 = mulhl & 0xFFFF;
+   uint32_t add13 = add + conv12;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mullh >> 16;
+   uint32_t add16 = mulhh + shr15;
+   uint32_t shr17 = mulhl >> 16;
+   uint32_t add18 = add16 + shr17;
+   uint32_t add19 = add18 + shr14;
+   p[1] = add19;
+   uint32_t add_13_shl = add13 << 16;
+   uint32_t and17 = mulll & 0xFFFF;
+   uint32_t or_val = add_13_shl | and17;
+   p[0] = or_val;
+ }
+ 
+ /* Two-carry pattern for high part (32-bit).  */
+ __attribute__((noipa))
+ uint32_t mulh_two_carry (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+ 
+   uint32_t lolo = x_lo * y_lo;
+   uint32_t hilo = x_hi * y_lo;
+   uint32_t lohi = x_lo * y_hi;
+   uint32_t hihi = x_hi * y_hi;
+ 
+   uint32_t cross_sum = hilo + lohi;
+   uint32_t cross_carry = (uint32_t)(cross_sum < hilo) << 16;
+ 
+   uint32_t cross_shifted = cross_sum << 16;
+   uint32_t low_result = lolo + cross_shifted;
+   uint32_t low_carry = (uint32_t)(low_result < cross_shifted);
+ 
+   uint32_t high = hihi + (cross_sum >> 16) + cross_carry + low_carry;
+ 
+   return high;
+ }
+ 
+ /* Two-carry full multiply (32-bit, both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul_two_carry (uint32_t x, uint32_t y, uint32_t *p)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+ 
+   uint32_t lolo = x_lo * y_lo;
+   uint32_t hilo = x_hi * y_lo;
+   uint32_t lohi = x_lo * y_hi;
+   uint32_t hihi = x_hi * y_hi;
+ 
+   uint32_t cross_sum = hilo + lohi;
+   uint32_t cross_carry = (uint32_t)(cross_sum < hilo) << 16;
+ 
+   uint32_t cross_shifted = cross_sum << 16;
+   uint32_t low_result = lolo + cross_shifted;
+   uint32_t low_carry = (uint32_t)(low_result < cross_shifted);
+ 
+   uint32_t high = hihi + (cross_sum >> 16) + cross_carry + low_carry;
+ 
+   p[0] = low_result;
+   p[1] = high;
+ }
+ 
+ /* Carry-long pattern for high part.  */
+ __attribute__((noipa))
+ uint32_t mulh_carry_long (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo_x_hi = y_lo * x_hi;
+   uint32_t y_hi_x_hi = y_hi * x_hi;
+   uint32_t y_hi_x_lo = y_hi * x_lo;
+   uint32_t y_lo_x_lo = y_lo * x_lo;
+   uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint32_t carry = (uint32_t) carry_out << 16;
+   uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+   uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+   uint32_t cross_sum_hi = cross_sum >> 16;
+   uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint32_t interm = cross_sum_hi + y_hi_x_hi;
+   uint32_t low_accum_hi = low_accum >> 16;
+   uint32_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* Carry-long full multiply (both high and low parts).  */
+ __attribute__((noipa))
+ void full_mul_carry_long (uint32_t x, uint32_t y, uint32_t *p)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo_x_hi = y_lo * x_hi;
+   uint32_t y_hi_x_hi = y_hi * x_hi;
+   uint32_t y_hi_x_lo = y_hi * x_lo;
+   uint32_t y_lo_x_lo = y_lo * x_lo;
+   uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint32_t carry = (uint32_t) carry_out << 16;
+   uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+   uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+   uint32_t cross_sum_hi = cross_sum >> 16;
+   uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint32_t upper_mid = y_hi_x_hi + carry;
+   uint32_t low_accum_hi = low_accum >> 16;
+   uint32_t upper_mid_with_cross = upper_mid + cross_sum_hi;
+   p[1] = upper_mid_with_cross + low_accum_hi;
+   uint32_t low_accum_shifted = low_accum << 16;
+   uint32_t y_lo_x_lo_lo = y_lo_x_lo & 0xFFFF;
+   p[0] = low_accum_shifted | y_lo_x_lo_lo;
+ }
+ 
+ /* Ladder-long pattern for high part.  */
+ __attribute__((noipa))
+ uint32_t mulh_ladder_long (uint32_t x, uint32_t y)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = xl * yl;
+   uint32_t mullh = xl * yh;
+   uint32_t mulhl = xh * yl;
+   uint32_t mulhh = xh * yh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mullh & 0xFFFF;
+   uint32_t add = shr8 + conv10;
+   uint32_t conv12 = mulhl & 0xFFFF;
+   uint32_t add13 = add + conv12;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mullh >> 16;
+   uint32_t add16 = mulhh + shr15;
+   uint32_t shr17 = mulhl >> 16;
+   uint32_t add18 = add16 + shr17;
+   return add18 + shr14;
+ }
+ 
+ /* PHI-form, cond_carry_add (strict carry-on-true).  */
+ __attribute__((noipa))
+ uint32_t mulh_carry_phi (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum < mulhilo)
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add_neg (negated branch, carry-on-false).  */
+ __attribute__((noipa))
+ uint32_t mulh_carry_phi_neg (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum >= mulhilo)
+     ;
+   else
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add written as gt (operand-swapped from lt).  */
+ __attribute__((noipa))
+ uint32_t mulh_carry_phi_gt (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (mulhilo > add_cross_sum)
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* PHI-form, cond_carry_add_neg written as le (operand-swapped from ge).  */
+ __attribute__((noipa))
+ uint32_t mulh_carry_phi_le (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (mulhilo <= add_cross_sum)
+     ;
+   else
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* PHI-form, two-carry shape with the low carry as the PHI
+    (LMK_CARRY_LOW path in match_long_mul_phi).  */
+ __attribute__((noipa))
+ uint32_t mulh_two_carry_low_phi (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+ 
+   uint32_t lolo = x_lo * y_lo;
+   uint32_t hilo = x_hi * y_lo;
+   uint32_t lohi = x_lo * y_hi;
+   uint32_t hihi = x_hi * y_hi;
+ 
+   uint32_t cross_sum = hilo + lohi;
+   uint32_t cross_carry = (uint32_t)(cross_sum < hilo) << 16;
+   uint32_t cross_shifted = cross_sum << 16;
+   uint32_t low_result = lolo + cross_shifted;
+ 
+   uint32_t high = hihi + (cross_sum >> 16) + cross_carry;
+   if (low_result < cross_shifted)
+     high += 1;
+ 
+   return high;
+ }
+ 
+ int main ()
+ {
+   /* Boundary inputs: zero, one, half-word mask, half-word+1, signed max,
+      unsigned max.  */
+   uint32_t vals[] = { 0, 1, 0xFFFF, 0x10000, 0x7FFFFFFFU, 0xFFFFFFFFU };
+   int n = sizeof (vals) / sizeof (vals[0]);
+ 
+   for (int i = 0; i < n; i++)
+     for (int j = 0; j < n; j++)
+       {
+ 	uint32_t x = vals[i], y = vals[j];
+ 	uint32_t expected_hi = mulh_ref (x, y);
+ 	uint32_t expected_lo = x * y;
+ 
+ 	if (mulh_carry (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_ladder (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_two_carry (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	uint32_t p[2];
+ 	full_mul (x, y, p);
+ 	if (p[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (p[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	uint32_t q[2];
+ 	full_mul_two_carry (x, y, q);
+ 	if (q[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (q[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_long (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_ladder_long (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	uint32_t r[2];
+ 	full_mul_carry_long (x, y, r);
+ 	if (r[1] != expected_hi)
+ 	  __builtin_abort ();
+ 	if (r[0] != expected_lo)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_neg (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_gt (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_carry_phi_le (x, y) != expected_hi)
+ 	  __builtin_abort ();
+ 
+ 	if (mulh_two_carry_low_phi (x, y) != expected_hi)
+ 	  __builtin_abort ();
+       }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-carry.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-carry.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-carry.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-carry.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,385 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-forwprop-details -fdump-tree-widening_mul-details" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef struct { uint32_t v[2]; } v2i32;
+ 
+ /* High part follows the long form
+    xh*yh + carry + (cross_sum >> N) + (low_accum >> N).  */
+ 
+ uint64_t mulh_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = cross_sum < y_lo_x_hi;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t interm = cross_sum_hi + y_hi_x_hi;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t interm_plus_carry = interm + carry;
+   uint64_t hw64 = interm_plus_carry + low_accum_hi;
+ 
+   return hw64;
+ }
+ 
+ uint64_t mulh_carry_comm (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = x_hi * y_lo;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = x_lo * y_hi;
+   uint64_t y_lo_x_lo = x_lo * y_lo;
+   uint64_t cross_sum = y_lo_x_hi + y_hi_x_lo;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = y_lo_x_lo_hi + cross_sum_lo;
+   uint64_t inter = y_hi_x_hi + cross_sum_hi;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t interm_plus_carry = carry + inter;
+   uint64_t hw64 = low_accum_hi + interm_plus_carry;
+ 
+   return hw64;
+ }
+ 
+ uint32_t mulh_carry_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo_x_hi = y_lo * x_hi;
+   uint32_t y_hi_x_hi = y_hi * x_hi;
+   uint32_t y_hi_x_lo = y_hi * x_lo;
+   uint32_t y_lo_x_lo = y_lo * x_lo;
+   uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint32_t carry = (uint32_t) carry_out << 16;
+   uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+   uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+   uint32_t cross_sum_hi = cross_sum >> 16;
+   uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint32_t interm = cross_sum_hi + y_hi_x_hi;
+   uint32_t low_accum_hi = low_accum >> 16;
+   uint32_t interm_plus_carry = interm + carry;
+   uint32_t hw64 = interm_plus_carry + low_accum_hi;
+ 
+   return hw64;
+ }
+ 
+ /* The 128-bit variant lowers to longhand in pass_optimize_widening_mul;
+    no target provides a 256-bit multiply.  */
+ #ifdef __SIZEOF_INT128__
+ __uint128_t mulh_carry_128 (__uint128_t x, __uint128_t y)
+ {
+   __uint128_t x_lo = x & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t x_hi = x >> 64;
+   __uint128_t y_lo = y & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t y_hi = y >> 64;
+   __uint128_t y_lo_x_hi = y_lo * x_hi;
+   __uint128_t y_hi_x_hi = y_hi * x_hi;
+   __uint128_t y_hi_x_lo = y_hi * x_lo;
+   __uint128_t y_lo_x_lo = y_lo * x_lo;
+   __uint128_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = cross_sum < y_lo_x_hi;
+   __uint128_t carry = (__uint128_t) carry_out << 64;
+   __uint128_t y_lo_x_lo_hi = y_lo_x_lo >> 64;
+   __uint128_t cross_sum_lo = cross_sum & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t cross_sum_hi = cross_sum >> 64;
+   __uint128_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   __uint128_t interm = cross_sum_hi + y_hi_x_hi;
+   __uint128_t low_accum_hi = low_accum >> 64;
+   __uint128_t interm_plus_carry = interm + carry;
+   __uint128_t hw64 = interm_plus_carry + low_accum_hi;
+ 
+   return hw64;
+ }
+ #endif
+ 
+ void full_mul_carry (uint64_t x, uint64_t y, uint64_t* p) {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t upper_mid = y_hi_x_hi + carry;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t upper_mid_with_cross = upper_mid + cross_sum_hi;
+   uint64_t hw64 = upper_mid_with_cross + low_accum_hi;
+   p[1] = hw64;
+   uint64_t low_accum_shifted = low_accum << 32;
+   uint64_t y_lo_x_lo_lo = y_lo_x_lo & 0xFFFFFFFF;
+   uint64_t lw64 = low_accum_shifted | y_lo_x_lo_lo;
+   p[0] = lw64;
+ }
+ 
+ /* This will be optimized during the second forwprop run.
+    Disable SLP so the expected fold count is target-independent.  */
+ __attribute__((optimize("no-tree-slp-vectorize")))
+ v2i32 mulh_carry_v2i32 (v2i32 x, v2i32 y)
+ {
+   v2i32 result;
+   for (int i = 0; i < 2; i++)
+     {
+       uint32_t x_lo = x.v[i] & 0xFFFF;
+       uint32_t y_lo = y.v[i] & 0xFFFF;
+       uint32_t x_hi = x.v[i] >> 16;
+       uint32_t y_hi = y.v[i] >> 16;
+ 
+       uint32_t y_lo_x_hi = y_lo * x_hi;
+       uint32_t y_hi_x_hi = y_hi * x_hi;
+       uint32_t y_hi_x_lo = y_hi * x_lo;
+       uint32_t y_lo_x_lo = y_lo * x_lo;
+ 
+       uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+       int carry_out = cross_sum < y_lo_x_hi;
+       uint32_t carry = (uint32_t) carry_out << 16;
+ 
+       uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+       uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+       uint32_t cross_sum_hi = cross_sum >> 16;
+ 
+       uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+       uint32_t interm = cross_sum_hi + y_hi_x_hi;
+       uint32_t low_accum_hi = low_accum >> 16;
+       uint32_t interm_plus_carry = interm + carry;
+ 
+       result.v[i] = interm_plus_carry + low_accum_hi;
+     }
+ 
+   return result;
+ }
+ 
+ /* High part collapses the cross sum and (xl*yl >> N) into a single
+    low_sum carrying the overflow compare:
+      xh*yh + (low_sum >> N) + ((hilo > low_sum) << N).  */
+ 
+ uint32_t mulh_carry_low_sum (uint32_t x, uint32_t y)
+ {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = x_hi * y_lo;
+     uint32_t mullohi = x_lo * y_hi;
+     uint32_t cross_sum = mulhilo + mullohi;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t shrlolo = mullolo >> 16;
+     uint32_t low_sum = cross_sum + shrlolo;
+     int carry = low_sum < mulhilo;
+     uint32_t cond = ((uint32_t) carry << 16) + x_hi * y_hi;
+     uint32_t add = cond + (low_sum >> 16);
+ 
+     return add;
+ }
+ 
+ void full_mul_carry_low_sum (uint32_t x, uint32_t y, uint32_t* p)
+ {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = x_hi * y_lo;
+     uint32_t mullohi = x_lo * y_hi;
+     uint32_t cross_sum = mulhilo + mullohi;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t shrlolo = mullolo >> 16;
+     uint32_t low_sum = cross_sum + shrlolo;
+     int carry = low_sum < mulhilo;
+     uint32_t cond = ((uint32_t) carry << 16) + x_hi * y_hi;
+     uint32_t add = cond + (low_sum >> 16);
+     p[1] = add;
+     uint32_t low_sum_shr = low_sum << 16;
+     uint32_t mullololo = mullolo & 0xFFFF;
+     uint32_t low = low_sum_shr | mullololo;
+     p[0] = low;
+ }
+ 
+ uint32_t mulh_carry_low_sum_comm (uint32_t x, uint32_t y)
+ {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = y_lo * x_hi;
+     uint32_t mullohi = y_hi * x_lo;
+     uint32_t cross_sum = mullohi + mulhilo;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t shrlolo = mullolo >> 16;
+     uint32_t low_sum = shrlolo + cross_sum;
+     int carry = low_sum < mulhilo;
+     uint32_t cond = ((uint32_t) carry << 16) + x_hi * y_hi;
+     uint32_t add = cond + (low_sum >> 16);
+ 
+     return add;
+ }
+ 
+ uint32_t mulh_carry_low_sum_lohi (uint32_t x, uint32_t y) {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = x_hi * y_lo;
+     uint32_t mullohi = x_lo * y_hi;
+     uint32_t cross_sum = mulhilo + mullohi;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t low_sum = cross_sum + (mullolo >> 16);
+     int carry_occurred = (low_sum < mullohi);
+     uint32_t cond = (uint32_t) carry_occurred << 16;
+     uint32_t add = x_hi * y_hi + cond + (low_sum >> 16);
+ 
+     return add;
+ }
+ 
+ /* The 128-bit variant will fail during the high sequence generation
+    (no target provides a 256-bit multiply) and is excluded from the
+    expected fold counts below.  */
+ #ifdef __SIZEOF_INT128__
+ __uint128_t mulh_carry_low_sum_128 (__uint128_t x, __uint128_t y)
+ {
+     __uint128_t x_hi = x >> 64;
+     __uint128_t x_lo = x & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+     __uint128_t y_hi = y >> 64;
+     __uint128_t y_lo = y & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+     __uint128_t mulhilo = x_hi * y_lo;
+     __uint128_t mullohi = x_lo * y_hi;
+     __uint128_t cross_sum = mulhilo + mullohi;
+     __uint128_t mullolo = x_lo * y_lo;
+     __uint128_t shrlolo = mullolo >> 64;
+     __uint128_t low_sum = cross_sum + shrlolo;
+     int carry = low_sum < mulhilo;
+     __uint128_t cond = ((__uint128_t) carry << 64) + x_hi * y_hi;
+     __uint128_t add = cond + (low_sum >> 64);
+ 
+     return add;
+ }
+ #endif
+ 
+ /* This will be optimized during the second forwprop run.
+    Disable SLP so the expected fold count is target-independent.  */
+ __attribute__((optimize("no-tree-slp-vectorize")))
+ v2i32 mulh_carry_low_sum_v2i32 (v2i32 x, v2i32 y)
+ {
+   v2i32 result;
+   for (int i = 0; i < 2; i++)
+     {
+       uint32_t x_hi = x.v[i] >> 16;
+       uint32_t x_lo = x.v[i] & 0xFFFF;
+       uint32_t y_hi = y.v[i] >> 16;
+       uint32_t y_lo = y.v[i] & 0xFFFF;
+       uint32_t mulhilo  = x_hi * y_lo;
+       uint32_t mullohi = x_lo * y_hi;
+       uint32_t cross_sum  = mulhilo + mullohi;
+       uint32_t mullolo = x_lo * y_lo;
+       uint32_t shrlolo = mullolo >> 16;
+       uint32_t low_sum = cross_sum + shrlolo;
+       int carry = low_sum < mulhilo;
+       uint32_t cond = ((uint32_t) carry << 16) + x_hi * y_hi;
+       uint32_t add = cond + (low_sum >> 16);
+       result.v[i] = add;
+     }
+ 
+   return result;
+ }
+ 
+ /* PHI-form coverage: the carry summand is the join of a 2-arg PHI
+    guarded by an unsigned compare, recognized by cond_carry_add /
+    cond_carry_add_neg and folded by match_long_mul_phi.  */
+ 
+ uint32_t mulh_carry_phi (uint32_t x, uint32_t y)
+ {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = x_hi * y_lo;
+     uint32_t mullohi = x_lo * y_hi;
+     uint32_t cross_sum = mulhilo + mullohi;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+     uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+     if (add_cross_sum < mulhilo)
+       add += (uint32_t)1 << 16;
+     return add;
+ }
+ 
+ uint64_t mulh_carry_long_phi (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + (y_lo_x_lo >> 32);
+   uint64_t hw64 = y_hi_x_hi + cross_sum_hi + (low_accum >> 32);
+   if (cross_sum < y_lo_x_hi)
+     hw64 += (uint64_t)1 << 32;
+   return hw64;
+ }
+ 
+ /* PHI-form, cond_carry_add_neg (negated branch, carry-on-false).  */
+ uint32_t mulh_carry_phi_neg (uint32_t x, uint32_t y)
+ {
+     uint32_t x_hi = x >> 16;
+     uint32_t x_lo = x & 0xFFFF;
+     uint32_t y_hi = y >> 16;
+     uint32_t y_lo = y & 0xFFFF;
+     uint32_t mulhilo = x_hi * y_lo;
+     uint32_t mullohi = x_lo * y_hi;
+     uint32_t cross_sum = mulhilo + mullohi;
+     uint32_t mullolo = x_lo * y_lo;
+     uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+     uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+     if (add_cross_sum >= mulhilo)
+       ;
+     else
+       add += (uint32_t)1 << 16;
+     return add;
+ }
+ 
+ /* On targets with __int128 support the two 128-bit highparts also
+    fold; without it they are elided by #ifdef and the count drops
+    by 2.  */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 10 "forwprop1" { target { oi_mode && int128 } } } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 8 "forwprop1" { target { ! { oi_mode && int128 } } } } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 2 "forwprop2" } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication low part folded\\." 2 "forwprop1" } } */
+ /* Three PHI-form highparts, one per polarity pair (gt via mulh_carry_phi
+    and mulh_carry_long_phi, le via mulh_carry_phi_neg).  */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded \\(carry PHI\\)" 3 "forwprop1" } } */
+ /* Only the two 128-bit (OImode) chains are lowered.  sparc64 and hppa64
+    have OImode and __int128 but no native DImode high part, so their u64
+    chains lower too and the count would exceed 2; exclude them.  */
+ /* { dg-final { scan-tree-dump-times "Lowered long-mul high-part chain" 2 "widening_mul" { target { { oi_mode && int128 } && { ! { sparc*-*-* hppa*-*-* } } } } } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-cse-128.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-cse-128.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-cse-128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-cse-128.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,52 ----
+ /* { dg-do compile { target { oi_mode && int128 } } } */
+ /* { dg-options "-O3 -fdump-tree-forwprop1-details -fdump-tree-optimized" } */
+ 
+ /* Two differently-spelled high-part longhands of the same 128x128
+    product both fold to the canonical (u256) x * (u256) y >> 128, so
+    value numbering proves them equal and the function folds to 0.  */
+ 
+ typedef __uint128_t u128;
+ 
+ u128 both_spellings (u128 x, u128 y)
+ {
+   /* Spelling 1: overflow-compare carry form.  */
+   u128 x_hi = x >> 64;
+   u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 y_hi = y >> 64;
+   u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   u128 h1 = cond + (add_cross_sum >> 64);
+ 
+   /* Spelling 2: ladder form.  */
+   u128 a_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 b_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 a_hi = x >> 64;
+   u128 b_hi = y >> 64;
+   u128 t0 = b_lo * a_lo;
+   u128 t1 = b_lo * a_hi;
+   u128 t2 = b_hi * a_lo;
+   u128 t3 = b_hi * a_hi;
+   u128 t0_hi = t0 >> 64;
+   u128 u0 = t0_hi + t1;
+   u128 u0_lo = u0 & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 u0_hi = u0 >> 64;
+   u128 u1 = u0_lo + t2;
+   u128 u1_hi = u1 >> 64;
+   u128 u2 = u0_hi + t3;
+   u128 h2 = u2 + u1_hi;
+ 
+   return h1 ^ h2;
+ }
+ 
+ /* Both spellings are recognized.  */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded." 2 "forwprop1" } } */
+ /* Once canonical, VN proves them equal and the function folds to 0.  */
+ /* { dg-final { scan-tree-dump "return 0;" "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " \\* " "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-trunc-128.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-trunc-128.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-trunc-128.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-chain-trunc-128.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,80 ----
+ /* { dg-do run { target int128 } } */
+ /* { dg-options "-O3" } */
+ 
+ /* A user cast of the recognized 128-bit high part merges with the
+    chain's final truncation, so widening_mul lowering sees an outermost
+    convert to a type narrower than 128 bits.  Checks it builds the
+    longhand at narrow precision and converts to the lhs type.  */
+ 
+ typedef __uint128_t u128;
+ typedef unsigned long long u64;
+ typedef unsigned int u32;
+ 
+ static inline u128
+ mulh128 (u128 x, u128 y)
+ {
+   u128 x_hi = x >> 64;
+   u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 y_hi = y >> 64;
+   u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   return cond + (add_cross_sum >> 64);
+ }
+ 
+ __attribute__((noipa)) u64
+ trunc64 (u128 x, u128 y) { return (u64) mulh128 (x, y); }
+ 
+ __attribute__((noipa)) u32
+ trunc32 (u128 x, u128 y) { return (u32) mulh128 (x, y); }
+ 
+ __attribute__((noipa)) u128
+ mulh_reference (u128 x, u128 y)
+ {
+   volatile u128 x_hi = x >> 64;
+   volatile u128 x_lo = x & (u128)0xFFFFFFFFFFFFFFFF;
+   volatile u128 y_hi = y >> 64;
+   volatile u128 y_lo = y & (u128)0xFFFFFFFFFFFFFFFF;
+   u128 mulhilo = x_hi * y_lo;
+   u128 mullohi = x_lo * y_hi;
+   u128 cross_sum = mulhilo + mullohi;
+   u128 mullolo = x_lo * y_lo;
+   u128 shrlolo = mullolo >> 64;
+   u128 add_cross_sum = cross_sum + shrlolo;
+   int carry = add_cross_sum < mulhilo;
+   u128 cond = ((u128) carry << 64) + x_hi * y_hi;
+   return cond + (add_cross_sum >> 64);
+ }
+ 
+ int
+ main (void)
+ {
+   static const u128 vals[] = {
+     0,
+     1,
+     (u128)0xFFFFFFFFFFFFFFFF,
+     ((u128)1 << 64),
+     ((u128)1 << 127),
+     ~(u128)0,
+     ((u128)0xDEADBEEFCAFEBABE << 64) | 0x0123456789ABCDEF,
+     ((u128)0x8000000000000001 << 64) | 0xFFFFFFFFFFFFFFFE,
+   };
+   const unsigned n = sizeof (vals) / sizeof (vals[0]);
+ 
+   for (unsigned i = 0; i < n; i++)
+     for (unsigned j = 0; j < n; j++)
+       {
+ 	u128 ref = mulh_reference (vals[i], vals[j]);
+ 	if (trunc64 (vals[i], vals[j]) != (u64) ref)
+ 	  __builtin_abort ();
+ 	if (trunc32 (vals[i], vals[j]) != (u32) ref)
+ 	  __builtin_abort ();
+       }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-extra-addend.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-extra-addend.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-extra-addend.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-extra-addend.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,63 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-forwprop-details" } */
+ 
+ /* Chains carrying addends that are not part of the long-multiply idiom
+    (an accumulator merged in by reassociation, a foreign shifted term)
+    must still fold, with the extra addends preserved on top of the wide
+    multiply.  A leaf that classifies as a long-mul summand but breaks
+    operand consistency kills the match instead (no subset retry).  */
+ 
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* Extra addend appended after the full high-part chain.  Folds.  */
+ uint64_t
+ mulh_acc (uint64_t x, uint64_t y, uint64_t acc)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   int carry_out = hilo > low_sum;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   return xh * yh + (low_sum >> 32) + carry + acc;
+ }
+ 
+ /* Extra addend interleaved into the middle of the chain.  Folds.  */
+ uint64_t
+ mulh_acc_interleaved (uint64_t x, uint64_t y, uint64_t acc)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   int carry_out = hilo > low_sum;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   return ((xh * yh + acc) + (low_sum >> 32)) + carry;
+ }
+ 
+ /* Foreign leaf that classifies as a summand (a second high-high
+    product of different operands): consumed by the multiset, operand
+    consistency fails, no fold.  */
+ uint64_t
+ mulh_foreign_hihi (uint64_t x, uint64_t y, uint64_t a, uint64_t b)
+ {
+   uint64_t xl = x & 0xFFFFFFFF, xh = x >> 32;
+   uint64_t yl = y & 0xFFFFFFFF, yh = y >> 32;
+   uint64_t ah = a >> 32, bh = b >> 32;
+   uint64_t hilo = xh * yl;
+   uint64_t lohi = xl * yh;
+   uint64_t cross = hilo + lohi;
+   uint64_t lolo = xl * yl;
+   uint64_t low_sum = cross + (lolo >> 32);
+   int carry_out = hilo > low_sum;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   return xh * yh + (low_sum >> 32) + carry + ah * bh;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded" 2 "forwprop1" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-ladder.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-ladder.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-ladder.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-ladder.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,333 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-forwprop-details -fdump-tree-widening_mul-details" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ typedef struct { uint32_t v[2]; } v2i32;
+ typedef struct { uint64_t v[2]; } v2i64;
+ 
+ uint64_t mulh_ladder (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t t0 = y_lo * x_lo;
+   uint64_t t1 = y_lo * x_hi;
+   uint64_t t2 = y_hi * x_lo;
+   uint64_t t3 = y_hi * x_hi;
+   uint64_t t0_hi = t0 >> 32;
+   uint64_t u0 = t0_hi + t1;
+   uint64_t u0_lo = u0 & 0xFFFFFFFF;
+   uint64_t u0_hi = u0 >> 32;
+   uint64_t u1 = u0_lo + t2;
+   uint64_t u1_hi = u1 >> 32;
+   uint64_t u2 = u0_hi + t3;
+   uint64_t hw64 = u2 + u1_hi;
+ 
+   return hw64;
+ }
+ 
+ uint64_t mulh_ladder_comm (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t t0 = x_lo * y_lo;
+   uint64_t t1 = x_lo * y_hi;
+   uint64_t t2 = x_hi * y_lo;
+   uint64_t t3 = x_hi * y_hi;
+   uint64_t t0_hi = t0 >> 32;
+   uint64_t u0 = t1 + t0_hi;
+   uint64_t u0_lo = u0 & 0xFFFFFFFF;
+   uint64_t u0_hi = u0 >> 32;
+   uint64_t u1 = t2 + u0_lo;
+   uint64_t u1_hi = u1 >> 32;
+   uint64_t u2 = u1_hi + u0_hi;
+   uint64_t hw64 = t3 + u2;
+ 
+   return hw64;
+ }
+ 
+ uint32_t mulh_ladder_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = y_hi * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_lo = u0 & 0xFFFF;
+   uint32_t u0_hi = u0 >> 16;
+   uint32_t u1 = u0_lo + t2;
+   uint32_t u1_hi = u1 >> 16;
+   uint32_t u2 = u0_hi + t3;
+   uint32_t hw64 = u2 + u1_hi;
+ 
+   return hw64;
+ }
+ 
+ /* The 128-bit variant lowers to longhand in pass_optimize_widening_mul;
+    no target provides a 256-bit multiply.  */
+ #ifdef __SIZEOF_INT128__
+ __uint128_t umulh_variant_i128 (__uint128_t x, __uint128_t y)
+ {
+   __uint128_t x_lo = x & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t y_lo = y & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t x_hi = x >> 64;
+   __uint128_t y_hi = y >> 64;
+   __uint128_t t0 = y_lo * x_lo;
+   __uint128_t t1 = y_lo * x_hi;
+   __uint128_t t2 = y_hi * x_lo;
+   __uint128_t t3 = y_hi * x_hi;
+   __uint128_t t0_hi = t0 >> 64;
+   __uint128_t u0 = t0_hi + t1;
+   __uint128_t u0_lo = u0 & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t u0_hi = u0 >> 64;
+   __uint128_t u1 = u0_lo + t2;
+   __uint128_t u1_hi = u1 >> 64;
+   __uint128_t u2 = u0_hi + t3;
+   __uint128_t hw64 = u2 + u1_hi;
+ 
+   return hw64;
+ }
+ #endif
+ 
+ v2i64 full_mul_ladder (uint64_t x, uint64_t y)
+ {
+   uint64_t and_x = x & 0xFFFFFFFF;
+   uint64_t and_y = y & 0xFFFFFFFF;
+   uint64_t mul_i = and_y * and_x;
+   uint64_t shr_x = x >> 32;
+   uint64_t mul_i27 = and_y * shr_x;
+   uint64_t shr_y = y >> 32;
+   uint64_t mul_i28 = shr_y * and_x;
+   uint64_t mul_i29 = shr_y * shr_x;
+   uint64_t shr10 = mul_i >> 32;
+   uint64_t and11 = mul_i27 & 0xFFFFFFFF;
+   uint64_t add = and11 + mul_i28;
+   uint64_t add12 = add + shr10;
+   uint64_t shr13 = mul_i27 >> 32;
+   uint64_t shr14 = add12 >> 32;
+   uint64_t add15 = shr13 + mul_i29;
+   uint64_t add16 = add15 + shr14;
+   uint64_t shl = add12 << 32;
+   uint64_t and17 = mul_i & 0xFFFFFFFF;
+   uint64_t or_val = shl | and17;
+   v2i64 result;
+   result.v[0] = or_val;
+   result.v[1] = add16;
+   return result;
+ }
+ 
+ /* This will be optimized during the second forwprop run.
+    Disable SLP so the expected fold count is target-independent.  */
+ __attribute__((optimize("no-tree-slp-vectorize")))
+ v2i32 mulh_ladder_v2i32 (v2i32 x, v2i32 y)
+ {
+   v2i32 result;
+   for(int i=0; i<2; ++i)
+     {
+       uint32_t x_lo = x.v[i] & 0xFFFF;
+       uint32_t y_lo = y.v[i] & 0xFFFF;
+       uint32_t x_hi = x.v[i] >> 16;
+       uint32_t y_hi = y.v[i] >> 16;
+       uint32_t t0 = y_lo * x_lo;
+       uint32_t t1 = y_lo * x_hi;
+       uint32_t t2 = y_hi * x_lo;
+       uint32_t t3 = y_hi * x_hi;
+       uint32_t t0_hi = t0 >> 16;
+       uint32_t u0 = t0_hi + t1;
+       uint32_t u0_lo = u0 & 0xFFFF;
+       uint32_t u0_hi = u0 >> 16;
+       uint32_t u1 = u0_lo + t2;
+       uint32_t u1_hi = u1 >> 16;
+       uint32_t u2 = u0_hi + t3;
+       result.v[i] = u2 + u1_hi;
+     }
+ 
+   return result;
+ }
+ 
+ /* Ladder-long variants: hi-part sum uses the long form
+    (xh*yh + cross_hi_a + cross_hi_b + mid_hi).  */
+ 
+ uint32_t mulh_ladder_long (uint32_t x, uint32_t y)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = xl * yl;
+   uint32_t mullh = xl * yh;
+   uint32_t mulhl = xh * yl;
+   uint32_t mulhh = xh * yh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mullh & 0xFFFF;
+   uint32_t add = shr8 + conv10;
+   uint32_t conv12 = mulhl & 0xFFFF;
+   uint32_t add13 = add + conv12;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mullh >> 16;
+   uint32_t add16 = mulhh + shr15;
+   uint32_t shr17 = mulhl >> 16;
+   uint32_t add18 = add16 + shr17;
+   uint32_t add19 = add18 + shr14;
+ 
+   return add19;
+ }
+ 
+ void full_mul_ladder_long (uint32_t x, uint32_t y, uint32_t *p)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = xl * yl;
+   uint32_t mullh = xl * yh;
+   uint32_t mulhl = xh * yl;
+   uint32_t mulhh = xh * yh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mullh & 0xFFFF;
+   uint32_t add = shr8 + conv10;
+   uint32_t conv12 = mulhl & 0xFFFF;
+   uint32_t add13 = add + conv12;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mullh >> 16;
+   uint32_t add16 = mulhh + shr15;
+   uint32_t shr17 = mulhl >> 16;
+   uint32_t add18 = add16 + shr17;
+   uint32_t add19 = add18 + shr14;
+   p[1] = add19;
+   uint32_t add_13_shl = add13 << 16;
+   uint32_t and17 = mulll & 0xFFFF;
+   uint32_t or_val = add_13_shl | and17;
+   p[0] = or_val;
+ }
+ 
+ uint32_t mulh_ladder_long_comm (uint32_t x, uint32_t y)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = yl * xl;
+   uint32_t mullh = yh * xl;
+   uint32_t mulhl = yl * xh;
+   uint32_t mulhh = yh * xh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mullh & 0xFFFF;
+   uint32_t add = conv10 + shr8;
+   uint32_t conv12 = mulhl & 0xFFFF;
+   uint32_t add13 = conv12 + add;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mullh >> 16;
+   uint32_t shr17 = mulhl >> 16;
+   uint32_t add16 = shr14 + shr17;
+   uint32_t add18 = add16 + shr15;
+   uint32_t add19 = mulhh + add18;
+ 
+   return add19;
+ }
+ 
+ /* The 128-bit variant lowers to longhand in pass_optimize_widening_mul;
+    no target provides a 256-bit multiply.  */
+ #ifdef __SIZEOF_INT128__
+ __uint128_t mulh_ladder_long_128 (__uint128_t x, __uint128_t y)
+ {
+   __uint128_t xl = x & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t xh = x >> 64;
+   __uint128_t yl = y & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t yh = y >> 64;
+   __uint128_t mulll = xl * yl;
+   __uint128_t mullh = xl * yh;
+   __uint128_t mulhl = xh * yl;
+   __uint128_t mulhh = xh * yh;
+   __uint128_t shr8 = mulll >> 64;
+   __uint128_t conv10 = mullh & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t add = shr8 + conv10;
+   __uint128_t conv12 = mulhl & (__uint128_t)0xFFFFFFFFFFFFFFFF;
+   __uint128_t add13 = add + conv12;
+   __uint128_t shr14 = add13 >> 64;
+   __uint128_t shr15 = mullh >> 64;
+   __uint128_t add16 = mulhh + shr15;
+   __uint128_t shr17 = mulhl >> 64;
+   __uint128_t add18 = add16 + shr17;
+   __uint128_t add19 = add18 + shr14;
+ 
+   return add19;
+ }
+ #endif
+ 
+ uint32_t mulh_ladder_long_hllh (uint32_t x, uint32_t y)
+ {
+   uint32_t xl = x & 0xFFFF;
+   uint32_t xh = x >> 16;
+   uint32_t yl = y & 0xFFFF;
+   uint32_t yh = y >> 16;
+   uint32_t mulll = xl * yl;
+   uint32_t mullh = xl * yh;
+   uint32_t mulhl = xh * yl;
+   uint32_t mulhh = xh * yh;
+   uint32_t shr8 = mulll >> 16;
+   uint32_t conv10 = mulhl & 0xFFFF;
+   uint32_t add = shr8 + conv10;
+   uint32_t conv12 = mullh & 0xFFFF;
+   uint32_t add13 = add + conv12;
+   uint32_t shr14 = add13 >> 16;
+   uint32_t shr15 = mulhl >> 16;
+   uint32_t add16 = mulhh + shr15;
+   uint32_t shr17 = mullh >> 16;
+   uint32_t add18 = add16 + shr17;
+   uint32_t add19 = add18 + shr14;
+ 
+   return add19;
+ }
+ 
+ /* This will be optimized during the second forwprop run.
+    Disable SLP so the expected fold count is target-independent.  */
+ __attribute__((optimize("no-tree-slp-vectorize")))
+ v2i32 mul_ladder_long_v2i32 (v2i32 x, v2i32 y)
+ {
+   v2i32 result;
+   for (int i = 0; i < 2; i++)
+     {
+       uint32_t xl = x.v[i] & 0xFFFF;
+       uint32_t xh = x.v[i] >> 16;
+       uint32_t yl = y.v[i] & 0xFFFF;
+       uint32_t yh = y.v[i] >> 16;
+       uint32_t mulll = xl * yl;
+       uint32_t mullh = xl * yh;
+       uint32_t mulhl = xh * yl;
+       uint32_t mulhh = xh * yh;
+       uint32_t shr8 = mulll >> 16;
+       uint32_t conv10 = mullh & 0xFFFF;
+       uint32_t add = shr8 + conv10;
+       uint32_t conv12 = mulhl & 0xFFFF;
+       uint32_t add13 = add + conv12;
+       uint32_t shr14 = add13 >> 16;
+       uint32_t shr15 = mullh >> 16;
+       uint32_t add16 = mulhh + shr15;
+       uint32_t shr17 = mulhl >> 16;
+       uint32_t add18 = add16 + shr17;
+       result.v[i] = add18 + shr14;
+     }
+ 
+     return result;
+ }
+ 
+ /* On targets with __int128 support the 128-bit highpart also folds;
+    without it it is elided by #ifdef and the count drops by 2.  */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 10 "forwprop1" { target { oi_mode && int128 } } } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 8 "forwprop1" { target { ! { oi_mode && int128 } } } } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 2 "forwprop2" } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication low part folded\\." 2 "forwprop1" } } */
+ /* Only the two 128-bit (OImode) chains are lowered.  sparc64 and hppa64
+    have OImode and __int128 but no native DImode high part, so their u64
+    chains lower too and the count would exceed 2; exclude them.  */
+ /* { dg-final { scan-tree-dump-times "Lowered long-mul high-part chain" 2 "widening_mul" { target { { oi_mode && int128 } && { ! { sparc*-*-* hppa*-*-* } } } } } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-low-plus.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-low-plus.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-low-plus.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-low-plus.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-forwprop-details" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* Low part via PLUS form: lolo + (cross_sum << halfwidth).
+    No GT/LT comparison on the result, so long_mul_check_low_plus_defer
+    should fold without deferring.  */
+ uint32_t mul_low_plus_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t lolo = x_lo * y_lo;
+   uint32_t hilo = x_hi * y_lo;
+   uint32_t lohi = x_lo * y_hi;
+   uint32_t cross_sum = hilo + lohi;
+   uint32_t cross_shifted = cross_sum << 16;
+   return lolo + cross_shifted;
+ }
+ 
+ /* 64-bit variant.  */
+ uint64_t mul_low_plus_64 (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_shifted = cross_sum << 32;
+   return lolo + cross_shifted;
+ }
+ 
+ /* Commuted operand order.  */
+ uint32_t mul_low_plus_comm (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t lolo = y_lo * x_lo;
+   uint32_t hilo = y_lo * x_hi;
+   uint32_t lohi = y_hi * x_lo;
+   uint32_t cross_sum = lohi + hilo;
+   uint32_t cross_shifted = cross_sum << 16;
+   return cross_shifted + lolo;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "Long multiplication low part folded." 3 "forwprop1" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-partial.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-partial.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-partial.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-partial.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,193 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-optimized" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ 
+ /* Only one cross-product (xh*yl), missing xl*yh.
+    Should NOT be folded.  */
+ uint32_t partial_one_cross (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_hi = u0 >> 16;
+   return t3 + u0_hi;
+ }
+ 
+ /* Only xl*yl and xh*yh, no cross-products at all.
+    Should NOT be folded.  */
+ uint32_t partial_no_cross (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   return t3 + (t0 >> 16);
+ }
+ 
+ /* Only cross-products, missing xl*yl and xh*yh.
+    Should NOT be folded.  */
+ uint32_t partial_only_cross (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = y_hi * x_lo;
+   return (t1 + t2) >> 16;
+ }
+ 
+ /* Full ladder structure but one cross-product uses z instead of y.
+    long_mul_check_consistency should reject the mismatched operand.
+    Should NOT be folded.  */
+ uint32_t partial_mismatched_op (uint32_t x, uint32_t y, uint32_t z)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t z_lo = z & 0xFFFF;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = z_lo * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_lo = u0 & 0xFFFF;
+   uint32_t u0_hi = u0 >> 16;
+   uint32_t u1 = u0_lo + t2;
+   uint32_t u1_hi = u1 >> 16;
+   uint32_t u2 = u0_hi + t3;
+   return u2 + u1_hi;
+ }
+ 
+ /* Uses conditionals in the computation.
+    Should NOT be folded.  */
+ unsigned mulhu_conditional (unsigned u, unsigned v) {
+    unsigned a, b, c, d, p, q, rlow, rhigh;
+ 
+    a = u >> 16;
+    b = u & 0xFFFF;
+    c = v >> 16;
+    d = v & 0xFFFF;
+ 
+    p = a*c;
+    q = b*d;
+    rlow = (-a + b)*(c - d);
+    rhigh = (int)((-a + b)^(c - d)) >> 31;
+    if (rlow == 0) rhigh = 0;
+ 
+    q = q + (q >> 16);
+    rlow = rlow + p;
+    if (rlow < p) rhigh = rhigh + 1;
+    rlow = rlow + q;
+    if (rlow < q) rhigh = rhigh + 1;
+ 
+    return p + (rlow >> 16) + (rhigh << 16);
+ }
+ 
+ /* Signed operands.
+    Should NOT be folded.  */
+ int mulhs_signed (int u, int v) {
+    unsigned u0, v0, w0;
+    int u1, v1, w1, w2, t;
+ 
+    u0 = u & 0xFFFF;
+    u1 = u >> 16;
+    v0 = v & 0xFFFF;
+    v1 = v >> 16;
+    w0 = u0*v0;
+    t  = u1*v0 + (w0 >> 16);
+    w1 = t & 0xFFFF;
+    w2 = t >> 16;
+    w1 = u0*v1 + w1;
+    return u1*v1 + w2 + (w1 >> 16);
+ }
+ 
+ /* PHI-form near-miss: non-power-of-two carry increment.
+    match.pd rejects via integer_pow2p@3.
+    Should NOT be folded.  */
+ uint32_t partial_phi_nonpow2 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16, x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16, y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum < mulhilo)
+     add += (uint32_t)3 << 16;
+   return add;
+ }
+ 
+ /* PHI-form near-miss: carry increment shifted by less than halfwidth.
+    match_long_mul_phi rejects via shift_amt == halfwidth.
+    Should NOT be folded.  */
+ uint32_t partial_phi_wrong_shift (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16, x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16, y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum < mulhilo)
+     add += (uint32_t)1 << 15;
+   return add;
+ }
+ 
+ /* PHI-form near-miss: equality compare in place of the strict carry
+    predicate.  cond_carry_add and cond_carry_add_neg only encode
+    gt / lt / le / ge.
+    Should NOT be folded.  */
+ uint32_t partial_phi_wrong_compare (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16, x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16, y_lo = y & 0xFFFF;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * y_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum == mulhilo)
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* PHI-form near-miss: one cross-product uses z instead of y.
+    long_mul_check_consistency rejects the inconsistent (op0, op1).
+    Should NOT be folded.  */
+ uint32_t partial_phi_wrong_cross (uint32_t x, uint32_t y, uint32_t z)
+ {
+   uint32_t x_hi = x >> 16, x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16, y_lo = y & 0xFFFF;
+   uint32_t z_hi = z >> 16;
+   uint32_t mulhilo = x_hi * y_lo;
+   uint32_t mullohi = x_lo * z_hi;
+   uint32_t cross_sum = mulhilo + mullohi;
+   uint32_t mullolo = x_lo * y_lo;
+   uint32_t add_cross_sum = cross_sum + (mullolo >> 16);
+   uint32_t add = x_hi * y_hi + (add_cross_sum >> 16);
+   if (add_cross_sum < mulhilo)
+     add += (uint32_t)1 << 16;
+   return add;
+ }
+ 
+ /* Verify no fold in any forwprop pass by checking the optimized IR
+    for MULT_HIGHPART_EXPR (h*) and WIDEN_MULT_EXPR (w*).  */
+ /* { dg-final { scan-tree-dump-not " h\\* " "optimized" } } */
+ /* { dg-final { scan-tree-dump-not " w\\* " "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-two-carry.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-two-carry.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/long-mul-two-carry.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/long-mul-two-carry.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,140 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -fdump-tree-forwprop-details" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* High part using two separate carries (cross carry + low carry).  */
+ uint64_t mulh_two_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+ 
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+   uint64_t low_carry = (uint64_t)(low_result < cross_shifted);
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry + low_carry;
+ 
+   return high;
+ }
+ 
+ /* Commuted operand order.  */
+ uint64_t mulh_two_carry_comm (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = lohi + hilo;
+   uint64_t cross_carry = (uint64_t)(cross_sum < lohi) << 32;
+ 
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = cross_shifted + lolo;
+   uint64_t low_carry = (uint64_t)(low_result < lolo);
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry + low_carry;
+ 
+   return high;
+ }
+ 
+ /* 32-bit variant.  */
+ uint32_t mulh_two_carry_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_hi = x >> 16;
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+ 
+   uint32_t lolo = x_lo * y_lo;
+   uint32_t hilo = x_hi * y_lo;
+   uint32_t lohi = x_lo * y_hi;
+   uint32_t hihi = x_hi * y_hi;
+ 
+   uint32_t cross_sum = hilo + lohi;
+   uint32_t cross_carry = (uint32_t)(cross_sum < hilo) << 16;
+ 
+   uint32_t cross_shifted = cross_sum << 16;
+   uint32_t low_result = lolo + cross_shifted;
+   uint32_t low_carry = (uint32_t)(low_result < cross_shifted);
+ 
+   uint32_t high = hihi + (cross_sum >> 16) + cross_carry + low_carry;
+ 
+   return high;
+ }
+ 
+ /* Full multiply: both high and low parts.  */
+ uint64_t full_mul_two_carry (uint64_t x, uint64_t y, uint64_t *lo)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+ 
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+   uint64_t low_carry = (uint64_t)(low_result < cross_shifted);
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry + low_carry;
+ 
+   *lo = low_result;
+   return high;
+ }
+ 
+ /* Low carry written as an if-branch + 2-arg PHI.  Exercises
+    match_long_mul_phi's LMK_CARRY_LOW path (shift = 0).  */
+ uint64_t mulh_two_carry_low_phi (uint64_t x, uint64_t y)
+ {
+   uint64_t x_hi = x >> 32;
+   uint64_t x_lo = x & 0xFFFFFFFFUL;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFFUL;
+ 
+   uint64_t lolo = x_lo * y_lo;
+   uint64_t hilo = x_hi * y_lo;
+   uint64_t lohi = x_lo * y_hi;
+   uint64_t hihi = x_hi * y_hi;
+ 
+   uint64_t cross_sum = hilo + lohi;
+   uint64_t cross_carry = (uint64_t)(cross_sum < hilo) << 32;
+   uint64_t cross_shifted = cross_sum << 32;
+   uint64_t low_result = lolo + cross_shifted;
+ 
+   uint64_t high = hihi + (cross_sum >> 32) + cross_carry;
+   if (low_result < cross_shifted)
+     high += 1;
+ 
+   return high;
+ }
+ 
+ /* The LOW fold for full_mul_two_carry lands in forwprop4 because
+    `lolo + cross_shifted' also feeds the HIGH fold's low-carry
+    compare; long_mul_check_low_plus_defer holds it until the HIGH
+    fold has consumed the compare.  */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded\\." 4 "forwprop3" } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication high part folded \\(carry PHI\\)" 1 "forwprop3" } } */
+ /* { dg-final { scan-tree-dump-times "Long multiplication low part folded\\." 1 "forwprop4" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/loop-im-shift-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/loop-im-shift-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/loop-im-shift-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/loop-im-shift-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-lim2-details" } */
+ 
+ /* A shift by an in-range constant is perfectly well defined, so loop-invariant
+    motion may hoist it out of a conditionally executed block just like any other
+    arithmetic.  Only a constant count that is out of range (or a non-constant
+    one, which cannot be proven in range here) has to be restricted to
+    MOVE_PRESERVE_EXECUTION.
+ 
+    Because the shift's result feeds the rest of the chain, restricting it also
+    pinned everything computed from it, so the multiply and the divide below
+    stayed in the loop as well.  */
+ 
+ void f (int *p, int n, int a, int b, int c, int *q)
+ {
+   for (int i = 0; i < n; i++)
+     if (p[i] > c)
+       q[i] = ((a << 3) * b) / 7;
+ }
+ 
+ /* The whole invariant chain must move, exactly as it does when the shift is
+    written as a multiply by 8.  */
+ /* { dg-final { scan-tree-dump-times "Moving statement" 3 "lim2" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr112104-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr112104-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr112104-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr112104-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,45 ----
+ /* PR tree-optimization/112104 */
+ /* { dg-do compile } */
+ /* { dg-options "-O1 -fdump-tree-sccp-details" } */
+ 
+ unsigned int
+ __attribute__ ((noipa))
+ f_xor (unsigned int tmp, int n, unsigned int inv)
+ {
+   unsigned int r = tmp;
+   for (int i = 0; i < n; i++)
+     r ^= inv;
+   return r;
+ }
+ 
+ int
+ __attribute__ ((noipa))
+ f_xor1 (int n)
+ {
+   int j = 0;
+   for (int i = 0; i < n; i++)
+     j ^= 1;
+   return j;
+ }
+ 
+ unsigned long long
+ __attribute__ ((noipa))
+ f_xor64 (unsigned long long tmp, long n, unsigned long long inv)
+ {
+   unsigned long long r = tmp;
+   for (long i = 0; i < n; i++)
+     r ^= inv;
+   return r;
+ }
+ 
+ unsigned int
+ __attribute__ ((noipa))
+ f_xorc (unsigned int tmp, int n)
+ {
+   unsigned int r = tmp;
+   for (int i = 0; i < n; i++)
+     r ^= 11304;
+   return r;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times {final value replacement} 4 "sccp" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr112104-2.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr112104-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr112104-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr112104-2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,60 ----
+ /* PR tree-optimization/112104 */
+ /* { dg-do run } */
+ /* { dg-options "-O1" } */
+ 
+ #include "pr112104-1.c"
+ 
+ int
+ main (void)
+ {
+   unsigned int tmp = 0x1101;
+   unsigned int inv = 0x111101;
+   unsigned long long tmp64 = 0x1101ULL;
+   unsigned long long inv64 = 0xdeadbeefcafebabeULL;
+ 
+   if (f_xor (tmp, 64, inv) != 0x1101)
+     __builtin_abort ();
+   if (f_xor (tmp, 63, inv) != 0x110000)
+     __builtin_abort ();
+ 
+   if (f_xor (tmp, 1, inv) != 0x110000)
+     __builtin_abort ();
+   if (f_xor (tmp, 2, inv) != 0x1101)
+     __builtin_abort ();
+ 
+   if (f_xor1 (64) != 0)
+     __builtin_abort ();
+   if (f_xor1 (63) != 1)
+     __builtin_abort ();
+   if (f_xor1 (1) != 1)
+     __builtin_abort ();
+   if (f_xor1 (2) != 0)
+     __builtin_abort ();
+ 
+   if (f_xor64 (tmp64, 64, inv64) != 0x1101ULL)
+     __builtin_abort ();
+   if (f_xor64 (tmp64, 63, inv64) != 0xdeadbeefcafeabbfULL)
+     __builtin_abort ();
+   if (f_xor64 (tmp64, 1, inv64) != 0xdeadbeefcafeabbfULL)
+     __builtin_abort ();
+   if (f_xor64 (tmp64, 2, inv64) != 0x1101ULL)
+     __builtin_abort ();
+ 
+   if (f_xorc (tmp, 64) != 0x1101)
+     __builtin_abort ();
+   if (f_xorc (tmp, 63) != 0x3d29)
+     __builtin_abort ();
+   if (f_xorc (tmp, 1) != 0x3d29)
+     __builtin_abort ();
+   if (f_xorc (tmp, 2) != 0x1101)
+     __builtin_abort ();
+ 
+   if (f_xor (tmp, 0, inv) != 0x1101)
+     __builtin_abort ();
+   if (f_xor (tmp, -5, inv) != 0x1101)
+     __builtin_abort ();
+   if (f_xor1 (0) != 0)
+     __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr124667-2.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr124667-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr124667-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr124667-2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-additional-options -O2 } */
+ /* { dg-additional-options -fdump-tree-optimized } */
+ 
+ int test1 (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = (arr[n] & bitshift) == 0 ? arr[n] : arr[n] | bitshift;
+ 
+   return arr[n];
+ }
+ 
+ int test1_alt (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = (arr[n] & bitshift) != 0 ? arr[n] | bitshift : arr[n];
+ 
+   return arr[n];
+ }
+ 
+ int test2 (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = ((arr[n] >> bit) & 1) == 0 ? arr[n] : arr[n] | bitshift;
+ 
+   return arr[n];
+ }
+ 
+ int test2_alt (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = ((arr[n] >> bit) & 1) != 0 ? arr[n] | bitshift : arr[n];
+ 
+   return arr[n];
+ }
+ 
+ int test3 (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   arr[n] = (arr[n] & bits) == bits ? arr[n] | bits : arr[n];
+ 
+   return arr[n];
+ }
+ 
+ int test3_alt (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   arr[n] = (arr[n] & bits) != bits ? arr[n] : arr[n] | bits;
+ 
+   return arr[n];
+ }
+ 
+ /* { dg-final { scan-tree-dump-times " \\| " 0 optimized } } */
+ /* { dg-final { scan-tree-dump-times " \& " 0 optimized } } */
+ /* { dg-final { scan-tree-dump-times " << " 0 optimized } } */
+ /* { dg-final { scan-tree-dump-times " >> " 0 optimized } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr124667.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr124667.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr124667.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr124667.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,107 ----
+ /* { dg-additional-options -O2 } */
+ /* { dg-additional-options -fdump-tree-optimized } */
+ 
+ int bitset1 (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   if ((arr[n] & bitshift) == 0)
+     arr[n] |= bitshift;
+ 
+   return arr[n];
+ }
+ 
+ int bitset1_alt (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = (arr[n] & bitshift) != 0 ? arr[n] : arr[n] | bitshift;
+ 
+   return arr[n];
+ }
+ 
+ int bitset1b (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   if ((bitshift & arr[n]) == 0)
+     arr[n] |= bitshift;
+ 
+   return arr[n];
+ }
+ 
+ int bitset1b_alt (int n, int bit)
+ {
+   int arr[16];
+   int bitshift = 1 << bit;
+ 
+   arr[n] = (bitshift & arr[n]) != 0 ? arr[n] : bitshift | arr[n];
+ 
+   return arr[n];
+ }
+ 
+ int bitset2 (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   if ((arr[n] & bits) != bits)
+     arr[n] |= bits;
+ 
+   return arr[n];
+ }
+ 
+ int bitset2_alt (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   arr[n] = (arr[n] & bits) == bits ?  arr[n]: arr[n] | bits;
+ 
+   return arr[n];
+ }
+ 
+ int bitset2b (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   if ((bits & arr[n]) != bits)
+     arr[n] |= bits;
+ 
+   return arr[n];
+ }
+ 
+ int bitset2b_alt (int n)
+ {
+   int arr[16];
+   int bits = 0xF;
+ 
+   arr[n] = (bits & arr[n]) == bits ?  arr[n]: bits | arr[n];
+ 
+   return arr[n];
+ }
+ 
+ /* A negative test to ensure we're not optimizing something
+    we shouldn't. */
+ int bitset_nosimplify (int n)
+ {
+   int arr[16];
+ 
+   int bits = 0xF;
+ 
+   /* We can't make the bit_ior unconditional here because the
+      cond matches for multiple values aside from '0xF' in
+      which the value wouldn't be touched, e.g. for arr[n] = 0x1
+      "arr[n] & bits" is also non-zero and the value wouldn't be
+      changed.  */
+   if ((arr[n] & bits) == 0)
+     arr[n] |= bits;
+ 
+   return arr[n];
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "goto" 2 optimized } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126743.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126743.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126743.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126743.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-evrp" } */
+ 
+ unsigned int
+ or_eq_zero (int a, int b)
+ {
+   if (a == b)
+     __builtin_unreachable ();
+   // return 0;
+   return (a | b) == 0;
+ }
+ 
+ unsigned int
+ or_ne_zero (int a, int b)
+ {
+   if (a == b)
+     __builtin_unreachable ();
+   // return 1;
+   return (a | b) != 0;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 1 "evrp" } } */
+ /* { dg-final { scan-tree-dump-times "return 1;" 1 "evrp" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126748.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126748.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126748.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126748.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-evrp" } */
+ 
+ unsigned f(unsigned a, unsigned b)
+ {
+     if (b >= a) __builtin_unreachable();
+     return b / a;
+ }
+ 
+ int fs(int a, int b)
+ {
+   a = __builtin_abs(a);
+   b = __builtin_abs(b);
+   if (b >= a) __builtin_unreachable();
+   return b / a;
+ }
+ 
+ /* This can't be simplified.  */
+ int fs2(int a, int b)
+ {
+   if (b >= a) __builtin_unreachable();
+   return b / a;
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "return 0;" 2 "evrp" } } */
+ /* { dg-final { scan-tree-dump-times " / " 1 "evrp" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126876.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126876.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr126876.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr126876.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,35 ----
+ /* PR tree-optimization/126876 */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -w" } */
+ 
+ unsigned char *S_parser_feed_eol;
+ char S_parser_feed_end;
+ void S_parser_feed(unsigned char *buffer) {
+   while (buffer) {
+     int chunk_len;
+     for (; S_parser_feed_eol;)
+       chunk_len = S_parser_feed_eol - buffer;
+     buffer += chunk_len;
+     if (S_parser_feed_end)
+       if (*buffer)
+         buffer++;
+   }
+ }
+ 
+ /* Second reducer, from Emacs coding.c (comment #9).  */
+ int b;
+ 
+ int c(char *p) {
+   if (b) {
+     p[0] = 0;
+     return 1;
+   }
+   return 0;
+ }
+ 
+ void d(char *e) {
+   while (e) {
+     e += c(e);
+     e += c(e);
+   }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr86937.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr86937.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/pr86937.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/pr86937.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,15 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-pre" } */
+ const char a[4] = "123";
+ 
+ int f (int i)
+ {
+   return __builtin_strlen (i ? a : "");
+ }
+ 
+ int g (int i)
+ {
+   return __builtin_strnlen (i ? a : "", 4);
+ }
+ 
+ /* { dg-final { scan-tree-dump-times "strnlen " 0 "pre" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/round-up-ior-1.c	Sun Aug 23 22:32:15 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-optimized" } */
  
  typedef unsigned int v4ui __attribute__ ((vector_size (16)));
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-optimized -Wno-psabi" } */
  
  typedef unsigned int v4ui __attribute__ ((vector_size (16)));
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-37.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-37.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-37.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-37.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,109 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fgimple" } */
+ 
+ int a[1], b;
+ short c;
+ unsigned short d;
+ 
+ int __GIMPLE (ssa,guessed_local(54066899),startwith("pre"))
+ main ()
+ {
+   short int c_lsm_14;
+   int b_lsm_13;
+   short int _2;
+   short int _10;
+   short int _12;
+   short int _18;
+   int _22;
+   short int _24;
+   short int _27;
+   short unsigned int _28;
+   int _32;
+   unsigned short _33;
+   unsigned short _34;
+   short int _35;
+   short int _37;
+   int _38;
+   int _39;
+ 
+   __BB(2,guessed_local(54066900)):
+   _24 = c;
+   if (_24 != _Literal (short int) 0)
+     goto __BB3(guessed(36238787));
+   else
+     goto __BB8(guessed(97978941));
+ 
+   __BB(3,guessed_local(14598063)):
+   c = _Literal (short int) 0;
+   _10 = c;
+   if (_10 <= _Literal (short int) 1)
+     goto __BB9(guessed(119453778));
+   else
+     goto __BB4(guessed(14763950));
+ 
+   __BB(4,guessed_local(14598063)):
+   _18 = __PHI (__BB13: _2, __BB3: _10);
+   _28 = (short unsigned int) _18;
+   d = _28;
+   goto __BB8(precise(134217728));
+ 
+   __BB(9,guessed_local(12992276)):
+   b_lsm_13_26 = b;
+   c_lsm_14_23 = c;
+   goto __BB5(precise(134217728));
+ 
+   __BB(5,loop_header(4),guessed_local(118111603)):
+   _12 = __PHI (__BB11: _27, __BB9: _10);
+   b_lsm_13_41 = 1;
+   _22 = b_lsm_13_41;
+   if (_22 != 0)
+     goto __BB10(guessed(119453778));
+   else
+     goto __BB6(guessed(14763950));
+ 
+   __BB(6,guessed_local(118111603)):
+   b_lsm_13_31 = __PHI (__BB7: b_lsm_13_11, __BB5: b_lsm_13_41);
+   _33 = (unsigned short) _12;
+   _34 = _33 + _Literal (unsigned short) 1;
+   _35 = (short int) _34;
+   c_lsm_14_6 = _35;
+   _27 = c_lsm_14_6;
+   if (_27 <= _Literal (short int) 1)
+     goto __BB11(guessed(119453778));
+   else
+     goto __BB13(guessed(14763950));
+ 
+   __BB(13,guessed_local(12992276)):
+   c_lsm_14_4 = __PHI (__BB6: c_lsm_14_6);
+   _2 = __PHI (__BB6: _27);
+   b_lsm_13_3 = __PHI (__BB6: b_lsm_13_31);
+   b = b_lsm_13_3;
+   c = c_lsm_14_4;
+   goto __BB4(precise(134217728));
+ 
+   __BB(11,guessed_local(105119327)):
+   goto __BB5(precise(134217728));
+ 
+   __BB(10,guessed_local(105119327)):
+   _37 = _12 + _Literal (short int) 1;
+   _38 = (int) _37;
+   _39 = a[_38];
+   goto __BB7(precise(134217728));
+ 
+   __BB(7,loop_header(5),guessed_local(955630247)):
+   b_lsm_13_11 = _39;
+   _32 = b_lsm_13_11;
+   if (_32 != 0)
+     goto __BB12(guessed(119453778));
+   else
+     goto __BB6(guessed(14763950));
+ 
+   __BB(12,guessed_local(850510920)):
+   goto __BB7(precise(134217728));
+ 
+   __BB(8,guessed_local(54066899)):
+   return 0;
+ 
+ }
+ 
+ 
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-23.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -fdump-tree-optimized" } */
+ 
+ volatile unsigned sink;
+ 
+ void
+ f (int flag, unsigned n)
+ {
+   unsigned i = 0;
+   do
+     {
+       sink = i;
+       i += 1;
+     }
+   while (i != 128);
+ }
+ 
+ /* We should not peel this loop.  */
+ /* { dg-final { scan-tree-dump-times "sink" 1 "optimized" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-24.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-24.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-24.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-24.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 --param dom-jump-threading=0 -fdump-tree-thread2-stats" } */
+ volatile unsigned sink;
+ 
+ void
+ f (int flag, unsigned n)
+ {
+   unsigned i = flag ? 0 : n;
+   do
+     {
+       sink = i;
+       i += 4;
+     }
+   while (i != 4);
+ }
+ 
+ /* We should thread the path when i starts at 0 through loop exit.  */
+ /* { dg-final { scan-tree-dump "Jumps threaded: 1" "thread2" } } */
+ /* { dg-final { scan-tree-dump-times "sink" 2 "thread2" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/vec-mask-zero-1.c	Sun Aug 23 22:32:15 2026
***************
*** 1,5 ****
! /* { dg-do compile } */
! /* { dg-options "-O2 -fdump-tree-optimized" } */
  /* Combine pairs of vector comparisons against zero or all-ones.  Use
     different signedness for the operands to exercise the view conversion.  */
  typedef int v4si __attribute__((vector_size (16)));
--- 1,6 ----
! /* { dg-do compile { target vect_int } } */
! /* { dg-options "-O2 -fdump-tree-optimized -Wno-psabi" } */
! /* { dg-additional-options "-msse2" { target ia32 } } */
  /* Combine pairs of vector comparisons against zero or all-ones.  Use
     different signedness for the operands to exercise the view conversion.  */
  typedef int v4si __attribute__((vector_size (16)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/tree-ssa/vector-alignup-1.c	Sun Aug 23 22:32:15 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-require-effective-target vect_int } */
  /* { dg-options "-O2 -fdump-tree-optimized" } */
+ /* { dg-additional-options "-msse2" { target ia32 } } */
  
  /* Rounding up by adding the padding, spelled with vectors.  */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/vect/bb-slp-pr126926.c gcc-17-20260823/gcc/testsuite/gcc.dg/vect/bb-slp-pr126926.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/vect/bb-slp-pr126926.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/vect/bb-slp-pr126926.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fgimple" } */
+ 
+ float a;
+ 
+ void __GIMPLE (ssa,guessed_local(1073741824),startwith("slp"))
+ b ()
+ {
+   float [[gnu::vector_size(8)]] c;
+   float _1;
+   float _2;
+   float _3;
+   float _4;
+   float _5;
+   float _6;
+   float _7;
+   float _8;
+   float _9;
+ 
+   __BB(2,guessed_local(1073741824)):
+   _1 = a;
+   _2 = _1 + _Literal (float) 0.0;
+   c_12 = __BIT_INSERT (c_11(D), _2, 32u);
+   _3 = a;
+   _4 = _3 + _Literal (float) 0.0;
+   c_13 = __BIT_INSERT (c_12, _4, 0u);
+   _5 = __BIT_FIELD_REF <float> (c_13, 32u, 32u);
+   _6 = _5 * _Literal (float) 0.0;
+   _7 = __BIT_FIELD_REF <float> (c_13, 32u, 32u);
+   _8 = _7 * _Literal (float) 2.0e+0;
+   _9 = _6 + _8;
+   a = _9;
+   return;
+ 
+ }
+ 
+ 
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/vect/bb-slp-pr126936.c gcc-17-20260823/gcc/testsuite/gcc.dg/vect/bb-slp-pr126936.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/vect/bb-slp-pr126936.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.dg/vect/bb-slp-pr126936.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,142 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-fgimple" } */
+ 
+ void foo(int);
+ 
+ int *c;
+ char d;
+ 
+ void __GIMPLE (ssa,guessed_local(63136016),startwith("slp"))
+ fn1 ()
+ {
+   int * _1;
+   int _2;
+   char _9;
+   int _12;
+   int _17;
+   int _32;
+   unsigned int _33;
+   int _35;
+   int _36;
+   unsigned int _37;
+   unsigned int _38;
+   int _39;
+   unsigned int _47;
+   int _48;
+   int * _49;
+   int * _54;
+   int _55;
+   unsigned int _56;
+   unsigned int _57;
+   int _58;
+   int _59;
+   int * _70;
+   int _71;
+   unsigned int _72;
+   unsigned int _73;
+   int _74;
+   int _75;
+   int * _86;
+   int _87;
+   unsigned int _88;
+   unsigned int _89;
+   int _90;
+   int _91;
+   int * _102;
+   int _103;
+   unsigned int _104;
+   unsigned int _105;
+   int _106;
+   int _107;
+   int * _118;
+   int _119;
+   unsigned int _120;
+   unsigned int _121;
+   int _122;
+   int _123;
+   unsigned int _136;
+   unsigned int _137;
+   int _138;
+   int _139;
+   unsigned int _152;
+   unsigned int _153;
+   int _154;
+   int _155;
+   int _171;
+   int _187;
+   int _203;
+   int _219;
+   int _235;
+   int _251;
+ 
+   __BB(2,guessed_local(63136016)):
+   _1 = c;
+   _2 = __MEM <int> (_1 + _Literal (int *) 56);
+   foo (_2);
+   _39 = __MEM <int> (_1);
+   _38 = (unsigned int) _39;
+   _37 = _38 % 3u;
+   _36 = (int) _37;
+   _35 = _36 & _39;
+   __MEM <int> (_1) = _35;
+   _49 = _1 + 8ul;
+   _48 = __MEM <int> (_49);
+   _47 = (unsigned int) _48;
+   _33 = _47 % 3u;
+   _32 = (int) _33;
+   _17 = _32 & _35;
+   __MEM <int> (_1) = _17;
+   _54 = _1 + 16ul;
+   _55 = __MEM <int> (_54);
+   _56 = (unsigned int) _55;
+   _57 = _56 % 3u;
+   _58 = (int) _57;
+   _59 = _17 & _58;
+   __MEM <int> (_1) = _59;
+   _70 = _1 + 24ul;
+   _71 = __MEM <int> (_70);
+   _72 = (unsigned int) _71;
+   _73 = _72 % 3u;
+   _74 = (int) _73;
+   _75 = _59 & _74;
+   __MEM <int> (_1) = _75;
+   _86 = _1 + 32ul;
+   _87 = __MEM <int> (_86);
+   _88 = (unsigned int) _87;
+   _89 = _88 % 3u;
+   _90 = (int) _89;
+   _91 = _75 & _90;
+   __MEM <int> (_1) = _91;
+   _102 = _1 + 40ul;
+   _103 = __MEM <int> (_102);
+   _104 = (unsigned int) _103;
+   _105 = _104 % 3u;
+   _106 = (int) _105;
+   _107 = _91 & _106;
+   __MEM <int> (_1) = _107;
+   _118 = _1 + 48ul;
+   _119 = __MEM <int> (_118);
+   _120 = (unsigned int) _119;
+   _121 = _120 % 3u;
+   _122 = (int) _121;
+   _123 = _107 & _122;
+   _136 = (unsigned int) _2;
+   _137 = _136 % 3u;
+   _138 = (int) _137;
+   _139 = _123 & _138;
+   _152 = (unsigned int) _139;
+   _153 = _152 % 3u;
+   _154 = (int) _153;
+   _155 = _139 & _154;
+   _171 = _32 & _155;
+   _187 = _58 & _171;
+   _203 = _74 & _187;
+   _219 = _90 & _203;
+   _235 = _106 & _219;
+   _251 = _122 & _235;
+   _12 = _138 & _251;
+   __MEM <int> (_1) = _12;
+   _9 = (char) _137;
+   d = _9;
+   return;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c gcc-17-20260823/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c
*** gcc-17-20260816/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.dg/warn-strnlen-no-nul.c	Sun Aug 23 22:32:15 2026
*************** T (v0 ? b[3] : "", bsz);
*** 147,160 ****
     the strnlen calls are safe because the reads are bounded by
     the length of the constant arguments.  Most of the calls are
     not diagnosed anymore as a result of the fix for PR 103215.  */
! T (v0 ? "" : b[0], bsz + 1);      /* { dg-warning "bound 6 exceeds source size 5" } */
  T (v0 ? "" : b[1], bsz + 1);
  T (v0 ? "" : b[2], bsz + 1);
! T (v0 ? "" : b[3], bsz + 1);
! T (v0 ? b[0] : "", bsz + 1);      /* { dg-warning "bound 6 exceeds source size 5" } */
  T (v0 ? b[1] : "", bsz + 1);
  T (v0 ? b[2] : "", bsz + 1);
! T (v0 ? b[3] : "", bsz + 1);
  
  T (v0 ? "" : b[i0], bsz);
  T (v0 ? "" : b[i1], bsz);
--- 147,160 ----
     the strnlen calls are safe because the reads are bounded by
     the length of the constant arguments.  Most of the calls are
     not diagnosed anymore as a result of the fix for PR 103215.  */
! T (v0 ? "" : b[0], bsz + 1);
  T (v0 ? "" : b[1], bsz + 1);
  T (v0 ? "" : b[2], bsz + 1);
! T (v0 ? "" : b[3], bsz + 1);      /* { dg-warning "unterminated" } */
! T (v0 ? b[0] : "", bsz + 1);
  T (v0 ? b[1] : "", bsz + 1);
  T (v0 ? b[2] : "", bsz + 1);
! T (v0 ? b[3] : "", bsz + 1);      /* { dg-warning "unterminated" } */
  
  T (v0 ? "" : b[i0], bsz);
  T (v0 ? "" : b[i1], bsz);
*************** T (v0 ? b[i3] : "", bsz);
*** 168,178 ****
  T (v0 ? "" : b[i0], bsz + 1);
  T (v0 ? "" : b[i1], bsz + 1);
  T (v0 ? "" : b[i2], bsz + 1);
! T (v0 ? "" : b[i3], bsz + 1);
  T (v0 ? b[i0] : "", bsz + 1);
  T (v0 ? b[i1] : "", bsz + 1);
  T (v0 ? b[i2] : "", bsz + 1);
! T (v0 ? b[i3] : "", bsz + 1);
  
  T (v0 ? "1234" : b[3], bsz);
  T (v0 ? "1234" : b[i3], bsz);
--- 168,178 ----
  T (v0 ? "" : b[i0], bsz + 1);
  T (v0 ? "" : b[i1], bsz + 1);
  T (v0 ? "" : b[i2], bsz + 1);
! T (v0 ? "" : b[i3], bsz + 1);     /* { dg-warning "unterminated" } */
  T (v0 ? b[i0] : "", bsz + 1);
  T (v0 ? b[i1] : "", bsz + 1);
  T (v0 ? b[i2] : "", bsz + 1);
! T (v0 ? b[i3] : "", bsz + 1);     /* { dg-warning "unterminated" } */
  
  T (v0 ? "1234" : b[3], bsz);
  T (v0 ? "1234" : b[i3], bsz);
*************** T (v0 ? b[0] : b[2], bsz);
*** 184,200 ****
  T (v0 ? b[2] : b[3], bsz);
  T (v0 ? b[3] : b[2], bsz);
  
! T (v0 ? "1234" : b[3], bsz + 1);
! T (v0 ? "1234" : b[i3], bsz + 1);
! T (v0 ? b[3] : "1234", bsz + 1);
! T (v0 ? b[i3] : "1234", bsz + 1);
  
  /* That the following are not diagnosed is a bug/limitation resulting from
     the fix for PR 103215.  */
! T (v0 ? a : b[3], bsz + 1);       /* { dg-warning "bound 6 exceeds source size 5" "pr103215" { xfail *-*-* } } */
! T (v0 ? b[0] : b[2], bsz + 1);    /* { dg-warning "bound 6 exceeds source size 5" "pr103215" { xfail *-*-* } } */
! T (v0 ? b[2] : b[3], bsz + 1);    /* { dg-warning "bound 6 exceeds source size 5" "pr103215" { xfail *-*-* } } */
! T (v0 ? b[3] : b[2], bsz + 1);    /* { dg-warning "bound 6 exceeds source size 5" "pr103215" { xfail *-*-* } } */
  
  struct A { char a[5], b[5]; };
  
--- 184,201 ----
  T (v0 ? b[2] : b[3], bsz);
  T (v0 ? b[3] : b[2], bsz);
  
! /* New warnings being thrown after PR86937.  */
! T (v0 ? "1234" : b[3], bsz + 1);     /* { dg-warning "unterminated" } */
! T (v0 ? "1234" : b[i3], bsz + 1);    /* { dg-warning "unterminated" } */
! T (v0 ? b[3] : "1234", bsz + 1);     /* { dg-warning "unterminated" } */
! T (v0 ? b[i3] : "1234", bsz + 1);    /* { dg-warning "unterminated" } */
  
  /* That the following are not diagnosed is a bug/limitation resulting from
     the fix for PR 103215.  */
! T (v0 ? a : b[3], bsz + 1);
! T (v0 ? b[0] : b[2], bsz + 1);
! T (v0 ? b[2] : b[3], bsz + 1);    /* { dg-warning "unterminated" } */
! T (v0 ? b[3] : b[2], bsz + 1);    /* { dg-warning "unterminated" } */
  
  struct A { char a[5], b[5]; };
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/cmpdi-neg-1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/cmpdi-neg-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/cmpdi-neg-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/cmpdi-neg-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ /* A 64-bit comparison against zero whose result is negated has to stay in
+    the general registers.  Before, only the vector alternative accepted the
+    zero, so the value was moved to and from a vector register.  */
+ 
+ /*
+ ** f1:
+ **	cmp	x0, 0
+ **	csetm	x0, eq
+ **	ret
+ */
+ long
+ f1 (long x)
+ {
+   return -(long) (x == 0);
+ }
+ 
+ /*
+ ** f2:
+ **	cmp	x0, 0
+ **	csetm	x0, ne
+ **	ret
+ */
+ long
+ f2 (long x)
+ {
+   return -(long) (x != 0);
+ }
+ 
+ /*
+ ** f3:
+ **	cmp	x0, 0
+ **	csetm	x0, le
+ **	ret
+ */
+ long
+ f3 (long x)
+ {
+   return -(long) (x <= 0);
+ }
+ 
+ /*
+ ** f4:
+ **	cmp	x0, x1
+ **	csetm	x0, eq
+ **	ret
+ */
+ long
+ f4 (long x, long y)
+ {
+   return -(long) (x == y);
+ }
+ 
+ /* { dg-final { scan-assembler-not "\\tfmov\\t" } } */
+ /* { dg-final { scan-assembler-not "\\tcmeq\\t" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/long_mul.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/long_mul.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/long_mul.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/long_mul.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,100 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* 64-bit ladder pattern for high part.  */
+ uint64_t mulh_ladder (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t t0 = y_lo * x_lo;
+   uint64_t t1 = y_lo * x_hi;
+   uint64_t t2 = y_hi * x_lo;
+   uint64_t t3 = y_hi * x_hi;
+   uint64_t t0_hi = t0 >> 32;
+   uint64_t u0 = t0_hi + t1;
+   uint64_t u0_lo = u0 & 0xFFFFFFFF;
+   uint64_t u0_hi = u0 >> 32;
+   uint64_t u1 = u0_lo + t2;
+   uint64_t u1_hi = u1 >> 32;
+   uint64_t u2 = u0_hi + t3;
+   return u2 + u1_hi;
+ }
+ 
+ /* 64-bit carry pattern for high part.  */
+ uint64_t mulh_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = cross_sum < y_lo_x_hi;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t interm = cross_sum_hi + y_hi_x_hi;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* 32-bit ladder pattern for high part.  */
+ uint32_t mulh_ladder_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = y_hi * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_lo = u0 & 0xFFFF;
+   uint32_t u0_hi = u0 >> 16;
+   uint32_t u1 = u0_lo + t2;
+   uint32_t u1_hi = u1 >> 16;
+   uint32_t u2 = u0_hi + t3;
+   return u2 + u1_hi;
+ }
+ 
+ /* 32-bit carry pattern for high part.  */
+ uint32_t mulh_carry_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo_x_hi = y_lo * x_hi;
+   uint32_t y_hi_x_hi = y_hi * x_hi;
+   uint32_t y_hi_x_lo = y_hi * x_lo;
+   uint32_t y_lo_x_lo = y_lo * x_lo;
+   uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint32_t carry = (uint32_t) carry_out << 16;
+   uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+   uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+   uint32_t cross_sum_hi = cross_sum >> 16;
+   uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint32_t interm = cross_sum_hi + y_hi_x_hi;
+   uint32_t low_accum_hi = low_accum >> 16;
+   uint32_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* 64-bit patterns should emit umulh.  */
+ /* { dg-final { scan-assembler-times "umulh\t" 2 } } */
+ /* 32-bit patterns should emit umull (32x32->64 widening multiply).  */
+ /* { dg-final { scan-assembler-times "umull\t" 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/pr126597.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/pr126597.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/pr126597.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/pr126597.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do run } */
+ /* { dg-options "-O0" } */
+ 
+ typedef int v4si __attribute__ ((vector_size (16)));
+ 
+ __attribute__((noipa)) v4si
+ f (v4si x)
+ {
+   const v4si mask = { 4, 1, 2, 3 };
+   return __builtin_shuffle (x, (v4si) { 0, 0, 0, 0 }, mask);
+ }
+ 
+ int
+ main (void)
+ {
+   v4si x = { 1, 2, 3, 4 };
+   v4si r = f (x);
+   if (r[0] != 0 || r[1] != 2 || r[2] != 3 || r[3] != 4)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c	Sun Aug 23 22:32:15 2026
***************
*** 231,236 ****
--- 231,243 ----
  #ifndef __ARM_FEATURE_SME2p2
  #error Foo
  #endif
+ #pragma GCC target "+nothing+sve2+sme-mop4"
+ #ifndef __ARM_FEATURE_SME_MOP4
+ #error "__ARM_FEATURE_SME_MOP4 not defined"
+ #endif
+ #ifndef __ARM_FEATURE_SME2
+ #error "__ARM_FEATURE_SME2 not defined"
+ #endif
  
  #pragma GCC target "branch-protection=standard"
  #ifndef __ARM_FEATURE_BTI_DEFAULT
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/prefetch-extend-1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/prefetch-extend-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/prefetch-extend-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/prefetch-extend-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,20 ----
+ /* A prefetch reaches memory through an address that PRFM can hold in an
+    extended-register form, just like a load of the same address does.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ 
+ void
+ pf_uxtw (const unsigned char *b, unsigned int i)
+ {
+   __builtin_prefetch (b + i, 0, 3);
+ }
+ 
+ void
+ pf_sxtw (const unsigned char *b, int i)
+ {
+   __builtin_prefetch (b + i, 0, 3);
+ }
+ 
+ /* { dg-final { scan-assembler-times {prfm\tPLDL1KEEP, \[x[0-9]+, w[0-9]+, uxtw\]} 1 } } */
+ /* { dg-final { scan-assembler-times {prfm\tPLDL1KEEP, \[x[0-9]+, w[0-9]+, sxtw\]} 1 } } */
+ /* { dg-final { scan-assembler-not {add\tx[0-9]+, x[0-9]+, w[0-9]+, [us]xtw\n} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme/acle-asm/test_sme_acle.h	Sun Aug 23 22:32:15 2026
***************
*** 68,74 ****
  #define TEST_DUAL_ZA(NAME, TYPE1, TYPE2, CODE1, CODE2)		\
    PROTO (NAME, void, (TYPE1 z0, TYPE1 z1, TYPE1 z2, TYPE1 z3,	\
  		      TYPE2 z4, TYPE2 z5, TYPE2 z6, TYPE2 z7,	\
! 		      svbool_t p0, svbool_t p1))		\
    {								\
      INVOKE (CODE1, CODE2);					\
    }
--- 68,74 ----
  #define TEST_DUAL_ZA(NAME, TYPE1, TYPE2, CODE1, CODE2)		\
    PROTO (NAME, void, (TYPE1 z0, TYPE1 z1, TYPE1 z2, TYPE1 z3,	\
  		      TYPE2 z4, TYPE2 z5, TYPE2 z6, TYPE2 z7,	\
! 		      svbool_t p0, svbool_t p1, fpm_t fpm0))	\
    {								\
      INVOKE (CODE1, CODE2);					\
    }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_bf16_bf16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-b16b16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_bf16_bf16_0, svbfloat16_t,
+ 		 svmop4a_1x1_za16_bf16_bf16 (0, z0, z1),
+ 		 svmop4a_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4a	za1\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_bf16_bf16_1, svbfloat16_t,
+ 		 svmop4a_1x1_za16_bf16_bf16 (1, z0, z1),
+ 		 svmop4a_za16 (1, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_bf16_bf16_0, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4a_1x2_za16_bf16_bf16 (0, z0, z4),
+ 	      svmop4a_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4a	za1\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_bf16_bf16_1, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4a_1x2_za16_bf16_bf16 (1, z0, z4),
+ 	      svmop4a_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_bf16_bf16_0, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4a_2x1_za16_bf16_bf16 (0, z0, z4),
+ 	      svmop4a_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4a	za1\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_bf16_bf16_1, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4a_2x1_za16_bf16_bf16 (1, z0, z4),
+ 	      svmop4a_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_bf16_bf16_0, svbfloat16x2_t,
+ 		 svmop4a_2x2_za16_bf16_bf16 (0, z0, z1),
+ 		 svmop4a_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4a	za1\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_bf16_bf16_1, svbfloat16x2_t,
+ 		 svmop4a_2x2_za16_bf16_bf16 (1, z0, z1),
+ 		 svmop4a_za16 (1, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_f16_f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f16f16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za16_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_f16_f16_0, svfloat16_t,
+ 		 svmop4a_1x1_za16_f16_f16 (0, z0, z1),
+ 		 svmop4a_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za16_f16_f16_1:
+ **	...
+ **	fmop4a	za1\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_f16_f16_1, svfloat16_t,
+ 		 svmop4a_1x1_za16_f16_f16 (1, z0, z1),
+ 		 svmop4a_za16 (1, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za16_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_f16_f16_0, svfloat16_t, svfloat16x2_t,
+ 	      svmop4a_1x2_za16_f16_f16 (0, z0, z4),
+ 	      svmop4a_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za16_f16_f16_1:
+ **	...
+ **	fmop4a	za1\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_f16_f16_1, svfloat16_t, svfloat16x2_t,
+ 	      svmop4a_1x2_za16_f16_f16 (1, z0, z4),
+ 	      svmop4a_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za16_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_f16_f16_0, svfloat16x2_t, svfloat16_t,
+ 	      svmop4a_2x1_za16_f16_f16 (0, z0, z4),
+ 	      svmop4a_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za16_f16_f16_1:
+ **	...
+ **	fmop4a	za1\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_f16_f16_1, svfloat16x2_t, svfloat16_t,
+ 	      svmop4a_2x1_za16_f16_f16 (1, z0, z4),
+ 	      svmop4a_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za16_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_f16_f16_0, svfloat16x2_t,
+ 		 svmop4a_2x2_za16_f16_f16 (0, z0, z1),
+ 		 svmop4a_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za16_f16_f16_1:
+ **	...
+ **	fmop4a	za1\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_f16_f16_1, svfloat16x2_t,
+ 		 svmop4a_2x2_za16_f16_f16 (1, z0, z1),
+ 		 svmop4a_za16 (1, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za16_mf8_mf8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f8f16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za16_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.h, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_mf8_mf8_0, svmfloat8_t,
+ 		 svmop4a_1x1_za16_mf8_mf8_fpm (0, z0, z1, fpm0),
+ 		 svmop4a_za16_fpm (0, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_1x1_za16_mf8_mf8_1:
+ **	...
+ **	fmop4a	za1\.h, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za16_mf8_mf8_1, svmfloat8_t,
+ 		 svmop4a_1x1_za16_mf8_mf8_fpm (1, z0, z1, fpm0),
+ 		 svmop4a_za16_fpm (1, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_1x2_za16_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.h, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_mf8_mf8_0, svmfloat8_t, svmfloat8x2_t,
+ 		 svmop4a_1x2_za16_mf8_mf8_fpm (0, z0, z4, fpm0),
+ 		 svmop4a_za16_fpm (0, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_1x2_za16_mf8_mf8_1:
+ **	...
+ **	fmop4a	za1\.h, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za16_mf8_mf8_1, svmfloat8_t, svmfloat8x2_t,
+ 		 svmop4a_1x2_za16_mf8_mf8_fpm (1, z0, z4, fpm0),
+ 		 svmop4a_za16_fpm (1, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x1_za16_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.h, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_mf8_mf8_0, svmfloat8x2_t, svmfloat8_t,
+ 		 svmop4a_2x1_za16_mf8_mf8_fpm (0, z0, z4, fpm0),
+ 		 svmop4a_za16_fpm (0, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x1_za16_mf8_mf8_1:
+ **	...
+ **	fmop4a	za1\.h, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za16_mf8_mf8_1, svmfloat8x2_t, svmfloat8_t,
+ 		 svmop4a_2x1_za16_mf8_mf8_fpm (1, z0, z4, fpm0),
+ 		 svmop4a_za16_fpm (1, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x2_za16_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.h, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_mf8_mf8_0, svmfloat8x2_t,
+ 		 svmop4a_2x2_za16_mf8_mf8_fpm (0, z0, z1, fpm0),
+ 		 svmop4a_za16_fpm (0, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_2x2_za16_mf8_mf8_1:
+ **	...
+ **	fmop4a	za1\.h, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za16_mf8_mf8_1, svmfloat8x2_t,
+ 		 svmop4a_2x2_za16_mf8_mf8_fpm (1, z0, z1, fpm0),
+ 		 svmop4a_za16_fpm (1, z0, z1, fpm0));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_bf16_bf16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-b16b16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_bf16_bf16_0, svbfloat16_t,
+ 		 svmop4a_1x1_za32_bf16_bf16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4a	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_bf16_bf16_3, svbfloat16_t,
+ 		 svmop4a_1x1_za32_bf16_bf16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_bf16_bf16_0, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4a_1x2_za32_bf16_bf16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4a	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_bf16_bf16_3, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4a_1x2_za32_bf16_bf16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_bf16_bf16_0, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4a_2x1_za32_bf16_bf16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4a	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_bf16_bf16_3, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4a_2x1_za32_bf16_bf16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4a	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_bf16_bf16_0, svbfloat16x2_t,
+ 		 svmop4a_2x2_za32_bf16_bf16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4a	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_bf16_bf16_3, svbfloat16x2_t,
+ 		 svmop4a_2x2_za32_bf16_bf16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f16_f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f16f16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_f16_f16_0, svfloat16_t,
+ 		 svmop4a_1x1_za32_f16_f16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_f16_f16_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_f16_f16_3, svfloat16_t,
+ 		 svmop4a_1x1_za32_f16_f16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_f16_f16_0, svfloat16_t, svfloat16x2_t,
+ 	      svmop4a_1x2_za32_f16_f16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_f16_f16_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_f16_f16_3, svfloat16_t, svfloat16x2_t,
+ 	      svmop4a_1x2_za32_f16_f16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_f16_f16_0, svfloat16x2_t, svfloat16_t,
+ 	      svmop4a_2x1_za32_f16_f16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_f16_f16_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_f16_f16_3, svfloat16x2_t, svfloat16_t,
+ 	      svmop4a_2x1_za32_f16_f16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_f16_f16_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_f16_f16_0, svfloat16x2_t,
+ 		 svmop4a_2x2_za32_f16_f16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_f16_f16_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_f16_f16_3, svfloat16x2_t,
+ 		 svmop4a_2x2_za32_f16_f16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_f32_f32.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_f32_f32_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.s, z30\.s
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_f32_f32_0, svfloat32_t,
+ 		 svmop4a_1x1_za32_f32_f32 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_f32_f32_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.s, z30\.s
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_f32_f32_3, svfloat32_t,
+ 		 svmop4a_1x1_za32_f32_f32 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_f32_f32_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.s, {z30\.s - z31\.s}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_f32_f32_0, svfloat32_t, svfloat32x2_t,
+ 	      svmop4a_1x2_za32_f32_f32 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_f32_f32_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.s, {z30\.s - z31\.s}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_f32_f32_3, svfloat32_t, svfloat32x2_t,
+ 	      svmop4a_1x2_za32_f32_f32 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_f32_f32_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.s - z1\.s}, z30\.s
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_f32_f32_0, svfloat32x2_t, svfloat32_t,
+ 	      svmop4a_2x1_za32_f32_f32 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_f32_f32_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.s - z1\.s}, z30\.s
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_f32_f32_3, svfloat32x2_t, svfloat32_t,
+ 	      svmop4a_2x1_za32_f32_f32 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_f32_f32_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.s - z1\.s}, {z30\.s - z31\.s}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_f32_f32_0, svfloat32x2_t,
+ 		 svmop4a_2x2_za32_f32_f32 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_f32_f32_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.s - z1\.s}, {z30\.s - z31\.s}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_f32_f32_3, svfloat32x2_t,
+ 		 svmop4a_2x2_za32_f32_f32 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_mf8_mf8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f8f32"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_mf8_mf8_0, svmfloat8_t,
+ 		 svmop4a_1x1_za32_mf8_mf8_fpm (0, z0, z1, fpm0),
+ 		 svmop4a_za32_fpm (0, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_1x1_za32_mf8_mf8_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_mf8_mf8_3, svmfloat8_t,
+ 		 svmop4a_1x1_za32_mf8_mf8_fpm (3, z0, z1, fpm0),
+ 		 svmop4a_za32_fpm (3, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_1x2_za32_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_mf8_mf8_0, svmfloat8_t, svmfloat8x2_t,
+ 		 svmop4a_1x2_za32_mf8_mf8_fpm (0, z0, z4, fpm0),
+ 		 svmop4a_za32_fpm (0, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_1x2_za32_mf8_mf8_3:
+ **	...
+ **	fmop4a	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_mf8_mf8_3, svmfloat8_t, svmfloat8x2_t,
+ 		 svmop4a_1x2_za32_mf8_mf8_fpm (3, z0, z4, fpm0),
+ 		 svmop4a_za32_fpm (3, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x1_za32_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_mf8_mf8_0, svmfloat8x2_t, svmfloat8_t,
+ 		 svmop4a_2x1_za32_mf8_mf8_fpm (0, z0, z4, fpm0),
+ 		 svmop4a_za32_fpm (0, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x1_za32_mf8_mf8_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_mf8_mf8_3, svmfloat8x2_t, svmfloat8_t,
+ 		 svmop4a_2x1_za32_mf8_mf8_fpm (3, z0, z4, fpm0),
+ 		 svmop4a_za32_fpm (3, z0, z4, fpm0));
+ 
+ /*
+ ** mop4a_2x2_za32_mf8_mf8_0:
+ **	...
+ **	fmop4a	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_mf8_mf8_0, svmfloat8x2_t,
+ 		 svmop4a_2x2_za32_mf8_mf8_fpm (0, z0, z1, fpm0),
+ 		 svmop4a_za32_fpm (0, z0, z1, fpm0));
+ 
+ /*
+ ** mop4a_2x2_za32_mf8_mf8_3:
+ **	...
+ **	fmop4a	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_mf8_mf8_3, svmfloat8x2_t,
+ 		 svmop4a_2x2_za32_mf8_mf8_fpm (3, z0, z1, fpm0),
+ 		 svmop4a_za32_fpm (3, z0, z1, fpm0));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_s16_s16_0:
+ **	...
+ **	smop4a	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_s16_s16_0, svint16_t,
+ 		 svmop4a_1x1_za32_s16_s16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_s16_s16_3:
+ **	...
+ **	smop4a	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_s16_s16_3, svint16_t,
+ 		 svmop4a_1x1_za32_s16_s16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_s16_s16_0:
+ **	...
+ **	smop4a	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s16_s16_0, svint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za32_s16_s16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_s16_s16_3:
+ **	...
+ **	smop4a	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s16_s16_3, svint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za32_s16_s16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s16_s16_0:
+ **	...
+ **	smop4a	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s16_s16_0, svint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za32_s16_s16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s16_s16_3:
+ **	...
+ **	smop4a	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s16_s16_3, svint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za32_s16_s16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_s16_s16_0:
+ **	...
+ **	smop4a	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_s16_s16_0, svint16x2_t,
+ 		 svmop4a_2x2_za32_s16_s16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_s16_s16_3:
+ **	...
+ **	smop4a	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_s16_s16_3, svint16x2_t,
+ 		 svmop4a_2x2_za32_s16_s16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_s8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_s8_s8_0:
+ **	...
+ **	smop4a	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_s8_s8_0, svint8_t,
+ 		 svmop4a_1x1_za32_s8_s8 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_s8_s8_3:
+ **	...
+ **	smop4a	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_s8_s8_3, svint8_t,
+ 		 svmop4a_1x1_za32_s8_s8 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_s8_s8_0:
+ **	...
+ **	smop4a	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s8_s8_0, svint8_t, svint8x2_t,
+ 	      svmop4a_1x2_za32_s8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_s8_s8_3:
+ **	...
+ **	smop4a	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s8_s8_3, svint8_t, svint8x2_t,
+ 	      svmop4a_1x2_za32_s8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s8_s8_0:
+ **	...
+ **	smop4a	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s8_s8_0, svint8x2_t, svint8_t,
+ 	      svmop4a_2x1_za32_s8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s8_s8_3:
+ **	...
+ **	smop4a	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s8_s8_3, svint8x2_t, svint8_t,
+ 	      svmop4a_2x1_za32_s8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_s8_s8_0:
+ **	...
+ **	smop4a	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_s8_s8_0, svint8x2_t,
+ 		 svmop4a_2x2_za32_s8_s8 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_s8_s8_3:
+ **	...
+ **	smop4a	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_s8_s8_3, svint8x2_t,
+ 		 svmop4a_2x2_za32_s8_s8 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_s8_u8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_s8_u8_0:
+ **	...
+ **	sumop4a	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za32_s8_u8_0, svint8_t, svuint8_t,
+ 	      svmop4a_1x1_za32_s8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x1_za32_s8_u8_3:
+ **	...
+ **	sumop4a	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za32_s8_u8_3, svint8_t, svuint8_t,
+ 	      svmop4a_1x1_za32_s8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_s8_u8_0:
+ **	...
+ **	sumop4a	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s8_u8_0, svint8_t, svuint8x2_t,
+ 	      svmop4a_1x2_za32_s8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_s8_u8_3:
+ **	...
+ **	sumop4a	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_s8_u8_3, svint8_t, svuint8x2_t,
+ 	      svmop4a_1x2_za32_s8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s8_u8_0:
+ **	...
+ **	sumop4a	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s8_u8_0, svint8x2_t, svuint8_t,
+ 	      svmop4a_2x1_za32_s8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_s8_u8_3:
+ **	...
+ **	sumop4a	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_s8_u8_3, svint8x2_t, svuint8_t,
+ 	      svmop4a_2x1_za32_s8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_s8_u8_0:
+ **	...
+ **	sumop4a	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za32_s8_u8_0, svint8x2_t, svuint8x2_t,
+ 	      svmop4a_2x2_za32_s8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_s8_u8_3:
+ **	...
+ **	sumop4a	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za32_s8_u8_3, svint8x2_t, svuint8x2_t,
+ 	      svmop4a_2x2_za32_s8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_u16_u16_0:
+ **	...
+ **	umop4a	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_u16_u16_0, svuint16_t,
+ 		 svmop4a_1x1_za32_u16_u16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_u16_u16_3:
+ **	...
+ **	umop4a	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_u16_u16_3, svuint16_t,
+ 		 svmop4a_1x1_za32_u16_u16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_u16_u16_0:
+ **	...
+ **	umop4a	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u16_u16_0, svuint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za32_u16_u16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_u16_u16_3:
+ **	...
+ **	umop4a	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u16_u16_3, svuint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za32_u16_u16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u16_u16_0:
+ **	...
+ **	umop4a	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u16_u16_0, svuint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za32_u16_u16 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u16_u16_3:
+ **	...
+ **	umop4a	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u16_u16_3, svuint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za32_u16_u16 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_u16_u16_0:
+ **	...
+ **	umop4a	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_u16_u16_0, svuint16x2_t,
+ 		 svmop4a_2x2_za32_u16_u16 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_u16_u16_3:
+ **	...
+ **	umop4a	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_u16_u16_3, svuint16x2_t,
+ 		 svmop4a_2x2_za32_u16_u16 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_s8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_u8_s8_0:
+ **	...
+ **	usmop4a	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za32_u8_s8_0, svuint8_t, svint8_t,
+ 	      svmop4a_1x1_za32_u8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x1_za32_u8_s8_3:
+ **	...
+ **	usmop4a	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za32_u8_s8_3, svuint8_t, svint8_t,
+ 	      svmop4a_1x1_za32_u8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_u8_s8_0:
+ **	...
+ **	usmop4a	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u8_s8_0, svuint8_t, svint8x2_t,
+ 	      svmop4a_1x2_za32_u8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_u8_s8_3:
+ **	...
+ **	usmop4a	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u8_s8_3, svuint8_t, svint8x2_t,
+ 	      svmop4a_1x2_za32_u8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u8_s8_0:
+ **	...
+ **	usmop4a	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u8_s8_0, svuint8x2_t, svint8_t,
+ 	      svmop4a_2x1_za32_u8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u8_s8_3:
+ **	...
+ **	usmop4a	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u8_s8_3, svuint8x2_t, svint8_t,
+ 	      svmop4a_2x1_za32_u8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_u8_s8_0:
+ **	...
+ **	usmop4a	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za32_u8_s8_0, svuint8x2_t, svint8x2_t,
+ 	      svmop4a_2x2_za32_u8_s8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_u8_s8_3:
+ **	...
+ **	usmop4a	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za32_u8_s8_3, svuint8x2_t, svint8x2_t,
+ 	      svmop4a_2x2_za32_u8_s8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za32_u8_u8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za32_u8_u8_0:
+ **	...
+ **	umop4a	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_u8_u8_0, svuint8_t,
+ 		 svmop4a_1x1_za32_u8_u8 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za32_u8_u8_3:
+ **	...
+ **	umop4a	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za32_u8_u8_3, svuint8_t,
+ 		 svmop4a_1x1_za32_u8_u8 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za32_u8_u8_0:
+ **	...
+ **	umop4a	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u8_u8_0, svuint8_t, svuint8x2_t,
+ 	      svmop4a_1x2_za32_u8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za32_u8_u8_3:
+ **	...
+ **	umop4a	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za32_u8_u8_3, svuint8_t, svuint8x2_t,
+ 	      svmop4a_1x2_za32_u8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u8_u8_0:
+ **	...
+ **	umop4a	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u8_u8_0, svuint8x2_t, svuint8_t,
+ 	      svmop4a_2x1_za32_u8_u8 (0, z0, z4),
+ 	      svmop4a_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za32_u8_u8_3:
+ **	...
+ **	umop4a	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za32_u8_u8_3, svuint8x2_t, svuint8_t,
+ 	      svmop4a_2x1_za32_u8_u8 (3, z0, z4),
+ 	      svmop4a_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za32_u8_u8_0:
+ **	...
+ **	umop4a	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_u8_u8_0, svuint8x2_t,
+ 		 svmop4a_2x2_za32_u8_u8 (0, z0, z1),
+ 		 svmop4a_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za32_u8_u8_3:
+ **	...
+ **	umop4a	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za32_u8_u8_3, svuint8x2_t,
+ 		 svmop4a_2x2_za32_u8_u8 (3, z0, z1),
+ 		 svmop4a_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_f64_f64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f64f64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za64_f64_f64_0:
+ **	...
+ **	fmop4a	za0\.d, z0\.d, z30\.d
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_f64_f64_0, svfloat64_t,
+ 		 svmop4a_1x1_za64_f64_f64 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za64_f64_f64_7:
+ **	...
+ **	fmop4a	za7\.d, z0\.d, z30\.d
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_f64_f64_7, svfloat64_t,
+ 		 svmop4a_1x1_za64_f64_f64 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za64_f64_f64_0:
+ **	...
+ **	fmop4a	za0\.d, z0\.d, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_f64_f64_0, svfloat64_t, svfloat64x2_t,
+ 	      svmop4a_1x2_za64_f64_f64 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_f64_f64_7:
+ **	...
+ **	fmop4a	za7\.d, z0\.d, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_f64_f64_7, svfloat64_t, svfloat64x2_t,
+ 	      svmop4a_1x2_za64_f64_f64 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_f64_f64_0:
+ **	...
+ **	fmop4a	za0\.d, {z0\.d - z1\.d}, z30\.d
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_f64_f64_0, svfloat64x2_t, svfloat64_t,
+ 	      svmop4a_2x1_za64_f64_f64 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_f64_f64_7:
+ **	...
+ **	fmop4a	za7\.d, {z0\.d - z1\.d}, z30\.d
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_f64_f64_7, svfloat64x2_t, svfloat64_t,
+ 	      svmop4a_2x1_za64_f64_f64 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_f64_f64_0:
+ **	...
+ **	fmop4a	za0\.d, {z0\.d - z1\.d}, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_f64_f64_0, svfloat64x2_t,
+ 		 svmop4a_2x2_za64_f64_f64 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za64_f64_f64_7:
+ **	...
+ **	fmop4a	za7\.d, {z0\.d - z1\.d}, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_f64_f64_7, svfloat64x2_t,
+ 		 svmop4a_2x2_za64_f64_f64 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za64_s16_s16_0:
+ **	...
+ **	smop4a	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_s16_s16_0, svint16_t,
+ 		 svmop4a_1x1_za64_s16_s16 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za64_s16_s16_7:
+ **	...
+ **	smop4a	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_s16_s16_7, svint16_t,
+ 		 svmop4a_1x1_za64_s16_s16 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za64_s16_s16_0:
+ **	...
+ **	smop4a	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_s16_s16_0, svint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za64_s16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_s16_s16_7:
+ **	...
+ **	smop4a	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_s16_s16_7, svint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za64_s16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_s16_s16_0:
+ **	...
+ **	smop4a	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_s16_s16_0, svint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za64_s16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_s16_s16_7:
+ **	...
+ **	smop4a	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_s16_s16_7, svint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za64_s16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_s16_s16_0:
+ **	...
+ **	smop4a	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_s16_s16_0, svint16x2_t,
+ 		 svmop4a_2x2_za64_s16_s16 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za64_s16_s16_7:
+ **	...
+ **	smop4a	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_s16_s16_7, svint16x2_t,
+ 		 svmop4a_2x2_za64_s16_s16 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_s16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za64_s16_u16_0:
+ **	...
+ **	sumop4a	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za64_s16_u16_0, svint16_t, svuint16_t,
+ 	      svmop4a_1x1_za64_s16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x1_za64_s16_u16_7:
+ **	...
+ **	sumop4a	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za64_s16_u16_7, svint16_t, svuint16_t,
+ 	      svmop4a_1x1_za64_s16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_s16_u16_0:
+ **	...
+ **	sumop4a	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_s16_u16_0, svint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za64_s16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_s16_u16_7:
+ **	...
+ **	sumop4a	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_s16_u16_7, svint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za64_s16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_s16_u16_0:
+ **	...
+ **	sumop4a	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_s16_u16_0, svint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za64_s16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_s16_u16_7:
+ **	...
+ **	sumop4a	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_s16_u16_7, svint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za64_s16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_s16_u16_0:
+ **	...
+ **	sumop4a	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za64_s16_u16_0, svint16x2_t, svuint16x2_t,
+ 	      svmop4a_2x2_za64_s16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_s16_u16_7:
+ **	...
+ **	sumop4a	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za64_s16_u16_7, svint16x2_t, svuint16x2_t,
+ 	      svmop4a_2x2_za64_s16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za64_u16_s16_0:
+ **	...
+ **	usmop4a	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za64_u16_s16_0, svuint16_t, svint16_t,
+ 	      svmop4a_1x1_za64_u16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x1_za64_u16_s16_7:
+ **	...
+ **	usmop4a	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x1_za64_u16_s16_7, svuint16_t, svint16_t,
+ 	      svmop4a_1x1_za64_u16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_u16_s16_0:
+ **	...
+ **	usmop4a	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_u16_s16_0, svuint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za64_u16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_u16_s16_7:
+ **	...
+ **	usmop4a	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_u16_s16_7, svuint16_t, svint16x2_t,
+ 	      svmop4a_1x2_za64_u16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_u16_s16_0:
+ **	...
+ **	usmop4a	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_u16_s16_0, svuint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za64_u16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_u16_s16_7:
+ **	...
+ **	usmop4a	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_u16_s16_7, svuint16x2_t, svint16_t,
+ 	      svmop4a_2x1_za64_u16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_u16_s16_0:
+ **	...
+ **	usmop4a	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za64_u16_s16_0, svuint16x2_t, svint16x2_t,
+ 	      svmop4a_2x2_za64_u16_s16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_u16_s16_7:
+ **	...
+ **	usmop4a	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x2_za64_u16_s16_7, svuint16x2_t, svint16x2_t,
+ 	      svmop4a_2x2_za64_u16_s16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4a_za64_u16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4a_1x1_za64_u16_u16_0:
+ **	...
+ **	umop4a	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_u16_u16_0, svuint16_t,
+ 		 svmop4a_1x1_za64_u16_u16 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_1x1_za64_u16_u16_7:
+ **	...
+ **	umop4a	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_1x1_za64_u16_u16_7, svuint16_t,
+ 		 svmop4a_1x1_za64_u16_u16 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4a_1x2_za64_u16_u16_0:
+ **	...
+ **	umop4a	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_u16_u16_0, svuint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za64_u16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_1x2_za64_u16_u16_7:
+ **	...
+ **	umop4a	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_1x2_za64_u16_u16_7, svuint16_t, svuint16x2_t,
+ 	      svmop4a_1x2_za64_u16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_u16_u16_0:
+ **	...
+ **	umop4a	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_u16_u16_0, svuint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za64_u16_u16 (0, z0, z4),
+ 	      svmop4a_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4a_2x1_za64_u16_u16_7:
+ **	...
+ **	umop4a	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4a_2x1_za64_u16_u16_7, svuint16x2_t, svuint16_t,
+ 	      svmop4a_2x1_za64_u16_u16 (7, z0, z4),
+ 	      svmop4a_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4a_2x2_za64_u16_u16_0:
+ **	...
+ **	umop4a	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_u16_u16_0, svuint16x2_t,
+ 		 svmop4a_2x2_za64_u16_u16 (0, z0, z1),
+ 		 svmop4a_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4a_2x2_za64_u16_u16_7:
+ **	...
+ **	umop4a	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4a_2x2_za64_u16_u16_7, svuint16x2_t,
+ 		 svmop4a_2x2_za64_u16_u16 (7, z0, z1),
+ 		 svmop4a_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_bf16_bf16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-b16b16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za16_bf16_bf16_0, svbfloat16_t,
+ 		 svmop4s_1x1_za16_bf16_bf16 (0, z0, z1),
+ 		 svmop4s_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4s	za1\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za16_bf16_bf16_1, svbfloat16_t,
+ 		 svmop4s_1x1_za16_bf16_bf16 (1, z0, z1),
+ 		 svmop4s_za16 (1, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za16_bf16_bf16_0, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4s_1x2_za16_bf16_bf16 (0, z0, z4),
+ 	      svmop4s_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4s	za1\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za16_bf16_bf16_1, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4s_1x2_za16_bf16_bf16 (1, z0, z4),
+ 	      svmop4s_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za16_bf16_bf16_0, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4s_2x1_za16_bf16_bf16 (0, z0, z4),
+ 	      svmop4s_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4s	za1\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za16_bf16_bf16_1, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4s_2x1_za16_bf16_bf16 (1, z0, z4),
+ 	      svmop4s_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za16_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za16_bf16_bf16_0, svbfloat16x2_t,
+ 		 svmop4s_2x2_za16_bf16_bf16 (0, z0, z1),
+ 		 svmop4s_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za16_bf16_bf16_1:
+ **	...
+ **	bfmop4s	za1\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za16_bf16_bf16_1, svbfloat16x2_t,
+ 		 svmop4s_2x2_za16_bf16_bf16 (1, z0, z1),
+ 		 svmop4s_za16 (1, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za16_f16_f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f16f16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za16_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za16_f16_f16_0, svfloat16_t,
+ 		 svmop4s_1x1_za16_f16_f16 (0, z0, z1),
+ 		 svmop4s_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za16_f16_f16_1:
+ **	...
+ **	fmop4s	za1\.h, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za16_f16_f16_1, svfloat16_t,
+ 		 svmop4s_1x1_za16_f16_f16 (1, z0, z1),
+ 		 svmop4s_za16 (1, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za16_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za16_f16_f16_0, svfloat16_t, svfloat16x2_t,
+ 	      svmop4s_1x2_za16_f16_f16 (0, z0, z4),
+ 	      svmop4s_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za16_f16_f16_1:
+ **	...
+ **	fmop4s	za1\.h, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za16_f16_f16_1, svfloat16_t, svfloat16x2_t,
+ 	      svmop4s_1x2_za16_f16_f16 (1, z0, z4),
+ 	      svmop4s_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za16_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za16_f16_f16_0, svfloat16x2_t, svfloat16_t,
+ 	      svmop4s_2x1_za16_f16_f16 (0, z0, z4),
+ 	      svmop4s_za16 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za16_f16_f16_1:
+ **	...
+ **	fmop4s	za1\.h, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za16_f16_f16_1, svfloat16x2_t, svfloat16_t,
+ 	      svmop4s_2x1_za16_f16_f16 (1, z0, z4),
+ 	      svmop4s_za16 (1, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za16_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za16_f16_f16_0, svfloat16x2_t,
+ 		 svmop4s_2x2_za16_f16_f16 (0, z0, z1),
+ 		 svmop4s_za16 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za16_f16_f16_1:
+ **	...
+ **	fmop4s	za1\.h, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za16_f16_f16_1, svfloat16x2_t,
+ 		 svmop4s_2x2_za16_f16_f16 (1, z0, z1),
+ 		 svmop4s_za16 (1, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_bf16_bf16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-b16b16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_bf16_bf16_0, svbfloat16_t,
+ 		 svmop4s_1x1_za32_bf16_bf16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4s	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_bf16_bf16_3, svbfloat16_t,
+ 		 svmop4s_1x1_za32_bf16_bf16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_bf16_bf16_0, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4s_1x2_za32_bf16_bf16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4s	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_bf16_bf16_3, svbfloat16_t, svbfloat16x2_t,
+ 	      svmop4s_1x2_za32_bf16_bf16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_bf16_bf16_0, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4s_2x1_za32_bf16_bf16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4s	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_bf16_bf16_3, svbfloat16x2_t, svbfloat16_t,
+ 	      svmop4s_2x1_za32_bf16_bf16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_bf16_bf16_0:
+ **	...
+ **	bfmop4s	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_bf16_bf16_0, svbfloat16x2_t,
+ 		 svmop4s_2x2_za32_bf16_bf16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_bf16_bf16_3:
+ **	...
+ **	bfmop4s	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_bf16_bf16_3, svbfloat16x2_t,
+ 		 svmop4s_2x2_za32_bf16_bf16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_f16_f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f16f16"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_f16_f16_0, svfloat16_t,
+ 		 svmop4s_1x1_za32_f16_f16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_f16_f16_3:
+ **	...
+ **	fmop4s	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_f16_f16_3, svfloat16_t,
+ 		 svmop4s_1x1_za32_f16_f16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_f16_f16_0, svfloat16_t, svfloat16x2_t,
+ 	      svmop4s_1x2_za32_f16_f16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_f16_f16_3:
+ **	...
+ **	fmop4s	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_f16_f16_3, svfloat16_t, svfloat16x2_t,
+ 	      svmop4s_1x2_za32_f16_f16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_f16_f16_0, svfloat16x2_t, svfloat16_t,
+ 	      svmop4s_2x1_za32_f16_f16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_f16_f16_3:
+ **	...
+ **	fmop4s	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_f16_f16_3, svfloat16x2_t, svfloat16_t,
+ 	      svmop4s_2x1_za32_f16_f16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_f16_f16_0:
+ **	...
+ **	fmop4s	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_f16_f16_0, svfloat16x2_t,
+ 		 svmop4s_2x2_za32_f16_f16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_f16_f16_3:
+ **	...
+ **	fmop4s	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_f16_f16_3, svfloat16x2_t,
+ 		 svmop4s_2x2_za32_f16_f16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_s16_s16_0:
+ **	...
+ **	smop4s	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_s16_s16_0, svint16_t,
+ 		 svmop4s_1x1_za32_s16_s16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_s16_s16_3:
+ **	...
+ **	smop4s	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_s16_s16_3, svint16_t,
+ 		 svmop4s_1x1_za32_s16_s16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_s16_s16_0:
+ **	...
+ **	smop4s	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s16_s16_0, svint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za32_s16_s16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_s16_s16_3:
+ **	...
+ **	smop4s	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s16_s16_3, svint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za32_s16_s16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s16_s16_0:
+ **	...
+ **	smop4s	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s16_s16_0, svint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za32_s16_s16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s16_s16_3:
+ **	...
+ **	smop4s	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s16_s16_3, svint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za32_s16_s16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_s16_s16_0:
+ **	...
+ **	smop4s	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_s16_s16_0, svint16x2_t,
+ 		 svmop4s_2x2_za32_s16_s16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_s16_s16_3:
+ **	...
+ **	smop4s	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_s16_s16_3, svint16x2_t,
+ 		 svmop4s_2x2_za32_s16_s16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_s8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_s8_s8_0:
+ **	...
+ **	smop4s	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_s8_s8_0, svint8_t,
+ 		 svmop4s_1x1_za32_s8_s8 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_s8_s8_3:
+ **	...
+ **	smop4s	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_s8_s8_3, svint8_t,
+ 		 svmop4s_1x1_za32_s8_s8 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_s8_s8_0:
+ **	...
+ **	smop4s	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s8_s8_0, svint8_t, svint8x2_t,
+ 	      svmop4s_1x2_za32_s8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_s8_s8_3:
+ **	...
+ **	smop4s	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s8_s8_3, svint8_t, svint8x2_t,
+ 	      svmop4s_1x2_za32_s8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s8_s8_0:
+ **	...
+ **	smop4s	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s8_s8_0, svint8x2_t, svint8_t,
+ 	      svmop4s_2x1_za32_s8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s8_s8_3:
+ **	...
+ **	smop4s	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s8_s8_3, svint8x2_t, svint8_t,
+ 	      svmop4s_2x1_za32_s8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_s8_s8_0:
+ **	...
+ **	smop4s	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_s8_s8_0, svint8x2_t,
+ 		 svmop4s_2x2_za32_s8_s8 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_s8_s8_3:
+ **	...
+ **	smop4s	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_s8_s8_3, svint8x2_t,
+ 		 svmop4s_2x2_za32_s8_s8 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_s8_u8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_s8_u8_0:
+ **	...
+ **	sumop4s	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za32_s8_u8_0, svint8_t, svuint8_t,
+ 	      svmop4s_1x1_za32_s8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x1_za32_s8_u8_3:
+ **	...
+ **	sumop4s	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za32_s8_u8_3, svint8_t, svuint8_t,
+ 	      svmop4s_1x1_za32_s8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_s8_u8_0:
+ **	...
+ **	sumop4s	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s8_u8_0, svint8_t, svuint8x2_t,
+ 	      svmop4s_1x2_za32_s8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_s8_u8_3:
+ **	...
+ **	sumop4s	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_s8_u8_3, svint8_t, svuint8x2_t,
+ 	      svmop4s_1x2_za32_s8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s8_u8_0:
+ **	...
+ **	sumop4s	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s8_u8_0, svint8x2_t, svuint8_t,
+ 	      svmop4s_2x1_za32_s8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_s8_u8_3:
+ **	...
+ **	sumop4s	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_s8_u8_3, svint8x2_t, svuint8_t,
+ 	      svmop4s_2x1_za32_s8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_s8_u8_0:
+ **	...
+ **	sumop4s	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za32_s8_u8_0, svint8x2_t, svuint8x2_t,
+ 	      svmop4s_2x2_za32_s8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_s8_u8_3:
+ **	...
+ **	sumop4s	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za32_s8_u8_3, svint8x2_t, svuint8x2_t,
+ 	      svmop4s_2x2_za32_s8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_u16_u16_0:
+ **	...
+ **	umop4s	za0\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_u16_u16_0, svuint16_t,
+ 		 svmop4s_1x1_za32_u16_u16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_u16_u16_3:
+ **	...
+ **	umop4s	za3\.s, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_u16_u16_3, svuint16_t,
+ 		 svmop4s_1x1_za32_u16_u16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_u16_u16_0:
+ **	...
+ **	umop4s	za0\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u16_u16_0, svuint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za32_u16_u16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_u16_u16_3:
+ **	...
+ **	umop4s	za3\.s, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u16_u16_3, svuint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za32_u16_u16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u16_u16_0:
+ **	...
+ **	umop4s	za0\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u16_u16_0, svuint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za32_u16_u16 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u16_u16_3:
+ **	...
+ **	umop4s	za3\.s, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u16_u16_3, svuint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za32_u16_u16 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_u16_u16_0:
+ **	...
+ **	umop4s	za0\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_u16_u16_0, svuint16x2_t,
+ 		 svmop4s_2x2_za32_u16_u16 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_u16_u16_3:
+ **	...
+ **	umop4s	za3\.s, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_u16_u16_3, svuint16x2_t,
+ 		 svmop4s_2x2_za32_u16_u16 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_s8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } }  */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_u8_s8_0:
+ **	...
+ **	usmop4s	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za32_u8_s8_0, svuint8_t, svint8_t,
+ 	      svmop4s_1x1_za32_u8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x1_za32_u8_s8_3:
+ **	...
+ **	usmop4s	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za32_u8_s8_3, svuint8_t, svint8_t,
+ 	      svmop4s_1x1_za32_u8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_u8_s8_0:
+ **	...
+ **	usmop4s	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u8_s8_0, svuint8_t, svint8x2_t,
+ 	      svmop4s_1x2_za32_u8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_u8_s8_3:
+ **	...
+ **	usmop4s	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u8_s8_3, svuint8_t, svint8x2_t,
+ 	      svmop4s_1x2_za32_u8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u8_s8_0:
+ **	...
+ **	usmop4s	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u8_s8_0, svuint8x2_t, svint8_t,
+ 	      svmop4s_2x1_za32_u8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u8_s8_3:
+ **	...
+ **	usmop4s	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u8_s8_3, svuint8x2_t, svint8_t,
+ 	      svmop4s_2x1_za32_u8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_u8_s8_0:
+ **	...
+ **	usmop4s	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za32_u8_s8_0, svuint8x2_t, svint8x2_t,
+ 	      svmop4s_2x2_za32_u8_s8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_u8_s8_3:
+ **	...
+ **	usmop4s	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za32_u8_s8_3, svuint8x2_t, svint8x2_t,
+ 	      svmop4s_2x2_za32_u8_s8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za32_u8_u8.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za32_u8_u8_0:
+ **	...
+ **	umop4s	za0\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_u8_u8_0, svuint8_t,
+ 		 svmop4s_1x1_za32_u8_u8 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za32_u8_u8_3:
+ **	...
+ **	umop4s	za3\.s, z0\.b, z30\.b
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za32_u8_u8_3, svuint8_t,
+ 		 svmop4s_1x1_za32_u8_u8 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za32_u8_u8_0:
+ **	...
+ **	umop4s	za0\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u8_u8_0, svuint8_t, svuint8x2_t,
+ 	      svmop4s_1x2_za32_u8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za32_u8_u8_3:
+ **	...
+ **	umop4s	za3\.s, z0\.b, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za32_u8_u8_3, svuint8_t, svuint8x2_t,
+ 	      svmop4s_1x2_za32_u8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u8_u8_0:
+ **	...
+ **	umop4s	za0\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u8_u8_0, svuint8x2_t, svuint8_t,
+ 	      svmop4s_2x1_za32_u8_u8 (0, z0, z4),
+ 	      svmop4s_za32 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za32_u8_u8_3:
+ **	...
+ **	umop4s	za3\.s, {z0\.b - z1\.b}, z30\.b
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za32_u8_u8_3, svuint8x2_t, svuint8_t,
+ 	      svmop4s_2x1_za32_u8_u8 (3, z0, z4),
+ 	      svmop4s_za32 (3, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za32_u8_u8_0:
+ **	...
+ **	umop4s	za0\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_u8_u8_0, svuint8x2_t,
+ 		 svmop4s_2x2_za32_u8_u8 (0, z0, z1),
+ 		 svmop4s_za32 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za32_u8_u8_3:
+ **	...
+ **	umop4s	za3\.s, {z0\.b - z1\.b}, {z30\.b - z31\.b}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za32_u8_u8_3, svuint8x2_t,
+ 		 svmop4s_2x2_za32_u8_u8 (3, z0, z1),
+ 		 svmop4s_za32 (3, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_f64_f64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f64f64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za64_f64_f64_0:
+ **	...
+ **	fmop4s	za0\.d, z0\.d, z30\.d
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_f64_f64_0, svfloat64_t,
+ 		 svmop4s_1x1_za64_f64_f64 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za64_f64_f64_7:
+ **	...
+ **	fmop4s	za7\.d, z0\.d, z30\.d
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_f64_f64_7, svfloat64_t,
+ 		 svmop4s_1x1_za64_f64_f64 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za64_f64_f64_0:
+ **	...
+ **	fmop4s	za0\.d, z0\.d, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_f64_f64_0, svfloat64_t, svfloat64x2_t,
+ 	      svmop4s_1x2_za64_f64_f64 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_f64_f64_7:
+ **	...
+ **	fmop4s	za7\.d, z0\.d, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_f64_f64_7, svfloat64_t, svfloat64x2_t,
+ 	      svmop4s_1x2_za64_f64_f64 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_f64_f64_0:
+ **	...
+ **	fmop4s	za0\.d, {z0\.d - z1\.d}, z30\.d
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_f64_f64_0, svfloat64x2_t, svfloat64_t,
+ 	      svmop4s_2x1_za64_f64_f64 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_f64_f64_7:
+ **	...
+ **	fmop4s	za7\.d, {z0\.d - z1\.d}, z30\.d
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_f64_f64_7, svfloat64x2_t, svfloat64_t,
+ 	      svmop4s_2x1_za64_f64_f64 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_f64_f64_0:
+ **	...
+ **	fmop4s	za0\.d, {z0\.d - z1\.d}, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_f64_f64_0, svfloat64x2_t,
+ 		 svmop4s_2x2_za64_f64_f64 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za64_f64_f64_7:
+ **	...
+ **	fmop4s	za7\.d, {z0\.d - z1\.d}, {z30\.d - z31\.d}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_f64_f64_7, svfloat64x2_t,
+ 		 svmop4s_2x2_za64_f64_f64 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za64_s16_s16_0:
+ **	...
+ **	smop4s	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_s16_s16_0, svint16_t,
+ 		 svmop4s_1x1_za64_s16_s16 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za64_s16_s16_7:
+ **	...
+ **	smop4s	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_s16_s16_7, svint16_t,
+ 		 svmop4s_1x1_za64_s16_s16 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za64_s16_s16_0:
+ **	...
+ **	smop4s	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_s16_s16_0, svint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za64_s16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_s16_s16_7:
+ **	...
+ **	smop4s	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_s16_s16_7, svint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za64_s16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_s16_s16_0:
+ **	...
+ **	smop4s	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_s16_s16_0, svint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za64_s16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_s16_s16_7:
+ **	...
+ **	smop4s	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_s16_s16_7, svint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za64_s16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_s16_s16_0:
+ **	...
+ **	smop4s	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_s16_s16_0, svint16x2_t,
+ 		 svmop4s_2x2_za64_s16_s16 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za64_s16_s16_7:
+ **	...
+ **	smop4s	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_s16_s16_7, svint16x2_t,
+ 		 svmop4s_2x2_za64_s16_s16 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_s16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za64_s16_u16_0:
+ **	...
+ **	sumop4s	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za64_s16_u16_0, svint16_t, svuint16_t,
+ 	      svmop4s_1x1_za64_s16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x1_za64_s16_u16_7:
+ **	...
+ **	sumop4s	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za64_s16_u16_7, svint16_t, svuint16_t,
+ 	      svmop4s_1x1_za64_s16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_s16_u16_0:
+ **	...
+ **	sumop4s	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_s16_u16_0, svint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za64_s16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_s16_u16_7:
+ **	...
+ **	sumop4s	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_s16_u16_7, svint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za64_s16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_s16_u16_0:
+ **	...
+ **	sumop4s	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_s16_u16_0, svint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za64_s16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_s16_u16_7:
+ **	...
+ **	sumop4s	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_s16_u16_7, svint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za64_s16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_s16_u16_0:
+ **	...
+ **	sumop4s	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za64_s16_u16_0, svint16x2_t, svuint16x2_t,
+ 	      svmop4s_2x2_za64_s16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_s16_u16_7:
+ **	...
+ **	sumop4s	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za64_s16_u16_7, svint16x2_t, svuint16x2_t,
+ 	      svmop4s_2x2_za64_s16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za64_u16_s16_0:
+ **	...
+ **	usmop4s	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za64_u16_s16_0, svuint16_t, svint16_t,
+ 	      svmop4s_1x1_za64_u16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x1_za64_u16_s16_7:
+ **	...
+ **	usmop4s	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x1_za64_u16_s16_7, svuint16_t, svint16_t,
+ 	      svmop4s_1x1_za64_u16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_u16_s16_0:
+ **	...
+ **	usmop4s	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_u16_s16_0, svuint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za64_u16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_u16_s16_7:
+ **	...
+ **	usmop4s	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_u16_s16_7, svuint16_t, svint16x2_t,
+ 	      svmop4s_1x2_za64_u16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_u16_s16_0:
+ **	...
+ **	usmop4s	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_u16_s16_0, svuint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za64_u16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_u16_s16_7:
+ **	...
+ **	usmop4s	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_u16_s16_7, svuint16x2_t, svint16_t,
+ 	      svmop4s_2x1_za64_u16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_u16_s16_0:
+ **	...
+ **	usmop4s	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za64_u16_s16_0, svuint16x2_t, svint16x2_t,
+ 	      svmop4s_2x2_za64_u16_s16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_u16_s16_7:
+ **	...
+ **	usmop4s	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x2_za64_u16_s16_7, svuint16x2_t, svint16x2_t,
+ 	      svmop4s_2x2_za64_u16_s16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sme2/acle-asm/mop4s_za64_u16_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,87 ----
+ /* { dg-do assemble { target aarch64_asm_sme-mop4_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme-mop4_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ #include <arm_sme.h>
+ #include "test_sme2_acle.h"
+ 
+ /*
+ ** mop4s_1x1_za64_u16_u16_0:
+ **	...
+ **	umop4s	za0\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_u16_u16_0, svuint16_t,
+ 		 svmop4s_1x1_za64_u16_u16 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_1x1_za64_u16_u16_7:
+ **	...
+ **	umop4s	za7\.d, z0\.h, z30\.h
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_1x1_za64_u16_u16_7, svuint16_t,
+ 		 svmop4s_1x1_za64_u16_u16 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
+ 
+ /*
+ ** mop4s_1x2_za64_u16_u16_0:
+ **	...
+ **	umop4s	za0\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_u16_u16_0, svuint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za64_u16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_1x2_za64_u16_u16_7:
+ **	...
+ **	umop4s	za7\.d, z0\.h, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_1x2_za64_u16_u16_7, svuint16_t, svuint16x2_t,
+ 	      svmop4s_1x2_za64_u16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_u16_u16_0:
+ **	...
+ **	umop4s	za0\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_u16_u16_0, svuint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za64_u16_u16 (0, z0, z4),
+ 	      svmop4s_za64 (0, z0, z4));
+ 
+ /*
+ ** mop4s_2x1_za64_u16_u16_7:
+ **	...
+ **	umop4s	za7\.d, {z0\.h - z1\.h}, z30\.h
+ **	ret
+ */
+ TEST_DUAL_ZA (mop4s_2x1_za64_u16_u16_7, svuint16x2_t, svuint16_t,
+ 	      svmop4s_2x1_za64_u16_u16 (7, z0, z4),
+ 	      svmop4s_za64 (7, z0, z4));
+ 
+ /*
+ ** mop4s_2x2_za64_u16_u16_0:
+ **	...
+ **	umop4s	za0\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_u16_u16_0, svuint16x2_t,
+ 		 svmop4s_2x2_za64_u16_u16 (0, z0, z1),
+ 		 svmop4s_za64 (0, z0, z1));
+ 
+ /*
+ ** mop4s_2x2_za64_u16_u16_7:
+ **	...
+ **	umop4s	za7\.d, {z0\.h - z1\.h}, {z30\.h - z31\.h}
+ **	ret
+ */
+ TEST_UNIFORM_ZA (mop4s_2x2_za64_u16_u16_7, svuint16x2_t,
+ 		 svmop4s_2x2_za64_u16_u16 (7, z0, z1),
+ 		 svmop4s_za64 (7, z0, z1));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_2.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general/pfirst_2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,67 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ extern void foo (svbool_t);
+ extern void bar (svbool_t);
+ 
+ /*
+ ** test1:
+ **	b	bar
+ */
+ __attribute__ ((noipa))
+ void test1 (svbool_t a)
+ {
+     svbool_t res = svpfirst (svpfalse (), svpfalse ());
+     if (svptest_any (res, a))
+       foo (a);
+     else
+       bar (a);
+ }
+ 
+ /*
+ ** test2:
+ **	pfalse	p0\.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t test2 (svbool_t a)
+ {
+     return svpfirst (svpfalse (), svpfalse ());
+ }
+ 
+ /*
+ ** test3:
+ **	ptrues	p3.b, vl1
+ **	...
+ */
+ __attribute__ ((noipa))
+ void test3 (svbool_t a)
+ {
+     svbool_t res = svpfirst (svptrue_b8 (), svpfalse ());
+     if (svptest_first (svptrue_b8 (), res))
+       foo (a);
+     else
+       bar (a);
+ }
+ 
+ /*
+ ** test4:
+ **	ptrue	p0.b, vl1
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t test4 (svbool_t a)
+ {
+ return svpfirst (svptrue_b8 (), svpfalse ());
+ }
+ 
+ #ifdef __cplusplus
+ }
+ #endif
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_b16b16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,79 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za16[_bbf16_bbf16] (only if __ARM_FEATURE_SME_B16B16 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-b16b16"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_B16B16 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16, bf16);
+ }
+ 
+ void
+ implicit_ok (svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za16 (0, bf16, bf16);
+ }
+ 
+ void
+ error_not_streaming (svbfloat16_t bf16)
+ {
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16, bf16); // { dg-error {ACLE function 'svmop4a_1x1_za16_bf16_bf16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16 (0, bf16, bf16); // { dg-error {ACLE function 'svmop4a_1x1_za16_bf16_bf16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svbfloat16_t bf16) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16, bf16); // { dg-error {ACLE function 'svmop4a_1x1_za16_bf16_bf16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16 (0, bf16, bf16); // { dg-error {ACLE function 'svmop4a_1x1_za16_bf16_bf16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (); // { dg-error {too few arguments to function 'svmop4a_1x1_za16_bf16_bf16'; expected 3, have 0} }
+   svmop4a_za16 (); // { dg-error {too few arguments to function 'svmop4a_za16'} }
+ 
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16, bf16, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za16_bf16_bf16'; expected 3, have 4} }
+   svmop4a_za16 (0, bf16, bf16, 0); // { dg-error {too many arguments to function 'svmop4a_za16'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svbfloat16_t bf16, svbfloat16x2_t bf16x2,
+ 			 svbfloat16x4_t bf16x4) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16x2, bf16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_bf16_bf16'} }
+   svmop4a_za16 (0, bf16x4, bf16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_bf16_bf16'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0,
+ 			 svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (zt0, bf16, bf16); // { dg-error {argument 1 of 'svmop4a_1x1_za16_bf16_bf16' must be an integer constant expression} }
+   svmop4a_za16 (zt0, bf16, bf16); // { dg-error {argument 1 of 'svmop4a_za16' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (-1, bf16, bf16); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za16_bf16_bf16', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16 (-1, bf16, bf16); // { dg-error {passing -1 to argument 1 of 'svmop4a_za16', which expects a value in the range \[0, 1\]} }
+ 
+   svmop4a_1x1_za16_bf16_bf16 (2, bf16, bf16); // { dg-error {passing 2 to argument 1 of 'svmop4a_1x1_za16_bf16_bf16', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16 (2, bf16, bf16); // { dg-error {passing 2 to argument 1 of 'svmop4a_za16', which expects a value in the range \[0, 1\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svbfloat16_t bf16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_bf16_bf16 (0, bf16, bf16); // { dg-error {ACLE function 'svmop4a_1x1_za16_bf16_bf16' requires ISA extension 'sme-b16b16'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_base.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,106 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za32[_f32_f32]
+ // svmop4a[_1x1]_za32[_f16_f16]
+ // svmop4a[_1x1]_za32[_bf16_bf16]
+ // svmop4a[_1x1]_za32[_s16_s16]
+ // svmop4a[_1x1]_za32[_u16_u16]
+ // svmop4a[_1x1]_za32[_s8_s8]
+ // svmop4a[_1x1]_za32[_u8_u8]
+ // svmop4a[_1x1]_za32[_s8_u8]
+ // svmop4a[_1x1]_za32[_u8_s8]
+ 
+ #pragma GCC target "+sve2,+sme-mop4"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svfloat32_t f32, svfloat16_t f16, svbfloat16_t bf16, svint16_t s16,
+ 	     svuint16_t u16, svint8_t s8,
+ 	     svuint8_t u8) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f32_f32 (0, f32, f32);
+   svmop4a_1x1_za32_f16_f16 (0, f16, f16);
+   svmop4a_1x1_za32_bf16_bf16 (0, bf16, bf16);
+   svmop4a_1x1_za32_s16_s16 (0, s16, s16);
+   svmop4a_1x1_za32_u16_u16 (0, u16, u16);
+   svmop4a_1x1_za32_s8_s8 (0, s8, s8);
+   svmop4a_1x1_za32_u8_u8 (0, u8, u8);
+   svmop4a_1x1_za32_s8_u8 (0, s8, u8);
+   svmop4a_1x1_za32_u8_s8 (0, u8, s8);
+ }
+ 
+ void
+ implicit_ok (svfloat32_t f32, svfloat16_t f16, svbfloat16_t bf16, svint16_t s16,
+ 	     svuint16_t u16, svint8_t s8,
+ 	     svuint8_t u8) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za32 (0, f32, f32);
+   svmop4a_za32 (0, f16, f16);
+   svmop4a_za32 (0, bf16, bf16);
+   svmop4a_za32 (0, s16, s16);
+   svmop4a_za32 (0, u16, u16);
+   svmop4a_za32 (0, s8, s8);
+   svmop4a_za32 (0, u8, u8);
+   svmop4a_za32 (0, s8, u8);
+   svmop4a_za32 (0, u8, s8);
+ }
+ 
+ void
+ error_not_streaming (svfloat16_t f16)
+ {
+   svmop4a_1x1_za32_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za32_f16_f16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za32 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za32_f16_f16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svfloat16_t f16) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za32_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za32_f16_f16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za32 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za32_f16_f16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f16_f16 (); // { dg-error {too few arguments to function 'svmop4a_1x1_za32_f16_f16'; expected 3, have 0} }
+   svmop4a_za32 (); // { dg-error {too few arguments to function 'svmop4a_za32'} }
+ 
+   svmop4a_1x1_za32_f16_f16 (0, f16, f16, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za32_f16_f16'; expected 3, have 4} }
+   svmop4a_za32 (0, f16, f16, 0); // { dg-error {too many arguments to function 'svmop4a_za32'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svfloat16_t f16, svfloat16x2_t f16x2,
+ 			 svfloat16x4_t f16x4) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f16_f16 (0, f16x2, f16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za32_f16_f16'} }
+   svmop4a_za32 (0, f16x4, f16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za32_f16_f16'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0,
+ 			 svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f16_f16 (zt0, f16, f16); // { dg-error {argument 1 of 'svmop4a_1x1_za32_f16_f16' must be an integer constant expression} }
+   svmop4a_za32 (zt0, f16, f16); // { dg-error {argument 1 of 'svmop4a_za32' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f16_f16 (-1, f16, f16); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za32_f16_f16', which expects a value in the range \[0, 3\]} }
+   svmop4a_za32 (-1, f16, f16); // { dg-error {passing -1 to argument 1 of 'svmop4a_za32', which expects a value in the range \[0, 3\]} }
+ 
+   svmop4a_1x1_za32_f16_f16 (4, f16, f16); // { dg-error {passing 4 to argument 1 of 'svmop4a_1x1_za32_f16_f16', which expects a value in the range \[0, 3\]} }
+   svmop4a_za32 (4, f16, f16); // { dg-error {passing 4 to argument 1 of 'svmop4a_za32', which expects a value in the range \[0, 3\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2"
+ 
+ void
+ error_missing_feature (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za32_f16_f16' requires ISA extension 'sme-mop4'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f16f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,79 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za16[_f16_f16] (only if __ARM_FEATURE_SME_F16F16 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f16f16"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_F16F16 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (0, f16, f16);
+ }
+ 
+ void
+ implicit_ok (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za16 (0, f16, f16);
+ }
+ 
+ void
+ error_not_streaming (svfloat16_t f16)
+ {
+   svmop4a_1x1_za16_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za16_f16_f16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za16_f16_f16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svfloat16_t f16) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za16_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za16_f16_f16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za16_f16_f16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (); // { dg-error {too few arguments to function 'svmop4a_1x1_za16_f16_f16'; expected 3, have 0} }
+   svmop4a_za16 (); // { dg-error {too few arguments to function 'svmop4a_za16'} }
+ 
+   svmop4a_1x1_za16_f16_f16 (0, f16, f16, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za16_f16_f16'; expected 3, have 4} }
+   svmop4a_za16 (0, f16, f16, 0); // { dg-error {too many arguments to function 'svmop4a_za16'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svfloat16_t f16, svfloat16x2_t f16x2,
+ 			 svfloat16x4_t f16x4) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (0, f16x2, f16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_f16_f16'} }
+   svmop4a_za16 (0, f16x4, f16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_f16_f16'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0,
+ 			 svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (zt0, f16, f16); // { dg-error {argument 1 of 'svmop4a_1x1_za16_f16_f16' must be an integer constant expression} }
+   svmop4a_za16 (zt0, f16, f16); // { dg-error {argument 1 of 'svmop4a_za16' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (-1, f16, f16); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za16_f16_f16', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16 (-1, f16, f16); // { dg-error {passing -1 to argument 1 of 'svmop4a_za16', which expects a value in the range \[0, 1\]} }
+ 
+   svmop4a_1x1_za16_f16_f16 (2, f16, f16); // { dg-error {passing 2 to argument 1 of 'svmop4a_1x1_za16_f16_f16', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16 (2, f16, f16); // { dg-error {passing 2 to argument 1 of 'svmop4a_za16', which expects a value in the range \[0, 1\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svfloat16_t f16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_f16_f16 (0, f16, f16); // { dg-error {ACLE function 'svmop4a_1x1_za16_f16_f16' requires ISA extension 'sme-f16f16'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f64f64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,79 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za64[_f64_f64] (only if __ARM_FEATURE_SME_F64F64 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f64f64"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_F64F64 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (0, f64, f64);
+ }
+ 
+ void
+ implicit_ok (svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za64 (0, f64, f64);
+ }
+ 
+ void
+ error_not_streaming (svfloat64_t f64)
+ {
+   svmop4a_1x1_za64_f64_f64 (0, f64, f64); // { dg-error {ACLE function 'svmop4a_1x1_za64_f64_f64' can only be called when SME streaming mode is enabled} }
+   svmop4a_za64 (0, f64, f64); // { dg-error {ACLE function 'svmop4a_1x1_za64_f64_f64' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svfloat64_t f64) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za64_f64_f64 (0, f64, f64); // { dg-error {ACLE function 'svmop4a_1x1_za64_f64_f64' can only be called when SME streaming mode is enabled} }
+   svmop4a_za64 (0, f64, f64); // { dg-error {ACLE function 'svmop4a_1x1_za64_f64_f64' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (); // { dg-error {too few arguments to function 'svmop4a_1x1_za64_f64_f64'; expected 3, have 0} }
+   svmop4a_za64 (); // { dg-error {too few arguments to function 'svmop4a_za64'} }
+ 
+   svmop4a_1x1_za64_f64_f64 (0, f64, f64, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za64_f64_f64'; expected 3, have 4} }
+   svmop4a_za64 (0, f64, f64, 0); // { dg-error {too many arguments to function 'svmop4a_za64'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svfloat64_t f64, svfloat64x2_t f64x2,
+ 			 svfloat64x4_t f64x4) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (0, f64x2, f64); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za64_f64_f64'} }
+   svmop4a_za64 (0, f64x4, f64); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za64_f64_f64'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0,
+ 			 svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (zt0, f64, f64); // { dg-error {argument 1 of 'svmop4a_1x1_za64_f64_f64' must be an integer constant expression} }
+   svmop4a_za64 (zt0, f64, f64); // { dg-error {argument 1 of 'svmop4a_za64' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (-1, f64, f64); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za64_f64_f64', which expects a value in the range \[0, 7\]} }
+   svmop4a_za64 (-1, f64, f64); // { dg-error {passing -1 to argument 1 of 'svmop4a_za64', which expects a value in the range \[0, 7\]} }
+ 
+   svmop4a_1x1_za64_f64_f64 (8, f64, f64); // { dg-error {passing 8 to argument 1 of 'svmop4a_1x1_za64_f64_f64', which expects a value in the range \[0, 7\]} }
+   svmop4a_za64 (8, f64, f64); // { dg-error {passing 8 to argument 1 of 'svmop4a_za64', which expects a value in the range \[0, 7\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svfloat64_t f64) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_f64_f64 (0, f64, f64); // { dg-error {ACLE function 'svmop4a_1x1_za64_f64_f64' requires ISA extension 'sme-f64f64'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,84 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za16[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F16 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f8f16"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_F8F16 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svmfloat8_t mf8, fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8, mf8, fpm);
+ }
+ 
+ void
+ implicit_ok (svmfloat8_t mf8, fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za16_fpm (0, mf8, mf8, fpm);
+ }
+ 
+ void
+ error_not_streaming (svmfloat8_t mf8, fpm_t fpm)
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za16_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za16_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svmfloat8_t mf8,
+ 			    fpm_t fpm) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za16_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+   svmop4a_za16_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za16_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svmfloat8_t mf8,
+ 			  fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (); // { dg-error {too few arguments to function 'svmop4a_1x1_za16_mf8_mf8_fpm'; expected 4, have 0} }
+   svmop4a_za16_fpm (); // { dg-error {too few arguments to function 'svmop4a_za16_fpm'} }
+ 
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8, mf8, fpm, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za16_mf8_mf8_fpm'; expected 4, have 5} }
+   svmop4a_za16_fpm (0, mf8, mf8, fpm, 0); // { dg-error {too many arguments to function 'svmop4a_za16_fpm'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svmfloat8_t mf8, svmfloat8x2_t mf8x2,
+ 			 svmfloat8x4_t mf8x4,
+ 			 fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8x2, mf8, fpm); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_mf8_mf8_fpm'} }
+   svmop4a_za16_fpm (0, mf8x4, mf8, fpm); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za16_mf8_mf8_fpm'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0, svmfloat8_t mf8,
+ 			 fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (zt0, mf8, mf8, fpm); // { dg-error {argument 1 of 'svmop4a_1x1_za16_mf8_mf8_fpm' must be an integer constant expression} }
+   svmop4a_za16_fpm (zt0, mf8, mf8, fpm); // { dg-error {argument 1 of 'svmop4a_za16_fpm' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svmfloat8_t mf8,
+ 			fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (-1, mf8, mf8, fpm); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za16_mf8_mf8_fpm', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16_fpm (-1, mf8, mf8, fpm); // { dg-error {passing -1 to argument 1 of 'svmop4a_za16_fpm', which expects a value in the range \[0, 1\]} }
+ 
+   svmop4a_1x1_za16_mf8_mf8_fpm (2, mf8, mf8, fpm); // { dg-error {passing 2 to argument 1 of 'svmop4a_1x1_za16_mf8_mf8_fpm', which expects a value in the range \[0, 1\]} }
+   svmop4a_za16_fpm (2, mf8, mf8, fpm); // { dg-error {passing 2 to argument 1 of 'svmop4a_za16_fpm', which expects a value in the range \[0, 1\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svmfloat8_t mf8,
+ 		       fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za16_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za16_mf8_mf8_fpm' requires ISA extension 'sme-f8f16'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_f8f32.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,84 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za32[_mf8_mf8]_fpm (only if __ARM_FEATURE_SME_F8F32 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-f8f32"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_F8F32 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svmfloat8_t mf8, fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8, mf8, fpm);
+ }
+ 
+ void
+ implicit_ok (svmfloat8_t mf8, fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za32_fpm (0, mf8, mf8, fpm);
+ }
+ 
+ void
+ error_not_streaming (svmfloat8_t mf8, fpm_t fpm)
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za32_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+   svmop4a_za32_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za32_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svmfloat8_t mf8,
+ 			    fpm_t fpm) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za32_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+   svmop4a_za32_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za32_mf8_mf8_fpm' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svmfloat8_t mf8,
+ 			  fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (); // { dg-error {too few arguments to function 'svmop4a_1x1_za32_mf8_mf8_fpm'; expected 4, have 0} }
+   svmop4a_za32_fpm (); // { dg-error {too few arguments to function 'svmop4a_za32_fpm'} }
+ 
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8, mf8, fpm, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za32_mf8_mf8_fpm'; expected 4, have 5} }
+   svmop4a_za32_fpm (0, mf8, mf8, fpm, 0); // { dg-error {too many arguments to function 'svmop4a_za32_fpm'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svmfloat8_t mf8, svmfloat8x2_t mf8x2,
+ 			 svmfloat8x4_t mf8x4,
+ 			 fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8x2, mf8, fpm); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za32_mf8_mf8_fpm'} }
+   svmop4a_za32_fpm (0, mf8x4, mf8, fpm); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za32_mf8_mf8_fpm'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0, svmfloat8_t mf8,
+ 			 fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (zt0, mf8, mf8, fpm); // { dg-error {argument 1 of 'svmop4a_1x1_za32_mf8_mf8_fpm' must be an integer constant expression} }
+   svmop4a_za32_fpm (zt0, mf8, mf8, fpm); // { dg-error {argument 1 of 'svmop4a_za32_fpm' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svmfloat8_t mf8,
+ 			fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (-1, mf8, mf8, fpm); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za32_mf8_mf8_fpm', which expects a value in the range \[0, 3\]} }
+   svmop4a_za32_fpm (-1, mf8, mf8, fpm); // { dg-error {passing -1 to argument 1 of 'svmop4a_za32_fpm', which expects a value in the range \[0, 3\]} }
+ 
+   svmop4a_1x1_za32_mf8_mf8_fpm (4, mf8, mf8, fpm); // { dg-error {passing 4 to argument 1 of 'svmop4a_1x1_za32_mf8_mf8_fpm', which expects a value in the range \[0, 3\]} }
+   svmop4a_za32_fpm (4, mf8, mf8, fpm); // { dg-error {passing 4 to argument 1 of 'svmop4a_za32_fpm', which expects a value in the range \[0, 3\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svmfloat8_t mf8,
+ 		       fpm_t fpm) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za32_mf8_mf8_fpm (0, mf8, mf8, fpm); // { dg-error {ACLE function 'svmop4a_1x1_za32_mf8_mf8_fpm' requires ISA extension 'sme-f8f32'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/mop4_i16i64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,88 ----
+ // { dg-options "-std=c23 -fsyntax-only" }
+ // { dg-do compile }
+ 
+ // svmop4a[_1x1]_za64[_s16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_s16_u16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ // svmop4a[_1x1]_za64[_u16_s16] (only if __ARM_FEATURE_SME_I16I64 != 0)
+ 
+ #pragma GCC target "+sve2,+sme-mop4,+sme-i16i64"
+ static_assert (__ARM_FEATURE_SME_MOP4 == 1);
+ static_assert (__ARM_FEATURE_SME_I16I64 == 1);
+ #include <arm_sme.h>
+ 
+ void
+ explicit_ok (svint16_t s16, svuint16_t u16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (0, s16, s16);
+   svmop4a_1x1_za64_u16_u16 (0, u16, u16);
+   svmop4a_1x1_za64_s16_u16 (0, s16, u16);
+   svmop4a_1x1_za64_u16_s16 (0, u16, s16);
+ }
+ 
+ void
+ implicit_ok (svint16_t s16, svuint16_t u16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_za64 (0, s16, s16);
+   svmop4a_za64 (0, u16, u16);
+   svmop4a_za64 (0, s16, u16);
+   svmop4a_za64 (0, u16, s16);
+ }
+ 
+ void
+ error_not_streaming (svint16_t s16)
+ {
+   svmop4a_1x1_za64_s16_s16 (0, s16, s16); // { dg-error {ACLE function 'svmop4a_1x1_za64_s16_s16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za64 (0, s16, s16); // { dg-error {ACLE function 'svmop4a_1x1_za64_s16_s16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_streaming_compatible (svint16_t s16) __arm_streaming_compatible
+ {
+   svmop4a_1x1_za64_s16_s16 (0, s16, s16); // { dg-error {ACLE function 'svmop4a_1x1_za64_s16_s16' can only be called when SME streaming mode is enabled} }
+   svmop4a_za64 (0, s16, s16); // { dg-error {ACLE function 'svmop4a_1x1_za64_s16_s16' can only be called when SME streaming mode is enabled} }
+ }
+ 
+ void
+ error_arg_count_mismatch (svint16_t s16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (); // { dg-error {too few arguments to function 'svmop4a_1x1_za64_s16_s16'; expected 3, have 0} }
+   svmop4a_za64 (); // { dg-error {too few arguments to function 'svmop4a_za64'} }
+ 
+   svmop4a_1x1_za64_s16_s16 (0, s16, s16, 0); // { dg-error {too many arguments to function 'svmop4a_1x1_za64_s16_s16'; expected 3, have 4} }
+   svmop4a_za64 (0, s16, s16, 0); // { dg-error {too many arguments to function 'svmop4a_za64'} }
+ }
+ 
+ void
+ error_arg_type_mismatch (svint16_t s16, svint16x2_t s16x2,
+ 			 svint16x4_t s16x4) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (0, s16x2, s16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za64_s16_s16'} }
+   svmop4a_za64 (0, s16x4, s16); // { dg-error {incompatible type for argument 2 of 'svmop4a_1x1_za64_s16_s16'} }
+ }
+ 
+ void
+ error_zt0_not_immediate (uint64_t zt0,
+ 			 svint16_t s16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (zt0, s16, s16); // { dg-error {argument 1 of 'svmop4a_1x1_za64_s16_s16' must be an integer constant expression} }
+   svmop4a_za64 (zt0, s16, s16); // { dg-error {argument 1 of 'svmop4a_za64' must be an integer constant expression} }
+ }
+ 
+ void
+ error_zt0_not_in_range (svint16_t s16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (-1, s16, s16); // { dg-error {passing -1 to argument 1 of 'svmop4a_1x1_za64_s16_s16', which expects a value in the range \[0, 7\]} }
+   svmop4a_za64 (-1, s16, s16); // { dg-error {passing -1 to argument 1 of 'svmop4a_za64', which expects a value in the range \[0, 7\]} }
+ 
+   svmop4a_1x1_za64_s16_s16 (8, s16, s16); // { dg-error {passing 8 to argument 1 of 'svmop4a_1x1_za64_s16_s16', which expects a value in the range \[0, 7\]} }
+   svmop4a_za64 (8, s16, s16); // { dg-error {passing 8 to argument 1 of 'svmop4a_za64', which expects a value in the range \[0, 7\]} }
+ }
+ 
+ #pragma GCC target "+nothing,+sve2,+sme2,+sme-mop4"
+ 
+ void
+ error_missing_feature (svint16_t s16) __arm_streaming __arm_inout ("za")
+ {
+   svmop4a_1x1_za64_s16_s16 (0, s16, s16); // { dg-error {ACLE function 'svmop4a_1x1_za64_s16_s16' requires ISA extension 'sme-i16i64'} }
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,154 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include <arm_sve.h>
+ 
+ /*
+ ** b_lt_257:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ b_lt_257 (void)
+ {
+   unsigned int vl = svcntb ();
+ 
+   return vl < 257;
+ }
+ 
+ /*
+ ** h_ge_8:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ h_ge_8 (void)
+ {
+   return svcnth () >= 8;
+ }
+ 
+ /*
+ ** w_le_64:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ w_le_64 (void)
+ {
+   return svcntw () <= 64;
+ }
+ 
+ /*
+ ** d_gt_1:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ d_gt_1 (void)
+ {
+   return svcntd () > 1;
+ }
+ 
+ /*
+ ** b_ne_0:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ b_ne_0 (void)
+ {
+   return svcntb () != 0;
+ }
+ 
+ /*
+ ** b_le_15:
+ **	mov	w0, 0
+ **	ret
+ */
+ int
+ b_le_15 (void)
+ {
+   return svcntb () <= 15;
+ }
+ 
+ /*
+ ** h_lt_8:
+ **	mov	w0, 0
+ **	ret
+ */
+ int
+ h_lt_8 (void)
+ {
+   return svcnth () < 8;
+ }
+ 
+ /*
+ ** w_gt_64:
+ **	mov	w0, 0
+ **	ret
+ */
+ int
+ w_gt_64 (void)
+ {
+   return svcntw () > 64;
+ }
+ 
+ /*
+ ** d_eq_0:
+ **	mov	w0, 0
+ **	ret
+ */
+ int
+ d_eq_0 (void)
+ {
+   return svcntd () == 0;
+ }
+ 
+ /*
+ ** b_lt_256:
+ **	cntb	x0
+ **	cmp	x0, 256
+ **	cset	w0, cc
+ **	ret
+ */
+ int
+ b_lt_256 (void)
+ {
+   return svcntb () < 256;
+ }
+ 
+ /*
+ ** w_gt_4:
+ **	cntw	x0
+ **	cmp	x0, 4
+ **	cset	w0, hi
+ **	ret
+ */
+ int
+ w_gt_4 (void)
+ {
+   return svcntw () > 4;
+ }
+ 
+ /*
+ ** b_pat_all_lt_257:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ b_pat_all_lt_257 (void)
+ {
+   return svcntb_pat (SV_ALL) < 257;
+ }
+ 
+ /*
+ ** w_pat_all_le_64:
+ **	mov	w0, 1
+ **	ret
+ */
+ int
+ w_pat_all_le_64 (void)
+ {
+   return svcntw_pat (SV_ALL) <= 64;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7_run.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7_run.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7_run.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/cnt_fold_7_run.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do run { target aarch64_sve_hw } } */
+ /* { dg-options "-O2" } */
+ 
+ #include <arm_sve.h>
+ 
+ #define CHECK(EXPR) \
+   do \
+     { \
+       if (!(EXPR)) \
+ 	__builtin_abort (); \
+     } \
+   while (0)
+ 
+ int
+ main (void)
+ {
+   unsigned int b = svcntb ();
+   unsigned int h = svcnth ();
+   unsigned int w = svcntw ();
+   unsigned int d = svcntd ();
+ 
+   CHECK (b >= 16 && b <= 256);
+   CHECK (h >= 8 && h <= 128);
+   CHECK (w >= 4 && w <= 64);
+   CHECK (d >= 2 && d <= 32);
+ 
+   CHECK (b < 257);
+   CHECK (h >= 8);
+   CHECK (w <= 64);
+   CHECK (d > 1);
+   CHECK (b != 0);
+ 
+   CHECK (!(b <= 15));
+   CHECK (!(h < 8));
+   CHECK (!(w > 64));
+   CHECK (!(d == 0));
+ 
+   CHECK ((svcntb () < 256) == (b < 256));
+   CHECK ((svcntw () > 4) == (w > 4));
+ 
+   CHECK (svcntb_pat (SV_ALL) == b);
+   CHECK (svcntw_pat (SV_ALL) == w);
+   CHECK (svcntb_pat (SV_ALL) < 257);
+   CHECK (svcntw_pat (SV_ALL) <= 64);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1-run.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1-run.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1-run.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1-run.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,94 ----
+ /* { dg-do run } */
+ /* { dg-require-effective-target aarch64_sve_hw } */
+ /* { dg-options "-O3 -march=armv8.2-a+sve -mautovec-preference=sve-only" } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-additional-options "-fvect-cost-model=unlimited" } */
+ 
+ typedef __UINT8_TYPE__ uint8_t;
+ typedef __UINT16_TYPE__ uint16_t;
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ #define N 67
+ 
+ #define DEFINE_RECUR(TYPE, SUFFIX) \
+   __attribute__((noipa)) \
+   static void \
+   recur1_##SUFFIX (TYPE *__restrict a, TYPE *__restrict b, \
+ 		   const TYPE *__restrict init) \
+   { \
+     TYPE prev = init[0]; \
+     for (int i = 0; i < N; ++i) \
+       { \
+ 	b[i] = a[i] - prev; \
+ 	prev = a[i]; \
+       } \
+   } \
+   \
+   __attribute__((noipa)) \
+   static void \
+   recur2_##SUFFIX (TYPE *__restrict a, TYPE *__restrict b, \
+ 		   const TYPE *__restrict init) \
+   { \
+     TYPE prev0 = init[0]; \
+     TYPE prev1 = init[0]; \
+     for (int i = 0; i + 1 < N; i += 2) \
+       { \
+ 	b[i] = a[i] - prev0; \
+ 	prev0 = a[i]; \
+ 	b[i + 1] = a[i + 1] - prev1; \
+ 	prev1 = a[i + 1]; \
+       } \
+     b[N - 1] = 0; \
+   }
+ 
+ DEFINE_RECUR (uint8_t, u8)
+ DEFINE_RECUR (uint16_t, u16)
+ DEFINE_RECUR (uint32_t, u32)
+ DEFINE_RECUR (uint64_t, u64)
+ 
+ #define CHECK_RECUR(TYPE, SUFFIX) \
+   do \
+     { \
+       TYPE a[N]; \
+       TYPE b[N]; \
+       const TYPE init[2] = { (TYPE) 19, (TYPE) 43 }; \
+       \
+       for (int i = 0; i < N; ++i) \
+ 	a[i] = (TYPE) ((unsigned int) i * (unsigned int) i \
+ 			  + 5U * (unsigned int) i + 11U); \
+       \
+       for (int seed = 0; seed < 2; ++seed) \
+ 	{ \
+ 	  recur1_##SUFFIX (a, b, &init[seed]); \
+ 	  if (b[0] != (TYPE) (a[0] - init[seed])) \
+ 	    __builtin_abort (); \
+ 	  _Pragma ("GCC novector") \
+ 	  for (int i = 1; i < N; ++i) \
+ 	    if (b[i] != (TYPE) (a[i] - a[i - 1])) \
+ 	      __builtin_abort (); \
+ 	  \
+ 	  recur2_##SUFFIX (a, b, &init[seed]); \
+ 	  if (b[0] != (TYPE) (a[0] - init[seed]) \
+ 	      || b[1] != (TYPE) (a[1] - init[seed])) \
+ 	    __builtin_abort (); \
+ 	  _Pragma ("GCC novector") \
+ 	  for (int i = 2; i < N - 1; ++i) \
+ 	    if (b[i] != (TYPE) (a[i] - a[i - 2])) \
+ 	      __builtin_abort (); \
+ 	  if (b[N - 1] != 0) \
+ 	    __builtin_abort (); \
+ 	} \
+     } \
+   while (0)
+ 
+ int
+ main (void)
+ {
+   CHECK_RECUR (uint8_t, u8);
+   CHECK_RECUR (uint16_t, u16);
+   CHECK_RECUR (uint32_t, u32);
+   CHECK_RECUR (uint64_t, u64);
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/perm_splice_1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,63 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8.2-a+sve -mautovec-preference=sve-only" } */
+ /* { dg-additional-options "-msve-vector-bits=scalable" } */
+ /* { dg-additional-options "-fvect-cost-model=unlimited -fdump-tree-vect-details" } */
+ 
+ typedef __UINT8_TYPE__ uint8_t;
+ typedef __UINT16_TYPE__ uint16_t;
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ #define DEF_RECUR1(TYPE, SUFFIX)                                     \
+   __attribute__((noipa))                                             \
+   void                                                               \
+   recur1_##SUFFIX (TYPE *__restrict a, TYPE *__restrict b,           \
+ 		   const TYPE *__restrict init)                         \
+   {                                                                  \
+     TYPE prev = *init;                                               \
+     for (int i = 0; i < 67; ++i)                                    \
+       {                                                              \
+ 	b[i] = a[i] - prev;                                           \
+ 	prev = a[i];                                                  \
+       }                                                              \
+   }
+ 
+ #define DEF_RECUR2(TYPE, SUFFIX)                                     \
+   __attribute__((noipa))                                             \
+   void                                                               \
+   recur2_##SUFFIX (TYPE *__restrict a, TYPE *__restrict b,           \
+ 		   const TYPE *__restrict init)                         \
+   {                                                                  \
+     TYPE prev0 = *init;                                              \
+     TYPE prev1 = *init;                                              \
+     for (int i = 0; i < 66; i += 2)                                 \
+       {                                                              \
+ 	b[i] = a[i] - prev0;                                          \
+ 	prev0 = a[i];                                                 \
+ 	b[i + 1] = a[i + 1] - prev1;                                 \
+ 	prev1 = a[i + 1];                                             \
+       }                                                              \
+   }
+ 
+ DEF_RECUR1 (uint8_t, u8)
+ DEF_RECUR1 (uint16_t, u16)
+ DEF_RECUR1 (uint32_t, u32)
+ DEF_RECUR1 (uint64_t, u64)
+ 
+ DEF_RECUR2 (uint8_t, u8)
+ DEF_RECUR2 (uint16_t, u16)
+ DEF_RECUR2 (uint32_t, u32)
+ 
+ /* { dg-final { scan-assembler-times {\tptrue\tp[0-9]+\.b, vl1} 4 } } */
+ /* { dg-final { scan-assembler-times {\tptrue\tp[0-9]+\.b, vl2} 1 } } */
+ /* { dg-final { scan-assembler-times {\tptrue\tp[0-9]+\.h, vl2} 1 } } */
+ /* { dg-final { scan-assembler-times {\tptrue\tp[0-9]+\.s, vl2} 1 } } */
+ /* { dg-final { scan-assembler-times {\trev\tp[0-9]+\.b, p[0-9]+\.b} 2 } } */
+ /* { dg-final { scan-assembler-times {\trev\tp[0-9]+\.h, p[0-9]+\.h} 2 } } */
+ /* { dg-final { scan-assembler-times {\trev\tp[0-9]+\.s, p[0-9]+\.s} 2 } } */
+ /* { dg-final { scan-assembler-times {\trev\tp[0-9]+\.d, p[0-9]+\.d} 1 } } */
+ /* { dg-final { scan-assembler-times {\tsplice\tz[0-9]+\.b, p[0-9]+, z[0-9]+\.b, z[0-9]+\.b} 2 } } */
+ /* { dg-final { scan-assembler-times {\tsplice\tz[0-9]+\.h, p[0-9]+, z[0-9]+\.h, z[0-9]+\.h} 2 } } */
+ /* { dg-final { scan-assembler-times {\tsplice\tz[0-9]+\.s, p[0-9]+, z[0-9]+\.s, z[0-9]+\.s} 2 } } */
+ /* { dg-final { scan-assembler-times {\tsplice\tz[0-9]+\.d, p[0-9]+, z[0-9]+\.d, z[0-9]+\.d} 1 } } */
+ /* { dg-final { scan-tree-dump-times "vectorized 1 loops in function" 7 "vect" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/pr121604_brk.c	Sun Aug 23 22:32:15 2026
***************
*** 5,25 ****
  #include <arm_sve.h>
  
  /*
! ** foo:
! **	ptrue	p0\.b, all
! **	brkb	p0\.b, p0/z, p0\.b
  **	ret
  */
! svbool_t foo () {
!   return svbrkb_b_m (svpfalse (), svptrue_b8 (), svptrue_b8 ());
  }
  
  /*
! ** bar:
! **	ptrue	p0\.b, all
! **	brka	p0\.b, p0/z, p0\.b
  **	ret
  */
! svbool_t bar () {
!   return svbrka_b_m (svpfalse (), svptrue_b8 (), svptrue_b8 ());
  }
--- 5,174 ----
  #include <arm_sve.h>
  
  /*
! ** f1m:
! **	mov	p0.b, p1.b
  **	ret
  */
! __attribute__ ((noipa))
! svbool_t f1m (svbool_t a, svbool_t b)
! {
!     return svbrka_b_m (b, svpfalse_b(), a);
  }
  
  /*
! ** f1z:
! **	pfalse	p0.b
  **	ret
  */
! __attribute__ ((noipa))
! svbool_t f1z (svbool_t a)
! {
!     return svbrka_b_z (svpfalse_b(), a);
  }
+ 
+ /*
+ ** f2m:
+ **	ptrue	p3.b, all
+ **	brka	p1.b, p3/m, p0.b
+ **	mov	p0.b, p1.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f2m (svbool_t a, svbool_t b)
+ {
+     return svbrka_b_m (b, svptrue_b8(), a);
+ }
+ 
+ /*
+ ** f2z:
+ **	ptrue	p3.b, all
+ **	brka	p0.b, p3/z, p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f2z (svbool_t a)
+ {
+     return svbrka_b_z (svptrue_b8(), a);
+ }
+ 
+ /*
+ ** f3z:
+ **	ptrue	p0.b, vl1
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f3z (svbool_t a)
+ {
+     return svbrka_b_z (svptrue_b8(), svptrue_b8());
+ }
+ 
+ /*
+ ** f3m:
+ **	ptrue	p3.b, all
+ **	brka	p0.b, p3/m, p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f3m (svbool_t a, svbool_t b)
+ {
+     return svbrka_b_m (a, svptrue_b8(), a);
+ }
+ 
+ /*
+ ** f4m:
+ **	ptrue	p0.b, vl1
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f4m (svbool_t a)
+ {
+     return svbrka_b_m (a, svptrue_b8(), svptrue_b8 ());
+ }
+ 
+ /*
+ ** f4z:
+ **	ptrue	p0.b, all
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t f4z ()
+ {
+     return svbrka_b_z (svptrue_b8(), svpfalse());
+ }
+ 
+ /*
+ ** g1z:
+ **	pfalse	p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t g1z (svbool_t a)
+ {
+     return svbrkb_b_z (svpfalse_b(), a);
+ }
+ 
+ /*
+ ** g1m:
+ **	ptrue	p3.b, all
+ **	brkb	p0.b, p3/z, p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t g1m (svbool_t a)
+ {
+     return svbrkb_b_m (svpfalse_b(), svptrue_b8(), a);
+ }
+ 
+ /*
+ ** g2z:
+ **	ptrue	p3.b, all
+ **	brkb	p0.b, p3/z, p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t g2z (svbool_t a)
+ {
+     return svbrkb_b_z (svptrue_b8(), a);
+ }
+ 
+ /*
+ ** g2m:
+ **	ptrue	p0.b, all
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t g2m (svbool_t a)
+ {
+     return svbrkb_b_m (a, svptrue_b8(), svpfalse ());
+ }
+ 
+ /*
+ ** g3m:
+ **	pfalse	p0.b
+ **	ret
+ */
+ __attribute__ ((noipa))
+ svbool_t g3m (svbool_t a)
+ {
+     return svbrkb_b_m (a, svptrue_b8(), svptrue_b8 ());
+ }
+ 
+ int main ()
+ {
+     svbool_t a = svptrue_pat_b16 (SV_VL4);
+     svbool_t b = svptrue_pat_b16 (SV_VL5);
+ 
+     f1m (a, b);
+     f1z (a);
+     f2m (a, b);
+     f2z (a);
+     f3m (a, b);
+     f3z (a);
+     f4m (a);
+     f4z ();
+     g1z (a);
+     g1m (a);
+     g2z (a);
+     g2m (a);
+     g3m (a);
+ }
\ No newline at end of file
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/reduc_3_costly.c	Sun Aug 23 22:32:15 2026
*************** REDUC_PTR (float, _Float16)
*** 27,32 ****
  REDUC_PTR (double, float)
  
  /* { dg-final { scan-assembler-times {\tuaddv\td[0-9]+, p[0-7], z[0-9]+\.s\n} 2 } } */
! /* { dg-final { scan-assembler-times {\tuaddv\td[0-9]+, p[0-7], z[0-9]+\.d\n} 3 } } */
  /* { dg-final { scan-assembler-times {\tfaddv\ts[0-9]+, p[0-7], z[0-9]+\.s\n} 1 } } */
  /* { dg-final { scan-assembler-times {\tfaddv\td[0-9]+, p[0-7], z[0-9]+\.d\n} 1 } } */
--- 27,32 ----
  REDUC_PTR (double, float)
  
  /* { dg-final { scan-assembler-times {\tuaddv\td[0-9]+, p[0-7], z[0-9]+\.s\n} 2 } } */
! /* { dg-final { scan-assembler-times {\tuaddv\td[0-9]+, p[0-7], z[0-9]+\.d\n} 4 } } */
  /* { dg-final { scan-assembler-times {\tfaddv\ts[0-9]+, p[0-7], z[0-9]+\.s\n} 1 } } */
  /* { dg-final { scan-assembler-times {\tfaddv\td[0-9]+, p[0-7], z[0-9]+\.d\n} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/roundeven_1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/roundeven_1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/roundeven_1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/roundeven_1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,28 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8.2-a+sve+fp16 -msve-vector-bits=scalable" } */
+ 
+ void
+ rev (double *__restrict d, double *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundeven (a[i]);
+ }
+ 
+ void
+ revf (float *__restrict d, float *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundevenf (a[i]);
+ }
+ 
+ void
+ revh (_Float16 *__restrict d, _Float16 *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundevenf16 (a[i]);
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tfrintn\tz[0-9]+\.d, p[0-9]+/m, z[0-9]+\.d} 1 } } */
+ /* { dg-final { scan-assembler-times {\tfrintn\tz[0-9]+\.s, p[0-9]+/m, z[0-9]+\.s} 1 } } */
+ /* { dg-final { scan-assembler-times {\tfrintn\tz[0-9]+\.h, p[0-9]+/m, z[0-9]+\.h} 3 } } */
+ /* { dg-final { scan-assembler-not {\tfrintn\tv[0-9]+\.} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/roundeven_2.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/roundeven_2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/roundeven_2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/roundeven_2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,60 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ /* { dg-require-effective-target aarch64_sve_hw } */
+ /* { dg-additional-options "-march=armv8-a+sve" } */
+ 
+ #define N 137
+ static double a[N], d[N], e[N];
+ static float fa[N], fd[N], fe[N];
+ 
+ __attribute__((noipa)) void
+ rev (double *__restrict d, double *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundeven (a[i]);
+ }
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ rev_ref (double *__restrict d, double *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundeven (a[i]);
+ }
+ 
+ __attribute__((noipa)) void
+ revf (float *__restrict d, float *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundevenf (a[i]);
+ }
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ revf_ref (float *__restrict d, float *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_roundevenf (a[i]);
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       a[i] = (i - 68) * 0.5 + (i & 3) * 0.25;
+       fa[i] = (float) a[i];
+     }
+ 
+   rev (d, a, N);
+   rev_ref (e, a, N);
+   for (int i = 0; i < N; i++)
+     if (d[i] != e[i])
+       __builtin_abort ();
+ 
+   revf (fd, fa, N);
+   revf_ref (fe, fa, N);
+   for (int i = 0; i < N; i++)
+     if (fd[i] != fe[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/slp_12.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/slp_12.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/slp_12.c	Sun Aug 16 22:32:11 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/slp_12.c	Sun Aug 23 22:32:15 2026
*************** TEST_ALL (VEC_PERM)
*** 47,60 ****
  
  /* We should use WHILEs for all accesses.  */
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.b} 20 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.h} 18 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 27 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 24 } } */
  
  /* 6 for the 8-bit types and 2 for the 16-bit types.  */
  /* { dg-final { scan-assembler-times {\tuqdecb\t} 8 } } */
! /* 4 for the 16-bit types and 3 for the 32-bit types.  */
! /* { dg-final { scan-assembler-times {\tuqdech\t} 7 } } */
! /* 6 for the 32-bit types and 3 for the 64-bit types.  */
! /* { dg-final { scan-assembler-times {\tuqdecw\t} 9 } } */
! /* { dg-final { scan-assembler-times {\tuqdecd\t} 6 } } */
--- 47,58 ----
  
  /* We should use WHILEs for all accesses.  */
  /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.b} 20 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.h} 16 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.s} 21 } } */
! /* { dg-final { scan-assembler-times {\twhilelo\tp[0-7]\.d} 15 } } */
  
  /* 6 for the 8-bit types and 2 for the 16-bit types.  */
  /* { dg-final { scan-assembler-times {\tuqdecb\t} 8 } } */
! /* { dg-final { scan-assembler-times {\tuqdech\t} 2 } } */
! /* { dg-final { scan-assembler-times {\tuqdecw\t} 3 } } */
! /* { dg-final { scan-assembler-not {\tuqdecd\t} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/widen_sum_1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/widen_sum_1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve/widen_sum_1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve/widen_sum_1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,84 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O3 -march=armv8-a+sve -mautovec-preference=sve-only --param vect-epilogues-nomask=0 -fdump-tree-vect-details" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #define DEF(NAME, INPUT, OUTPUT) \
+   OUTPUT                        \
+   NAME (const INPUT *a, long n) \
+   {                             \
+     OUTPUT sum = 0;             \
+     for (long i = 0; i < n; ++i) \
+       sum += a[i];              \
+     return sum;                 \
+   }
+ 
+ /*
+ ** sum_u8_long:
+ **	...
+ **	cnth	x[0-9]+
+ **	...
+ **	ptrue	(p[0-7])\.b, all
+ **	mov	(z[0-9]+\.h), #1
+ **	...
+ **	ld1b	(z[0-9]+\.h), \1/z, \[[^]]*\]
+ **	...
+ **	udot	(z[0-9]+)\.d, \3, \2
+ **	...
+ **	uaddv	d[0-9]+, \1, \4\.d
+ **	...
+ */
+ DEF (sum_u8_long, unsigned char, long)
+ 
+ /*
+ ** sum_s8_long:
+ **	...
+ **	cnth	x[0-9]+
+ **	...
+ **	ptrue	(p[0-7])\.b, all
+ **	mov	(z[0-9]+\.h), #1
+ **	...
+ **	ld1sb	(z[0-9]+\.h), \1/z, \[[^]]*\]
+ **	...
+ **	sdot	(z[0-9]+)\.d, \3, \2
+ **	...
+ **	uaddv	d[0-9]+, \1, \4\.d
+ **	...
+ */
+ DEF (sum_s8_long, signed char, long)
+ 
+ /*
+ ** sum_u8_int:
+ **	...
+ **	cntb	x[0-9]+
+ **	...
+ **	ptrue	(p[0-7])\.b, all
+ **	mov	(z[0-9]+\.b), #1
+ **	...
+ **	ld1b	(z[0-9]+\.b), \1/z, \[[^]]*\]
+ **	...
+ **	udot	(z[0-9]+)\.s, \3, \2
+ **	...
+ **	uaddv	d[0-9]+, \1, \4\.s
+ **	...
+ */
+ DEF (sum_u8_int, unsigned char, int)
+ 
+ /*
+ ** sum_s8_int:
+ **	...
+ **	cntb	x[0-9]+
+ **	...
+ **	ptrue	(p[0-7])\.b, all
+ **	mov	(z[0-9]+\.b), #1
+ **	...
+ **	ld1b	(z[0-9]+\.b), \1/z, \[[^]]*\]
+ **	...
+ **	sdot	(z[0-9]+)\.s, \3, \2
+ **	...
+ **	uaddv	d[0-9]+, \1, \4\.s
+ **	...
+ */
+ DEF (sum_s8_int, signed char, int)
+ 
+ /* { dg-final { scan-tree-dump-times "LOOP VECTORIZED" 4 "vect" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_s16_tied1:
+ **	sabal	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s16_tied1, svint16_t, svint8_t,
+ 	     z0 = svabal_s16 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_s16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.h, \1\.b, z1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s16_tied2, svint16_t, svint8_t,
+ 		 z0_res = svabal_s16 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_s16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.h, z1\.b, \1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s16_tied3, svint16_t, svint8_t,
+ 		 z0_res = svabal_s16 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_s16_untied:
+ **	movprfx	z0, z1
+ **	sabal	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s16_untied, svint16_t, svint8_t,
+ 	     z0 = svabal_s16 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_s16_tied1:
+ **	mov	(z[0-9]+\.b), w0
+ **	sabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s16_tied1, svint16_t, svint8_t, int8_t,
+ 	      z0 = svabal_n_s16 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_s16_untied:
+ **	mov	(z[0-9]+\.b), w0
+ **	movprfx	z0, z1
+ **	sabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s16_untied, svint16_t, svint8_t, int8_t,
+ 	      z0 = svabal_n_s16 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_s16_tied1:
+ **	mov	(z[0-9]+\.b), #11
+ **	sabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s16_tied1, svint16_t, svint8_t,
+ 	     z0 = svabal_n_s16 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_s16_untied:
+ **	mov	(z[0-9]+\.b), #11
+ **	movprfx	z0, z1
+ **	sabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s16_untied, svint16_t, svint8_t,
+ 	     z0 = svabal_n_s16 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s32.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s32.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_s32_tied1:
+ **	sabal	z0\.s, z4\.h, z5\.h
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s32_tied1, svint32_t, svint16_t,
+ 	     z0 = svabal_s32 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_s32_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.s, \1\.h, z1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s32_tied2, svint32_t, svint16_t,
+ 		 z0_res = svabal_s32 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_s32_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.s, z1\.h, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s32_tied3, svint32_t, svint16_t,
+ 		 z0_res = svabal_s32 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_s32_untied:
+ **	movprfx	z0, z1
+ **	sabal	z0\.s, z4\.h, z5\.h
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s32_untied, svint32_t, svint16_t,
+ 	     z0 = svabal_s32 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_s32_tied1:
+ **	mov	(z[0-9]+\.h), w0
+ **	sabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s32_tied1, svint32_t, svint16_t, int16_t,
+ 	      z0 = svabal_n_s32 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_s32_untied:
+ **	mov	(z[0-9]+\.h), w0
+ **	movprfx	z0, z1
+ **	sabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s32_untied, svint32_t, svint16_t, int16_t,
+ 	      z0 = svabal_n_s32 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_s32_tied1:
+ **	mov	(z[0-9]+\.h), #11
+ **	sabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s32_tied1, svint32_t, svint16_t,
+ 	     z0 = svabal_n_s32 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_s32_untied:
+ **	mov	(z[0-9]+\.h), #11
+ **	movprfx	z0, z1
+ **	sabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s32_untied, svint32_t, svint16_t,
+ 	     z0 = svabal_n_s32 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_s64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_s64_tied1:
+ **	sabal	z0\.d, z4\.s, z5\.s
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s64_tied1, svint64_t, svint32_t,
+ 	     z0 = svabal_s64 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_s64_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.d, \1\.s, z1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s64_tied2, svint64_t, svint32_t,
+ 		 z0_res = svabal_s64 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_s64_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	sabal	z0\.d, z1\.s, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_s64_tied3, svint64_t, svint32_t,
+ 		 z0_res = svabal_s64 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_s64_untied:
+ **	movprfx	z0, z1
+ **	sabal	z0\.d, z4\.s, z5\.s
+ **	ret
+ */
+ TEST_DUAL_Z (abal_s64_untied, svint64_t, svint32_t,
+ 	     z0 = svabal_s64 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_s64_tied1:
+ **	mov	(z[0-9]+\.s), w0
+ **	sabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s64_tied1, svint64_t, svint32_t, int32_t,
+ 	      z0 = svabal_n_s64 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_s64_untied:
+ **	mov	(z[0-9]+\.s), w0
+ **	movprfx	z0, z1
+ **	sabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_s64_untied, svint64_t, svint32_t, int32_t,
+ 	      z0 = svabal_n_s64 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_s64_tied1:
+ **	mov	(z[0-9]+\.s), #11
+ **	sabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s64_tied1, svint64_t, svint32_t,
+ 	     z0 = svabal_n_s64 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_s64_untied:
+ **	mov	(z[0-9]+\.s), #11
+ **	movprfx	z0, z1
+ **	sabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_s64_untied, svint64_t, svint32_t,
+ 	     z0 = svabal_n_s64 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u16.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u16.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u16.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_u16_tied1:
+ **	uabal	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u16_tied1, svuint16_t, svuint8_t,
+ 	     z0 = svabal_u16 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_u16_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.h, \1\.b, z1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u16_tied2, svuint16_t, svuint8_t,
+ 		 z0_res = svabal_u16 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_u16_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.h, z1\.b, \1\.b
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u16_tied3, svuint16_t, svuint8_t,
+ 		 z0_res = svabal_u16 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_u16_untied:
+ **	movprfx	z0, z1
+ **	uabal	z0\.h, z4\.b, z5\.b
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u16_untied, svuint16_t, svuint8_t,
+ 	     z0 = svabal_u16 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_u16_tied1:
+ **	mov	(z[0-9]+\.b), w0
+ **	uabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u16_tied1, svuint16_t, svuint8_t, uint8_t,
+ 	      z0 = svabal_n_u16 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_u16_untied:
+ **	mov	(z[0-9]+\.b), w0
+ **	movprfx	z0, z1
+ **	uabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u16_untied, svuint16_t, svuint8_t, uint8_t,
+ 	      z0 = svabal_n_u16 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_u16_tied1:
+ **	mov	(z[0-9]+\.b), #11
+ **	uabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u16_tied1, svuint16_t, svuint8_t,
+ 	     z0 = svabal_n_u16 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_u16_untied:
+ **	mov	(z[0-9]+\.b), #11
+ **	movprfx	z0, z1
+ **	uabal	z0\.h, z4\.b, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u16_untied, svuint16_t, svuint8_t,
+ 	     z0 = svabal_n_u16 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u32.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u32.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u32.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_u32_tied1:
+ **	uabal	z0\.s, z4\.h, z5\.h
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u32_tied1, svuint32_t, svuint16_t,
+ 	     z0 = svabal_u32 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_u32_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.s, \1\.h, z1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u32_tied2, svuint32_t, svuint16_t,
+ 		 z0_res = svabal_u32 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_u32_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.s, z1\.h, \1\.h
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u32_tied3, svuint32_t, svuint16_t,
+ 		 z0_res = svabal_u32 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_u32_untied:
+ **	movprfx	z0, z1
+ **	uabal	z0\.s, z4\.h, z5\.h
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u32_untied, svuint32_t, svuint16_t,
+ 	     z0 = svabal_u32 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_u32_tied1:
+ **	mov	(z[0-9]+\.h), w0
+ **	uabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u32_tied1, svuint32_t, svuint16_t, uint16_t,
+ 	      z0 = svabal_n_u32 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_u32_untied:
+ **	mov	(z[0-9]+\.h), w0
+ **	movprfx	z0, z1
+ **	uabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u32_untied, svuint32_t, svuint16_t, uint16_t,
+ 	      z0 = svabal_n_u32 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_u32_tied1:
+ **	mov	(z[0-9]+\.h), #11
+ **	uabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u32_tied1, svuint32_t, svuint16_t,
+ 	     z0 = svabal_n_u32 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_u32_untied:
+ **	mov	(z[0-9]+\.h), #11
+ **	movprfx	z0, z1
+ **	uabal	z0\.s, z4\.h, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u32_untied, svuint32_t, svuint16_t,
+ 	     z0 = svabal_n_u32 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u64.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u64.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/abal_u64.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,90 ----
+ /* { dg-do assemble { target aarch64_asm_sme2p3_ok } } */
+ /* { dg-do compile { target { ! aarch64_asm_sme2p3_ok } } } */
+ /* { dg-final { check-function-bodies "**" "" "-DCHECK_ASM" } } */
+ 
+ #include "test_sve_acle.h"
+ #pragma GCC target "+sve2p3"
+ #pragma GCC target "+sme2p3"
+ 
+ /*
+ ** abal_u64_tied1:
+ **	uabal	z0\.d, z4\.s, z5\.s
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u64_tied1, svuint64_t, svuint32_t,
+ 	     z0 = svabal_u64 (z0, z4, z5),
+ 	     z0 = svabal (z0, z4, z5))
+ 
+ /*
+ ** abal_u64_tied2:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.d, \1\.s, z1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u64_tied2, svuint64_t, svuint32_t,
+ 		 z0_res = svabal_u64 (z4, z0, z1),
+ 		 z0_res = svabal (z4, z0, z1))
+ 
+ /*
+ ** abal_u64_tied3:
+ **	mov	(z[0-9]+)\.d, z0\.d
+ **	movprfx	z0, z4
+ **	uabal	z0\.d, z1\.s, \1\.s
+ **	ret
+ */
+ TEST_DUAL_Z_REV (abal_u64_tied3, svuint64_t, svuint32_t,
+ 		 z0_res = svabal_u64 (z4, z1, z0),
+ 		 z0_res = svabal (z4, z1, z0))
+ 
+ /*
+ ** abal_u64_untied:
+ **	movprfx	z0, z1
+ **	uabal	z0\.d, z4\.s, z5\.s
+ **	ret
+ */
+ TEST_DUAL_Z (abal_u64_untied, svuint64_t, svuint32_t,
+ 	     z0 = svabal_u64 (z1, z4, z5),
+ 	     z0 = svabal (z1, z4, z5))
+ 
+ /*
+ ** abal_w0_u64_tied1:
+ **	mov	(z[0-9]+\.s), w0
+ **	uabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u64_tied1, svuint64_t, svuint32_t, uint32_t,
+ 	      z0 = svabal_n_u64 (z0, z4, x0),
+ 	      z0 = svabal (z0, z4, x0))
+ 
+ /*
+ ** abal_w0_u64_untied:
+ **	mov	(z[0-9]+\.s), w0
+ **	movprfx	z0, z1
+ **	uabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_ZX (abal_w0_u64_untied, svuint64_t, svuint32_t, uint32_t,
+ 	      z0 = svabal_n_u64 (z1, z4, x0),
+ 	      z0 = svabal (z1, z4, x0))
+ 
+ /*
+ ** abal_11_u64_tied1:
+ **	mov	(z[0-9]+\.s), #11
+ **	uabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u64_tied1, svuint64_t, svuint32_t,
+ 	     z0 = svabal_n_u64 (z0, z4, 11),
+ 	     z0 = svabal (z0, z4, 11))
+ 
+ /*
+ ** abal_11_u64_untied:
+ **	mov	(z[0-9]+\.s), #11
+ **	movprfx	z0, z1
+ **	uabal	z0\.d, z4\.s, \1
+ **	ret
+ */
+ TEST_DUAL_Z (abal_11_u64_untied, svuint64_t, svuint32_t,
+ 	     z0 = svabal_n_u64 (z1, z4, 11),
+ 	     z0 = svabal (z1, z4, 11))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,39 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "vect-ctz.h"
+ 
+ /* Without SVE the 0x80 needs a vector constant of its own.  */
+ /*
+ ** ctzb:
+ **	...
+ **	movi	v([0-9]+)\.16b, 0xffffffffffffff80
+ **	ldr	q([0-9]+), \[x[0-9]+\]
+ **	orr	v([0-9]+)\.16b, v\2\.16b, v\1\.16b
+ **	rbit	v([0-9]+)\.16b, v\3\.16b
+ **	clz	v([0-9]+)\.16b, v\4\.16b
+ **	str	q\5, \[x[0-9]+\]
+ **	ret
+ */
+ 
+ /* A halfword element needs REV16 as well as RBIT.  The 0x8000 fits the
+    immediate form of ORR here.  */
+ /*
+ ** ctzh:
+ **	...
+ **	ldr	q([0-9]+), \[x[0-9]+\]
+ **	orr	v\1\.8h, #128, lsl #8
+ **	rev16	v([0-9]+)\.16b, v\1\.16b
+ **	rbit	v([0-9]+)\.16b, v\2\.16b
+ **	clz	v([0-9]+)\.8h, v\3\.8h
+ **	str	q\4, \[x[0-9]+\]
+ **	ret
+ */
+ 
+ /* Both the fixed-length and the variable-length loop count this way, for each
+    of the two element sizes.  */
+ /* { dg-final { scan-assembler-times {\trbit\tv[0-9]+\.16b, v[0-9]+\.16b} 4 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tv[0-9]+\.16b, v[0-9]+\.16b} 2 } } */
+ /* { dg-final { scan-assembler-times {\trev16\tv[0-9]+\.16b, v[0-9]+\.16b} 2 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tv[0-9]+\.8h, v[0-9]+\.8h} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-2.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,40 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8.2-a+sve -fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ #include "vect-ctz.h"
+ 
+ /* With SVE the 0x80 folds into an immediate ORR, but the fixed-length loop
+    still counts with the Advanced SIMD RBIT and CLZ.  */
+ /*
+ ** ctzb:
+ **	...
+ **	ldr	q([0-9]+), \[x[0-9]+\]
+ **	orr	z([0-9]+)\.b, z\1\.b, -128
+ **	rbit	v([0-9]+)\.16b, v\2\.16b
+ **	clz	v([0-9]+)\.16b, v\3\.16b
+ **	str	q\4, \[x[0-9]+\]
+ **	ret
+ */
+ 
+ /*
+ ** ctzh:
+ **	...
+ **	ldr	q([0-9]+), \[x[0-9]+\]
+ **	orr	v\1\.8h, #128, lsl #8
+ **	rev16	v([0-9]+)\.16b, v\1\.16b
+ **	rbit	v([0-9]+)\.16b, v\2\.16b
+ **	clz	v([0-9]+)\.8h, v\3\.8h
+ **	str	q\4, \[x[0-9]+\]
+ **	ret
+ */
+ 
+ /* The variable-length loops are vectorised with SVE and count there instead.  */
+ /* { dg-final { scan-assembler-times {\trbit\tv[0-9]+\.16b, v[0-9]+\.16b} 2 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tv[0-9]+\.16b, v[0-9]+\.16b} 1 } } */
+ /* { dg-final { scan-assembler-times {\trev16\tv[0-9]+\.16b, v[0-9]+\.16b} 1 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tv[0-9]+\.8h, v[0-9]+\.8h} 1 } } */
+ /* { dg-final { scan-assembler-times {\trbit\tz[0-9]+\.b, p[0-9]+/m, z[0-9]+\.b} 1 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tz[0-9]+\.b, p[0-9]+/m, z[0-9]+\.b} 1 } } */
+ /* { dg-final { scan-assembler-times {\trbit\tz[0-9]+\.h, p[0-9]+/m, z[0-9]+\.h} 1 } } */
+ /* { dg-final { scan-assembler-times {\tclz\tz[0-9]+\.h, p[0-9]+/m, z[0-9]+\.h} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-3.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz-3.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,72 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ 
+ #include "vect-ctz.h"
+ 
+ #define N 61
+ static u8 a[N], d[N], e[N];
+ static u16 ah[N], dh[N], eh[N];
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ ctzb_ref (u8 *__restrict d, u8 *__restrict a)
+ {
+   for (int i = 0; i < 16; i++)
+     d[i] = __builtin_ctzg ((u8) (a[i] | 0x80));
+ }
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ ctzb_n_ref (u8 *__restrict d, u8 *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_ctzg (a[i], 8);
+ }
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ ctzh_ref (u16 *__restrict d, u16 *__restrict a)
+ {
+   for (int i = 0; i < 8; i++)
+     d[i] = __builtin_ctzg ((u16) (a[i] | 0x8000));
+ }
+ 
+ __attribute__((noipa, optimize ("O0"))) void
+ ctzh_n_ref (u16 *__restrict d, u16 *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_ctzg (a[i], 16);
+ }
+ 
+ int
+ main (void)
+ {
+   for (int i = 0; i < N; i++)
+     {
+       a[i] = (u8) (i * 37 + (i & 7));
+       ah[i] = (u16) (i * 9973 + (i & 15));
+     }
+ 
+   ctzb (d, a);
+   ctzb_ref (e, a);
+   for (int i = 0; i < 16; i++)
+     if (d[i] != e[i])
+       __builtin_abort ();
+ 
+   ctzb_n (d, a, N);
+   ctzb_n_ref (e, a, N);
+   for (int i = 0; i < N; i++)
+     if (d[i] != e[i])
+       __builtin_abort ();
+ 
+   ctzh (dh, ah);
+   ctzh_ref (eh, ah);
+   for (int i = 0; i < 8; i++)
+     if (dh[i] != eh[i])
+       __builtin_abort ();
+ 
+   ctzh_n (dh, ah, N);
+   ctzh_n_ref (eh, ah, N);
+   for (int i = 0; i < N; i++)
+     if (dh[i] != eh[i])
+       __builtin_abort ();
+ 
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz.h gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz.h
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-ctz.h	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-ctz.h	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,34 ----
+ /* Shared source for the Advanced SIMD and the SVE ctz code-quality tests
+    and for the execution test.  */
+ 
+ typedef __UINT8_TYPE__ u8;
+ typedef __UINT16_TYPE__ u16;
+ 
+ /* The OR keeps the input nonzero so that the loop is just the count.  */
+ __attribute__((noipa)) void
+ ctzb (u8 *__restrict d, u8 *__restrict a)
+ {
+   for (int i = 0; i < 16; i++)
+     d[i] = __builtin_ctzg ((u8) (a[i] | 0x80));
+ }
+ 
+ __attribute__((noipa)) void
+ ctzb_n (u8 *__restrict d, u8 *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_ctzg (a[i], 8);
+ }
+ 
+ __attribute__((noipa)) void
+ ctzh (u16 *__restrict d, u16 *__restrict a)
+ {
+   for (int i = 0; i < 8; i++)
+     d[i] = __builtin_ctzg ((u16) (a[i] | 0x8000));
+ }
+ 
+ __attribute__((noipa)) void
+ ctzh_n (u16 *__restrict d, u16 *__restrict a, int n)
+ {
+   for (int i = 0; i < n; i++)
+     d[i] = __builtin_ctzg (a[i], 16);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-1.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-1.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,73 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O3 -march=armv8-a" } */
+ /* { dg-additional-options "-fno-schedule-insns -fno-schedule-insns2" } */
+ /* { dg-final { check-function-bodies "**" "" } } */
+ 
+ typedef __UINT16_TYPE__ u16;
+ typedef __UINT8_TYPE__ u8;
+ typedef __INT16_TYPE__ i16;
+ typedef __INT8_TYPE__ i8;
+ 
+ static inline u8
+ clip_u8 (u16 x)
+ {
+   return x & (u16) ~(u16) 255 ? (u8) 255 : (u8) x;
+ }
+ 
+ /*
+ ** clu:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\]
+ **	uqxtn	v[0-9]+\.8b, v[0-9]+\.8h
+ **	uqxtn	v[0-9]+\.8b, v[0-9]+\.8h
+ **	stp	d[0-9]+, d[0-9]+, \[x[0-9]+\]
+ **	ret
+ */
+ void
+ clu (u8 *__restrict r, u16 *__restrict x)
+ {
+   for (int i = 0; i < 16; i++)
+     r[i] = clip_u8 (x[i]);
+ }
+ 
+ static inline i8
+ clip_i8 (i16 x)
+ {
+   i8 t = (i8) x;
+   return (i16) -128 <= x && x <= (i16) 127 ? t : x < 0 ? -128 : 127;
+ }
+ 
+ /*
+ ** cls:
+ **	...
+ **	ldp	q[0-9]+, q[0-9]+, \[x[0-9]+\]
+ **	sqxtn	v[0-9]+\.8b, v[0-9]+\.8h
+ **	sqxtn	v[0-9]+\.8b, v[0-9]+\.8h
+ **	stp	d[0-9]+, d[0-9]+, \[x[0-9]+\]
+ **	ret
+ */
+ void
+ cls (i8 *__restrict r, i16 *__restrict x)
+ {
+   for (int i = 0; i < 16; i++)
+     r[i] = clip_i8 (x[i]);
+ }
+ 
+ /* The same in variable-length loops, and at the other two element widths.  */
+ void
+ clu_n (u8 *__restrict r, u16 *__restrict x, int n)
+ {
+   for (int i = 0; i < n; i++)
+     r[i] = clip_u8 (x[i]);
+ }
+ 
+ void
+ cls_n (i8 *__restrict r, i16 *__restrict x, int n)
+ {
+   for (int i = 0; i < n; i++)
+     r[i] = clip_i8 (x[i]);
+ }
+ 
+ /* { dg-final { scan-assembler-times {\tuqxtn\tv[0-9]+\.8b, v[0-9]+\.8h} 3 } } */
+ /* { dg-final { scan-assembler-times {\tsqxtn\tv[0-9]+\.8b, v[0-9]+\.8h} 3 } } */
+ /* { dg-final { scan-assembler-not {\tuzp1\t} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-2.c gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/aarch64/vect-sat-trunc-2.c	Sun Aug 23 22:32:15 2026
***************
*** 0 ****
--- 1,57 ----
+ /* { dg-do run } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __UINT16_TYPE__ u16; typedef __UINT8_TYPE__ u8;
+ typedef __UINT32_TYPE__ u32; typedef __UINT64_TYPE__ u64;
+ typedef __INT16_TYPE__ i16; typedef __INT8_TYPE__ i8;
+ typedef __INT32_TYPE__ i32; typedef __INT64_TYPE__ i64;
+ #define N 137
+ 
+ #define DEFU(name, WT, NT, NMAX)					\
+   static inline NT clip_##name (WT x)					\
+   { return x & (WT) ~(WT) NMAX ? (NT) NMAX : (NT) x; }			\
+   __attribute__((noipa)) void name (NT *__restrict r, WT *__restrict x, int n) \
+   { for (int i = 0; i < n; i++) r[i] = clip_##name (x[i]); }		\
+   __attribute__((noipa, optimize ("O0")))				\
+   void name##_ref (NT *__restrict r, WT *__restrict x, int n)		\
+   { for (int i = 0; i < n; i++) r[i] = clip_##name (x[i]); }
+ 
+ #define DEFS(name, WT, NT, NMIN, NMAX)					\
+   static inline NT clip_##name (WT x)					\
+   { NT t = (NT) x;							\
+     return (WT) NMIN <= x && x <= (WT) NMAX ? t : x < 0 ? NMIN : NMAX; } \
+   __attribute__((noipa)) void name (NT *__restrict r, WT *__restrict x, int n) \
+   { for (int i = 0; i < n; i++) r[i] = clip_##name (x[i]); }		\
+   __attribute__((noipa, optimize ("O0")))				\
+   void name##_ref (NT *__restrict r, WT *__restrict x, int n)		\
+   { for (int i = 0; i < n; i++) r[i] = clip_##name (x[i]); }
+ 
+ DEFU (u16to8, u16, u8, 255)
+ DEFU (u32to16, u32, u16, 65535)
+ DEFU (u64to32, u64, u32, 0xffffffffu)
+ DEFS (i16to8, i16, i8, -128, 127)
+ DEFS (i32to16, i32, i16, -32768, 32767)
+ DEFS (i64to32, i64, i32, (i32) 0x80000000, 0x7fffffff)
+ 
+ static u16 a16[N]; static u32 a32[N]; static u64 a64[N];
+ static u8 d8[N], e8[N]; static u16 d16[N], e16[N]; static u32 d32[N], e32[N];
+ static unsigned long seed = 7;
+ static unsigned rnd (void) { seed = seed * 6364136223846793005UL + 1; return (unsigned)(seed >> 33); }
+ #define CHK(d, e, n) for (int i = 0; i < n; i++) if (d[i] != e[i]) __builtin_abort ();
+ int main (void)
+ {
+   for (int r = 0; r < 200; r++)
+     {
+       for (int i = 0; i < N; i++)
+ 	{ unsigned v = rnd ();
+ 	  a16[i] = (u16) v; a32[i] = v; a64[i] = ((u64) v << 32) | rnd ();
+ 	  if ((i & 7) == 0) { a16[i] = 0xffff; a32[i] = 0xffffffffu; a64[i] = ~0UL; } }
+       u16to8 (d8, a16, N); u16to8_ref (e8, a16, N); CHK (d8, e8, N)
+       u32to16 (d16, a32, N); u32to16_ref (e16, a32, N); CHK (d16, e16, N)
+       u64to32 (d32, a64, N); u64to32_ref (e32, a64, N); CHK (d32, e32, N)
+       i16to8 ((i8 *) d8, (i16 *) a16, N); i16to8_ref ((i8 *) e8, (i16 *) a16, N); CHK (d8, e8, N)
+       i32to16 ((i16 *) d16, (i32 *) a32, N); i32to16_ref ((i16 *) e16, (i32 *) a32, N); CHK (d16, e16, N)
+       i64to32 ((i32 *) d32, (i64 *) a64, N); i64to32_ref ((i32 *) e32, (i64 *) a64, N); CHK (d32, e32, N)
+     }
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c gcc-17-20260823/gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/arc/mulsi3_highpart-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,7 ****
  /* { dg-do run } */
  /* { dg-skip-if "ARC700 always has mpy option on" { arc700 } } */
  /* { dg-skip-if "ARC600 doesn't have mpy instruction" { arc6xx } } */
! /* { dg-options "-O2 -mmpy-option=0 -w -save-temps" } */
  
  #include <stdlib.h>
  
--- 1,7 ----
  /* { dg-do run } */
  /* { dg-skip-if "ARC700 always has mpy option on" { arc700 } } */
  /* { dg-skip-if "ARC600 doesn't have mpy instruction" { arc6xx } } */
! /* { dg-options "-O2 -mmpy-option=0 -w -save-temps -fno-expensive-optimizations" } */
  
  #include <stdlib.h>
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/cmse/cmse-18.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* Make sure FPCXT is not enabled.  */
! /* { dg-options "-mcmse -fdump-rtl-final -march=armv8-m.main+fp" } */
  
  typedef void (*f)(int) __attribute__((cmse_nonsecure_call));
  
--- 1,8 ----
  /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arch_v8m_main_ok } */
  /* Make sure FPCXT is not enabled.  */
! /* { dg-options "-mcmse -fdump-rtl-final" } */
! /* { dg-add-options arm_arch_v8m_main } */
  
  typedef void (*f)(int) __attribute__((cmse_nonsecure_call));
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/cmse/cmse-19.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/cmse/cmse-19.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/cmse/cmse-19.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/cmse/cmse-19.c	Sun Aug 23 22:32:16 2026
***************
*** 1,7 ****
  /* { dg-do compile } */
! /* This is a duplicate of cmse-18.c, targetting arm_v8_1m_mve, to make sure
!    FPCXT is enabled.  */
! /* { dg-options "-mcmse -fdump-rtl-final -march=armv8.1-m.main+mve" } */
  
  typedef void (*f)(int) __attribute__((cmse_nonsecure_call));
  
--- 1,9 ----
  /* { dg-do compile } */
! /* { dg-require-effective-target arm_arch_v8_1m_main_mve_ok } */
! /* This is a duplicate of cmse-18.c, targetting arm_v8_1m_main_mve, to make
!    sure FPCXT is enabled.  */
! /* { dg-options "-mcmse -fdump-rtl-final" } */
! /* { dg-add-options arm_arch_v8_1m_main_mve } */
  
  typedef void (*f)(int) __attribute__((cmse_nonsecure_call));
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/divmod-order-1.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/divmod-order-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/divmod-order-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/divmod-order-1.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arm_ok } */
+ /* { dg-skip-if "avoid conflicting multilib options" { *-*-* } { "-mthumb" } { "" } } */
+ /* { dg-skip-if "do not override -mcpu" { *-*-* } { "-mcpu=*" } { "-mcpu=arm1176jzf-s" } } */
+ /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "" } } */
+ /* { dg-options "-Os -marm -mcpu=arm1176jzf-s" } */
+ 
+ /* expand_divmod remembers the last division it expanded so that a following
+    modulo by the same constant can reuse the quotient.  That state used to be a
+    file-static that was never reset, so it carried from one function into the
+    next: m1 and m2 below are character for character identical, yet m1 saw the
+    state left behind by d and m2 saw the state left behind by m1, and the two
+    compiled differently.  Reordering the functions in the source changed the
+    generated code.
+ 
+    Both must now be expanded the same way.  */
+ 
+ int d  (int x) { return x / 3; }
+ int m1 (int x) { return x % 3; }
+ int m2 (int x) { return x % 3; }
+ 
+ /* m1 and m2 are identical, so they must make the same number of calls.  d is a
+    plain division and is expanded inline, so every libcall here comes from the
+    two modulo functions: one each, never one and none.  */
+ /* { dg-final { scan-assembler-times "bl\\s+__aeabi_idivmod" 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/long-mul-thumb1-inline.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/long-mul-thumb1-inline.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/long-mul-thumb1-inline.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/long-mul-thumb1-inline.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,47 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_thumb1_ok } */
+ /* { dg-options "-O2 -mthumb -mcpu=cortex-m0 -fdump-tree-forwprop1-details -fdump-tree-widening_mul-details" } */
+ 
+ /* Thumb-1 (cortex-m0) has no umull and no DImode multiply, so a DImode
+    multiply would expand to the __aeabi_lmul libcall.  widening_mul
+    re-synthesizes the recognized u32 high part from the HImode widening
+    multiply Thumb-1 does have, so no libcall is emitted.  */
+ 
+ typedef __INT32_TYPE__ i32;
+ typedef __UINT32_TYPE__ u32;
+ typedef __UINT64_TYPE__ u64;
+ 
+ u32 mulh32 (u32 x, u32 y)
+ {
+   u32 x_hi = x >> 16, x_lo = x & 0xFFFF;
+   u32 y_hi = y >> 16, y_lo = y & 0xFFFF;
+   u32 mulhilo = x_hi * y_lo;
+   u32 mullohi = x_lo * y_hi;
+   u32 cross_sum = mulhilo + mullohi;
+   u32 mullolo = x_lo * y_lo;
+   u32 shrlolo = mullolo >> 16;
+   u32 acs = cross_sum + shrlolo;
+   int carry = acs < mulhilo;
+   u32 cond = ((u32) carry << 16) + x_hi * y_hi;
+   return cond + (acs >> 16);
+ }
+ 
+ /* Signed operands sign-extended into the unsigned wide type.  The atom
+    accepts them via `(convert? @X)'; long_mul_split_operand must sign-
+    extend the narrow operand into the high half (arithmetic shift by
+    N-1 on the signed narrow) -- a broken sign-extend branch would
+    zero the high and miscompile any negative input.  */
+ u32 mulhs_split (i32 a, i32 b)
+ {
+   return (u32) (((u64) a * (u64) b) >> 32);
+ }
+ 
+ /* Recognizer canonicalizes; widening_mul re-synthesizes the longhand.  */
+ /* { dg-final { scan-tree-dump "Long multiplication high part folded" "forwprop1" } } */
+ /* { dg-final { scan-tree-dump-times "Lowered long-mul high-part chain" 2 "widening_mul" } } */
+ /* No multiplication libcall: the longhand stays inline.  */
+ /* { dg-final { scan-assembler-not "__aeabi_lmul" } } */
+ /* Split's signed branch emits an arithmetic shift by narrow_prec-1 on
+    each signed narrow source of mulhs_split -- once per operand,
+    absent when broken.  */
+ /* { dg-final { scan-tree-dump-times "\\(D\\) >> 31" 2 "widening_mul" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/long-mul-umull.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/long-mul-umull.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/long-mul-umull.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/long-mul-umull.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,73 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target arm_arm_ok } */
+ /* { dg-options "-O2 -marm -fdump-tree-widening_mul-details" } */
+ 
+ /* With umull available, the recognizer folds the u32 high-part longhand
+    to a DImode multiply that becomes a single umull, while the u64
+    longhand becomes a TImode chain that widening_mul re-synthesizes as
+    four umull.  No libcalls.  */
+ 
+ typedef __UINT64_TYPE__ u64;
+ typedef __UINT32_TYPE__ u32;
+ 
+ u32 mulh32 (u32 x, u32 y)
+ {
+   u32 x_hi = x >> 16, x_lo = x & 0xFFFF;
+   u32 y_hi = y >> 16, y_lo = y & 0xFFFF;
+   u32 mulhilo = x_hi * y_lo;
+   u32 mullohi = x_lo * y_hi;
+   u32 cross_sum = mulhilo + mullohi;
+   u32 mullolo = x_lo * y_lo;
+   u32 shrlolo = mullolo >> 16;
+   u32 acs = cross_sum + shrlolo;
+   int carry = acs < mulhilo;
+   u32 cond = ((u32) carry << 16) + x_hi * y_hi;
+   return cond + (acs >> 16);
+ }
+ 
+ u64 mulh64 (u64 x, u64 y)
+ {
+   u64 x_hi = x >> 32, x_lo = x & 0xFFFFFFFF;
+   u64 y_hi = y >> 32, y_lo = y & 0xFFFFFFFF;
+   u64 mulhilo = x_hi * y_lo;
+   u64 mullohi = x_lo * y_hi;
+   u64 cross_sum = mulhilo + mullohi;
+   u64 mullolo = x_lo * y_lo;
+   u64 shrlolo = mullolo >> 32;
+   u64 acs = cross_sum + shrlolo;
+   int carry = acs < mulhilo;
+   u64 cond = ((u64) carry << 32) + x_hi * y_hi;
+   return cond + (acs >> 32);
+ }
+ 
+ /* Two longhands chained through the low half, with the first high part also
+    live.  After recognition the second chain reads its operand off the first
+    product as a masked low half, so lowering both leaves a live TImode
+    multiply the target cannot expand.  */
+ 
+ u64 chain_low (u64 a, u64 b, u64 c, u64 *hi1)
+ {
+   *hi1 = mulh64 (a, b);
+   return mulh64 (a * b, c);
+ }
+ 
+ /* The same through the high half: after recognition the second chain
+    multiplies by the first product shifted down, and truncating that shift
+    would leave the product live instead.  */
+ 
+ u64 chain_high (u64 a, u64 b, u64 c, u64 *hi1)
+ {
+   u64 h1 = mulh64 (a, b);
+   *hi1 = h1;
+   return mulh64 (h1, c);
+ }
+ 
+ /* mulh32 collapses to one umull and mulh64 lowers to four; chain_low and
+    chain_high inline two longhands each, for nine and eight.  */
+ /* { dg-final { scan-assembler-times "\tumull\t" 22 } } */
+ /* One lowering in mulh64 and two in each chain.  mulh32 contributes none:
+    its DImode multiply is converted to a widening multiply instead.  */
+ /* { dg-final { scan-tree-dump-times "Lowered long-mul high-part chain" 5 "widening_mul" } } */
+ /* { dg-final { scan-tree-dump "Narrowed low-half-only long multiply" "widening_mul" } } */
+ /* { dg-final { scan-assembler-not "__aeabi_lmul" } } */
+ /* { dg-final { scan-assembler-not "__multi3" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/arm/pr71048.c gcc-17-20260823/gcc/testsuite/gcc.target/arm/pr71048.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/arm/pr71048.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/arm/pr71048.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,19 ----
+ /* PR target/71048: a write-only store to a misaligned volatile object must
+    not read the destination back.  The store is decomposed into byte/halfword
+    accesses on a strict-alignment target; each unit is fully written, so no
+    read-modify-write (and in particular no spurious volatile read) is needed.  */
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -mno-unaligned-access" } */
+ 
+ struct __attribute__((packed)) S { unsigned char pad; volatile unsigned val; };
+ 
+ void
+ wr (struct S *m, unsigned x)
+ {
+   m->val = x;
+ }
+ 
+ /* No load of the volatile destination should be emitted (matches ldr, ldrb,
+    ldrh).  */
+ /* { dg-final { scan-assembler-not {\mldr[bhd]?\M} } } */
+ /* { dg-final { scan-assembler-times {\mstrb\M} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/avr/torture/pr127004.c gcc-17-20260823/gcc/testsuite/gcc.target/avr/torture/pr127004.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/avr/torture/pr127004.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/avr/torture/pr127004.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,7 ----
+ /* { dg-do compile } */
+ /* { dg-additional-options "-std=c99" } */
+ 
+ unsigned f (unsigned x)
+ {
+   return (unsigned) (((unsigned long long) x * 0xAAAAAAAB) >> 32) >> 1;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/abi-mix-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/abi-mix-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/abi-mix-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/abi-mix-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -masm=att -mno-mmx -mno-80387 -msse" } */
  
  extern void callee_clobbered () [[gnu::preserve_none]];
  extern void callee_preserved () [[gnu::no_caller_saved_registers]];
--- 1,5 ----
  /* { dg-do compile { target { ! x32 } } } */
! /* { dg-options "-O2 -masm=att -mno-avx -mno-mmx -mno-80387 -msse" } */
  
  extern void callee_clobbered () [[gnu::preserve_none]];
  extern void callee_preserved () [[gnu::no_caller_saved_registers]];
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mavx2 -maes -mpclmul -mgfni -mprefetchi -mavx10.2 -mmovrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -mavx2 -maes -mpclmul -mgfni -mprefetchi -mavx10.2 -mmovrs -mavx10v2aux" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
***************
*** 913,918 ****
--- 913,923 ----
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 4, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 4, D, E, 4)
  
+ /* avx10v2auxintrin.h */
+ #define __builtin_ia32_vunpackb128_mask(A, B, C, D) __builtin_ia32_vunpackb128_mask(A, 8, C, D)
+ #define __builtin_ia32_vunpackb256_mask(A, B, C, D) __builtin_ia32_vunpackb256_mask(A, 8, C, D)
+ #define __builtin_ia32_vunpackb512_mask(A, B, C, D) __builtin_ia32_vunpackb512_mask(A, 8, C, D)
+ 
  #include <wmmintrin.h>
  #include <immintrin.h>
  #include <mm3dnow.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1i.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx10v2aux -O2 -fno-fuse-ops-with-volatile-access" } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m128i x128i;
+ volatile __m256i x256i;
+ volatile __m512i x512i;
+ volatile __mmask16 m16;
+ volatile __mmask32 m32;
+ volatile __mmask64 m64;
+ 
+ void extern
+ avx10v2aux_vunpack_test (void)
+ {
+   x128i = _mm_unpack_epi8 (x128i, 8);
+   x128i = _mm_mask_unpack_epi8 (x128i, m16, x128i, 8);
+   x128i = _mm_maskz_unpack_epi8 (m16, x128i, 8);
+ 
+   x256i = _mm256_unpack_epi8 (x256i, 16);
+   x256i = _mm256_mask_unpack_epi8 (x256i, m32, x256i, 16);
+   x256i = _mm256_maskz_unpack_epi8 (m32, x256i, 16);
+ 
+   x512i = _mm512_unpack_epi8 (x512i, 16);
+   x512i = _mm512_mask_unpack_epi8 (x512i, m64, x512i, 16);
+   x512i = _mm512_maskz_unpack_epi8 (m64, x512i, 16);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1j.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,43 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx10v2aux -O2 -fno-fuse-ops-with-volatile-access" } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+%xmm\[0-9\]+, \\(\[^\{\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+%ymm\[0-9\]+, \\(\[^\{\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ /* { dg-final { scan-assembler-times "vpmovssdb\[ \\t\]+%zmm\[0-9\]+, \\(\[^\{\n\]*\\)\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m128i x128i;
+ volatile __m256i x256i;
+ volatile __m512i x512i;
+ volatile __m128i res128i;
+ volatile __mmask8 m8;
+ volatile __mmask16 m16;
+ char *p;
+ 
+ void extern
+ avx10v2aux_vpmovssdb_test (void)
+ {
+   res128i = _mm_cvtss_epi32_epi8 (x128i);
+   res128i = _mm_mask_cvtss_epi32_epi8 (res128i, m8, x128i);
+   res128i = _mm_maskz_cvtss_epi32_epi8 (m8, x128i);
+   _mm_mask_cvtss_epi32_storeu_epi8 ((void *) p, m8, x128i);
+ 
+   res128i = _mm256_cvtss_epi32_epi8 (x256i);
+   res128i = _mm256_mask_cvtss_epi32_epi8 (res128i, m8, x256i);
+   res128i = _mm256_maskz_cvtss_epi32_epi8 (m8, x256i);
+   _mm256_mask_cvtss_epi32_storeu_epi8 ((void *) p, m8, x256i);
+ 
+   res128i = _mm512_cvtss_epi32_epi8 (x512i);
+   res128i = _mm512_mask_cvtss_epi32_epi8 (res128i, m16, x512i);
+   res128i = _mm512_maskz_cvtss_epi32_epi8 (m16, x512i);
+   _mm512_mask_cvtss_epi32_storeu_epi8 ((void *) p, m16, x512i);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1k.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,29 ----
+ /* Exercise the non-__OPTIMIZE__ (macro) path of the vunpackb intrinsics.  */
+ /* { dg-do compile } */
+ /* { dg-options "-mavx10v2aux -O0" } */
+ /* { dg-final { scan-assembler-times "vunpackb\[ \\t\]" 9 } } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m128i x128i;
+ volatile __m256i x256i;
+ volatile __m512i x512i;
+ volatile __mmask16 m16;
+ volatile __mmask32 m32;
+ volatile __mmask64 m64;
+ 
+ void extern
+ avx10v2aux_vunpack_noopt_test (void)
+ {
+   x128i = _mm_unpack_epi8 (x128i, 8);
+   x128i = _mm_mask_unpack_epi8 (x128i, m16, x128i, 9);
+   x128i = _mm_maskz_unpack_epi8 (m16, x128i, 10);
+ 
+   x256i = _mm256_unpack_epi8 (x256i, 16);
+   x256i = _mm256_mask_unpack_epi8 (x256i, m32, x256i, 17);
+   x256i = _mm256_maskz_unpack_epi8 (m32, x256i, 40);
+ 
+   x512i = _mm512_unpack_epi8 (x512i, 45);
+   x512i = _mm512_mask_unpack_epi8 (x512i, m64, x512i, 48);
+   x512i = _mm512_maskz_unpack_epi8 (m64, x512i, 60);
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1l.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1l.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1l.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx10v2aux-convert-1l.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-mavx10v2aux -O0" } */
+ 
+ #include <immintrin.h>
+ 
+ volatile __m128i x128i;
+ volatile __m256i x256i;
+ volatile __m512i x512i;
+ volatile __mmask16 m16;
+ volatile __mmask32 m32;
+ volatile __mmask64 m64;
+ 
+ void extern
+ avx10v2aux_vunpack_imm_range_test (void)
+ {
+   x128i = _mm_unpack_epi8 (x128i, 1); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x128i = _mm_mask_unpack_epi8 (x128i, m16, x128i, 14); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x128i = _mm_maskz_unpack_epi8 (m16, x128i, 21); /* { dg-error "the last argument must not use reserved value immediate" } */
+ 
+   x256i = _mm256_unpack_epi8 (x256i, 22); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x256i = _mm256_mask_unpack_epi8 (x256i, m32, x256i, 25); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x256i = _mm256_maskz_unpack_epi8 (m32, x256i, 29); /* { dg-error "the last argument must not use reserved value immediate" } */
+ 
+   x512i = _mm512_unpack_epi8 (x512i, 30); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x512i = _mm512_mask_unpack_epi8 (x512i, m64, x512i, 31); /* { dg-error "the last argument must not use reserved value immediate" } */
+   x512i = _mm512_maskz_unpack_epi8 (m64, x512i, 50); /* { dg-error "the last argument must not use reserved value immediate" } */
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-shiftqihi-constant-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx2 -mno-avx512f" } */
  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%ymm" 3 } }  */
  typedef char v32qi  __attribute__ ((vector_size (32)));
  typedef unsigned char v32uqi  __attribute__ ((vector_size (32)));
--- 1,6 ----
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx2 -mno-avx512f -mno-gfni" } */
  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%ymm" 3 } }  */
  typedef char v32qi  __attribute__ ((vector_size (32)));
  typedef unsigned char v32uqi  __attribute__ ((vector_size (32)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vbroadcastsi128-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler-times "vbroadcasti128\[ \\t\]+\[^\n\]*%ymm\[0-9\]+" 2 } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler-times "vbroadcasti128\[ \\t\]+\[^\n\]*%ymm\[0-9\]+" 2 } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vbroadcastss_ps256-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vbroadcastss\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vbroadcastss\[ \\t\]+\[^\n\]*%xmm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vextracti128-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vextracti128\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vextracti128\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vinserti128-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vinserti128\[ \\t\]+\[^\n\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vinserti128\[ \\t\]+\[^\n\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpand-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpand-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpand-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpand-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vpand\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vpand\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpand-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do run } */
! /* { dg-options "-mavx2 -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
  /* { dg-require-effective-target avx2 } */
  
  
--- 1,5 ----
  /* { dg-do run } */
! /* { dg-options "-mavx2 -mno-avx512f -mno-prefer-avx128 -O2 -ftree-vectorize -save-temps" } */
  /* { dg-require-effective-target avx2 } */
  
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpandn-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vpandn\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vpandn\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpor-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpor-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpor-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpor-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vpor\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vpor\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -O2" } */
  /* { dg-final { scan-assembler "vpxor\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx2 -mno-avx512f -O2" } */
  /* { dg-final { scan-assembler "vpxor\[ \\t\]+\[^\n\]*%ymm\[0-9\]" } } */
  
  #include <immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
  
  #define N 1024
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mno-avx512f -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
  
  #define N 1024
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
  
  void
  avx_test (char **cp, char **ep)
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O3 -dp -mno-avx512f -mavx -mavx256-split-unaligned-load -mno-prefer-avx128" } */
  
  void
  avx_test (char **cp, char **ep)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-load -mtune=generic" } */
  
  #define N 1024
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mno-avx512f -mavx -mavx256-split-unaligned-load -mtune=generic" } */
  
  #define N 1024
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */
  
  #define N 1024
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O3 -dp -mno-avx512f -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-common" } */
  
  #define N 1024
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O3 -mtune-ctrl=sse_typeless_stores -dp -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-tree-loop-distribute-patterns" } */
  
  #define N 1024
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O3 -mtune-ctrl=sse_typeless_stores -dp -mno-avx512f -mavx -mavx256-split-unaligned-store -mno-prefer-avx128 -fno-tree-loop-distribute-patterns" } */
  
  #define N 1024
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/avx512bw-shiftqihi-constant-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw" } */
  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%zmm" 2 } }  */
  /* { dg-final { scan-assembler-times "vpternlogd\[^\n\]*%zmm" 1 } }  */
  typedef char v64qi  __attribute__ ((vector_size (64)));
--- 1,6 ----
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -mavx512bw -mno-gfni" } */
  /* { dg-final { scan-assembler-times "vpand\[^\n\]*%zmm" 2 } }  */
  /* { dg-final { scan-assembler-times "vpternlogd\[^\n\]*%zmm" 1 } }  */
  typedef char v64qi  __attribute__ ((vector_size (64)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-4.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-5.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-6.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-7.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/builtin-copysign-8a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-avx -msse2 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target { ! ia32 } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-256-vector.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-256-vector.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-256-vector.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-256-vector.c	Sun Aug 23 22:32:16 2026
***************
*** 2,8 ****
     instructions vector into vfmaddps on FMA4 systems.  */
  
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic" } */
  
  extern void exit (int);
  
--- 2,8 ----
     instructions vector into vfmaddps on FMA4 systems.  */
  
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -mno-avx512f -ftree-vectorize -mtune=generic" } */
  
  extern void exit (int);
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-builtin-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-builtin-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-builtin-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-builtin-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O3 -mfma4 -mtune=generic" } */
  
  #ifndef SIZE
  #define SIZE 1024
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O3 -mfma4 -mno-avx512f -mtune=generic" } */
  
  #ifndef SIZE
  #define SIZE 1024
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-vector-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-vector-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-vector-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-vector-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */
  
  float r[256], s[256];
  float x[256];
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -mno-avx512f -ftree-vectorize -mtune=generic -mno-fma" } */
  
  float r[256], s[256];
  float x[256];
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-vector.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-vector.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/fma4-vector.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/fma4-vector.c	Sun Aug 23 22:32:16 2026
***************
*** 2,8 ****
     instructions vector into vfmaddps on FMA4 systems.  */
  
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-fma" } */
  
  extern void exit (int);
  
--- 2,8 ----
     instructions vector into vfmaddps on FMA4 systems.  */
  
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -mfma4 -ftree-vectorize -mtune=generic -mno-avx512f -mno-fma" } */
  
  extern void exit (int);
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/funcspec-56.inc gcc-17-20260823/gcc/testsuite/gcc.target/i386/funcspec-56.inc
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/funcspec-56.inc	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/funcspec-56.inc	Sun Aug 23 22:32:16 2026
*************** extern void test_amx_avx512 (void)		__at
*** 92,97 ****
--- 92,98 ----
  extern void test_amx_fp8 (void)                 __attribute__((__target__("amx-fp8")));
  extern void test_movrs (void)			__attribute__((__target__("movrs")));
  extern void test_amx_movrs (void)		__attribute__((__target__("amx-movrs")));
+ extern void test_avx10v2aux (void)		__attribute__((__target__("avx10v2aux")));
  
  extern void test_no_sgx (void)			__attribute__((__target__("no-sgx")));
  extern void test_no_avx512vpopcntdq(void)	__attribute__((__target__("no-avx512vpopcntdq")));
*************** extern void test_no_amx_avx512 (void)		_
*** 185,190 ****
--- 186,192 ----
  extern void test_no_amx_fp8 (void)              __attribute__((__target__("no-amx-fp8")));
  extern void test_no_movrs (void)		__attribute__((__target__("no-movrs")));
  extern void test_no_amx_movrs (void)		__attribute__((__target__("no-amx-movrs")));
+ extern void test_no_avx10v2aux (void)		__attribute__((__target__("no-avx10v2aux")));
  
  extern void test_arch_nocona (void)		__attribute__((__target__("arch=nocona")));
  extern void test_arch_core2 (void)		__attribute__((__target__("arch=core2")));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/fuse-caller-save-xmm.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-avx -fipa-ra -fomit-frame-pointer" } */
  
  typedef double v2df __attribute__((vector_size (16)));
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-avx -mtune-ctrl=^sse_packed_single_insn_optimal -fipa-ra -fomit-frame-pointer" } */
  
  typedef double v2df __attribute__((vector_size (16)));
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/ifcvt-average-cost-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/ifcvt-average-cost-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/ifcvt-average-cost-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/ifcvt-average-cost-1.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile } */
+ /* { dg-require-effective-target lp64 } */
+ /* { dg-options "-O2 -mtune=generic --param=max-rtl-if-conversion-unpredictable-cost=0 -fdump-rtl-ce1" } */
+ 
+ /* These functions describe the same branch probabilities and arm costs with
+    the arms reversed.  The scaled cost difference is exactly halfway between
+    two integers.  */
+ long
+ then_cheaper (long c, long a, long b)
+ {
+   long x;
+   if (__builtin_expect_with_probability (c != 0, 0, 0.9375))
+     x = a ^ b;
+   else
+     x = b * 3 + 1;
+   return x;
+ }
+ 
+ long
+ then_costlier (long c, long a, long b)
+ {
+   long x;
+   if (__builtin_expect_with_probability (c == 0, 1, 0.9375))
+     x = b * 3 + 1;
+   else
+     x = a ^ b;
+   return x;
+ }
+ 
+ /* { dg-final { scan-rtl-dump-times "if-conversion succeeded through noce_try_cmove_arith" 2 "ce1" } } */
+ /* { dg-final { scan-assembler-times {\tcmov} 2 } } */
+ /* { dg-final { scan-assembler-not {\tj(e|ne)\t} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/long-mul-phi-split.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/long-mul-phi-split.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/long-mul-phi-split.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/long-mul-phi-split.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,50 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -fdump-tree-widening_mul-details" } */
+ 
+ /* The product has an operand PHI carrying a sign-extended value, which only
+    long_mul_split_phi splits.  */
+ 
+ typedef unsigned long long u64;
+ typedef unsigned int u32;
+ typedef struct { u64 w[2]; } u128;
+ 
+ u128 pCS, ES;
+ u64 ARS1, ES32, R64H, S1, S3;
+ int src, flag;
+ 
+ void
+ f (void)
+ {
+   ES.w[1] = src;			/* Signed, so this sign-extends.  */
+   if (src < 0)
+     {
+       u64 PH;
+       if (flag)
+ 	ES.w[1]--;			/* Leaves the operand a PHI.  */
+       u64 CXH = ES.w[1] >> 32, CXL = (u32) ES.w[1];
+       u64 CYH = ARS1 >> 32, CYL = (u32) ARS1;
+       u64 PM = CXH * CYL;
+       PH = CXH * CYH;
+       u64 PL = CXL * CYL, PM2 = CXL * CYH;
+       PH += PM >> 32;
+       PM = (u32) PM + PM2 + (PL >> 32);
+       if (PH + (PM >> 32))
+ 	R64H++;
+       S3 = R64H;
+     }
+   {
+     u64 PH;
+     u64 CXH = ES32 >> 32, CXL = (u32) ES32;
+     u64 CYH = ES.w[1] >> 32, CYL = (u32) ES.w[1];
+     u64 PM = CXH * CYL;
+     PH = CXH * CYH;
+     u64 PL = CXL * CYL, PM2 = CXL * CYH;
+     PH += PM >> 32;
+     PM = (u32) PM + PM2 + (PL >> 32);
+     if (PH + (PM >> 32))
+       S1 = S3;
+   }
+   pCS.w[1] = S1;
+ }
+ 
+ /* { dg-final { scan-tree-dump "Split long-multiply operand PHI" "widening_mul" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/long-mul-sweep.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/long-mul-sweep.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/long-mul-sweep.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/long-mul-sweep.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile { target ia32 } } */
+ /* { dg-options "-O2 -fdump-tree-widening_mul-details" } */
+ 
+ /* The high half is also read by a second multiply, so the chain lowering
+    cannot retire the product and only the sweep rewrites it.  */
+ 
+ typedef unsigned long long u64;
+ typedef unsigned int u32;
+ 
+ u64 x, y, cond, PL, PM, PM2, res, hi;
+ 
+ void
+ f (void)
+ {
+   u64 PH;
+   u64 CXH = x >> 32, CXL = (u32) x;
+   u64 CYH = y >> 32, CYL = (u32) y;
+   PM = CXH * CYL;
+   PH = CXH * CYH;
+   PL = CXL * CYL;
+   PM2 = CXL * CYH;
+   PH += PM >> 32;
+   PM = (u32) PM + PM2 + (PL >> 32);
+   hi = PH + (PM >> 32);
+   if (cond)
+     /* Keeps the high half, and so the product, live.  */
+     res = (u32) hi * (PM >> 32);
+ }
+ 
+ /* { dg-final { scan-tree-dump "Narrowed high half of long multiply" "widening_mul" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/long_mul.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/long_mul.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/long_mul.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/long_mul.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,100 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O3" } */
+ 
+ typedef __UINT32_TYPE__ uint32_t;
+ typedef __UINT64_TYPE__ uint64_t;
+ 
+ /* 64-bit ladder pattern for high part.  */
+ uint64_t mulh_ladder (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_hi = y >> 32;
+   uint64_t t0 = y_lo * x_lo;
+   uint64_t t1 = y_lo * x_hi;
+   uint64_t t2 = y_hi * x_lo;
+   uint64_t t3 = y_hi * x_hi;
+   uint64_t t0_hi = t0 >> 32;
+   uint64_t u0 = t0_hi + t1;
+   uint64_t u0_lo = u0 & 0xFFFFFFFF;
+   uint64_t u0_hi = u0 >> 32;
+   uint64_t u1 = u0_lo + t2;
+   uint64_t u1_hi = u1 >> 32;
+   uint64_t u2 = u0_hi + t3;
+   return u2 + u1_hi;
+ }
+ 
+ /* 64-bit carry pattern for high part.  */
+ uint64_t mulh_carry (uint64_t x, uint64_t y)
+ {
+   uint64_t x_lo = x & 0xFFFFFFFF;
+   uint64_t x_hi = x >> 32;
+   uint64_t y_lo = y & 0xFFFFFFFF;
+   uint64_t y_hi = y >> 32;
+   uint64_t y_lo_x_hi = y_lo * x_hi;
+   uint64_t y_hi_x_hi = y_hi * x_hi;
+   uint64_t y_hi_x_lo = y_hi * x_lo;
+   uint64_t y_lo_x_lo = y_lo * x_lo;
+   uint64_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = cross_sum < y_lo_x_hi;
+   uint64_t carry = (uint64_t) carry_out << 32;
+   uint64_t y_lo_x_lo_hi = y_lo_x_lo >> 32;
+   uint64_t cross_sum_lo = cross_sum & 0xFFFFFFFF;
+   uint64_t cross_sum_hi = cross_sum >> 32;
+   uint64_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint64_t interm = cross_sum_hi + y_hi_x_hi;
+   uint64_t low_accum_hi = low_accum >> 32;
+   uint64_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* 32-bit ladder pattern for high part.  */
+ uint32_t mulh_ladder_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_hi = y >> 16;
+   uint32_t t0 = y_lo * x_lo;
+   uint32_t t1 = y_lo * x_hi;
+   uint32_t t2 = y_hi * x_lo;
+   uint32_t t3 = y_hi * x_hi;
+   uint32_t t0_hi = t0 >> 16;
+   uint32_t u0 = t0_hi + t1;
+   uint32_t u0_lo = u0 & 0xFFFF;
+   uint32_t u0_hi = u0 >> 16;
+   uint32_t u1 = u0_lo + t2;
+   uint32_t u1_hi = u1 >> 16;
+   uint32_t u2 = u0_hi + t3;
+   return u2 + u1_hi;
+ }
+ 
+ /* 32-bit carry pattern for high part.  */
+ uint32_t mulh_carry_32 (uint32_t x, uint32_t y)
+ {
+   uint32_t x_lo = x & 0xFFFF;
+   uint32_t x_hi = x >> 16;
+   uint32_t y_lo = y & 0xFFFF;
+   uint32_t y_hi = y >> 16;
+   uint32_t y_lo_x_hi = y_lo * x_hi;
+   uint32_t y_hi_x_hi = y_hi * x_hi;
+   uint32_t y_hi_x_lo = y_hi * x_lo;
+   uint32_t y_lo_x_lo = y_lo * x_lo;
+   uint32_t cross_sum = y_hi_x_lo + y_lo_x_hi;
+   int carry_out = (cross_sum < y_lo_x_hi);
+   uint32_t carry = (uint32_t) carry_out << 16;
+   uint32_t y_lo_x_lo_hi = y_lo_x_lo >> 16;
+   uint32_t cross_sum_lo = cross_sum & 0xFFFF;
+   uint32_t cross_sum_hi = cross_sum >> 16;
+   uint32_t low_accum = cross_sum_lo + y_lo_x_lo_hi;
+   uint32_t interm = cross_sum_hi + y_hi_x_hi;
+   uint32_t low_accum_hi = low_accum >> 16;
+   uint32_t interm_plus_carry = interm + carry;
+   return interm_plus_carry + low_accum_hi;
+ }
+ 
+ /* 64-bit patterns should emit mulq (unsigned 64x64->128 multiply).  */
+ /* { dg-final { scan-assembler-times "\tmulq" 2 } } */
+ /* 32-bit patterns should emit imulq (64-bit multiply of zero-extended operands).  */
+ /* { dg-final { scan-assembler-times "\timulq" 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/memset-pr120683-10.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
  /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-sse -mtune=generic -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { lp64 && { ! *-*-darwin* } } } {^\t?\.} } } */
  /* { dg-final { check-function-bodies "*D" "*E" "" { target { lp64 && *-*-darwin* } } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/memset-pr120683-12.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-sse -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mno-sse -mtune=generic -mmemset-strategy=unrolled_loop:256:noalign,libcall:-1:noalign" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target lp64 } {^\t?\.} } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/no-callee-saved-15.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
  extern fn_t bar;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=x86-64" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern char *dst;
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=skylake" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern char *dst;
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern char *dst;
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-4a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-4a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-4a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-4a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=skylake -mtune-ctrl=avx256_move_by_pieces" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern char array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-4b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-4b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-4b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-4b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #include "pr100865-4a.c"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-5a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-5a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-5a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-5a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern short array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-5b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-5b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-5b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-5b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #include "pr100865-5a.c"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern int array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #include "pr100865-6a.c"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6c.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6c.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-6c.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-6c.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake -mno-avx2" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern int array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern long long int array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #include "pr100865-7a.c"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7c.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7c.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr100865-7c.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr100865-7c.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake -mno-avx2" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern long long int array[64];
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mavx512vl" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  /* { dg-final { scan-assembler-times "vpternlog" 4 } } */
  /* { dg-final { scan-assembler-times "\\\{1to4\\\}" 4 } } */
  #include<immintrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr102021.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr102021.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr102021.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr102021.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #include<immintrin.h>
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr105735-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr105735-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr105735-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr105735-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
! /* { dg-final { scan-tree-dump-times {final value replacement} 8 "sccp" } } */
  
  unsigned int
  __attribute__((noipa))
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
! /* { dg-final { scan-tree-dump-times {final value replacement} 9 "sccp" } } */
  
  unsigned int
  __attribute__((noipa))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr105735-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr105735-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr105735-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr105735-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
! /* { dg-final { scan-tree-dump-times {final value replacement} 8 "sccp" } } */
  
  unsigned int
  __attribute__((noipa))
--- 1,6 ----
  /* { dg-do compile } */
  /* { dg-options "-O1 -fdump-tree-sccp-details" } */
! /* { dg-final { scan-tree-dump-times {final value replacement} 9 "sccp" } } */
  
  unsigned int
  __attribute__((noipa))
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr106060-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr106060-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr106060-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr106060-2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64-v3" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  #include <immintrin.h>
  
  __m256i
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr106060-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr106060-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr106060-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr106060-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O3 -march=x86-64-v3" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  #include <immintrin.h>
  
  __m256i
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr122343-1b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr122343-1b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr122343-1b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mtune=generic -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr122343-5b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr122343-5b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr122343-5b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
  /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mtune=generic -fomit-frame-pointer -fno-fuse-ops-with-volatile-access" } */
  /* { dg-additional-options "-mregparm=1" { target ia32 } } */
  /* { dg-final { check-function-bodies "**" "*#" "" { target { ! *-*-darwin* } } {^\t?\.} } } */
  /* { dg-final { check-function-bodies "*D" "*E" "" { target { *-*-darwin* && lp64 } } {^\t?\.} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-1a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-1a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-1a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-1a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-1b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-1b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-1b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-1b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-2a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-2a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-2a.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-2a.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-2b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-2b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-2b.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-2b.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-4.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr125436-4.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr125436-4.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
--- 1,5 ----
  /* { dg-do compile { target { *-*-linux* && lp64 } } } */
! /* { dg-options "-O1 -fPIC -mabi=ms -mtls-dialect=gnu -mtune-ctrl=^prologue_using_move,^epilogue_using_move -mno-avx -mno-push-args -fomit-frame-pointer -mtune=generic" } */
  /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
  /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-1.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **.LFB0:
+ **	.cfi_startproc
+ **	cmpl	%esi, %edi
+ **	movl	%esi, %eax
+ **	cmovle	%edi, %eax
+ **	ret
+ **...
+ */
+ 
+ int
+ func (int a, int b)
+ {
+   long long int x = a;
+   long long int y = b;
+   long long int z = x < y ? x : y;
+   return z;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-2.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **.LFB0:
+ **	.cfi_startproc
+ **	cmpl	%esi, %edi
+ **	movl	%esi, %eax
+ **	cmovle	%edi, %eax
+ **	movslq	%eax, %rcx
+ **	movq	%rcx, \(%[er]dx\)
+ **	ret
+ **...
+ */
+ 
+ int
+ func (int a, int b, long long int *p)
+ {
+   long long int x = a;
+   long long int y = b;
+   long long int z = x < y ? x : y;
+   *p = z;
+   return z;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-3.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-3.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,11 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=x86-64" } */
+ 
+ extern char *var1;
+ extern int var2;
+ 
+ void
+ func (void)
+ {
+   var2 = var1[1] + var1[0];
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-4.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-4.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,26 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2 -march=x86-64" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movdqa	.LC0\(%rip\), %xmm0
+ **	movups	%xmm0, var\(%rip\)
+ **	movdqa	.LC1\(%rip\), %xmm0
+ **	movups	%xmm0, var\+16\(%rip\)
+ **	ret
+ **...
+ */
+ 
+ extern unsigned int var[8];
+ 
+ void
+ func (void)
+ {
+   int i;
+   for (i = 0; i < 8; i++)
+     var[i] = (float) i;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-5.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-5.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-5.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2 -march=x86-64" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	\$34, var\(%rip\)
+ **	ret
+ **...
+ */
+ 
+ extern unsigned int var;
+ 
+ void
+ func (void)
+ {
+   var = (float) 34;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-6.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-6.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126784-6.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126784-6.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,25 ----
+ /* { dg-do compile { target { *-*-linux* && { ! ia32 } } } } */
+ /* { dg-options "-O2 -march=x86-64" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target "*-*-*" } {^\t?\.}  } } */
+ 
+ /*
+ **func:
+ **.LFB0:
+ **	.cfi_startproc
+ **	movl	%edi, %edi
+ **	pxor	%xmm0, %xmm0
+ **	cvtsi2ssq	%rdi, %xmm0
+ **	cvttss2siq	%xmm0, %rax
+ **	movl	%eax, var\(%rip\)
+ **	ret
+ **...
+ */
+ 
+ extern unsigned int var;
+ 
+ void
+ func (unsigned int i)
+ {
+   var = (float) i;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126788.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126788.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126788.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126788.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,24 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O -msse2" } */
+ 
+ typedef int  v2si __attribute__((vector_size (8)));
+ typedef unsigned int  v2usi __attribute__((vector_size (8)));
+ typedef long long v2di __attribute__((vector_size (16)));
+ 
+ v2si
+ f1 (v2si a, v2si b)
+ {
+ 
+   v2di z = __builtin_convertvector (a, v2di);
+   return __builtin_convertvector (z, v2si);
+ }
+ 
+ v2usi
+ f2 (v2si a, v2si b)
+ {
+ 
+   v2di z = __builtin_convertvector (a, v2di);
+   return __builtin_convertvector (z, v2usi);
+ }
+ 
+ /* { dg-final { scan-assembler-not "xmm" { target { ! ia32 } } } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-1a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-1a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-1a.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-1a.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,55 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=x86-64-v4" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **func1:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorb	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ void
+ func1 (void)
+ {
+   unsigned char k = -1;
+   __asm volatile ("" : : "k" (k));
+ }
+ 
+ /*
+ **func2:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorw	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ void
+ func2 (void)
+ {
+   unsigned short k = -1;
+   __asm volatile ("" : : "k" (k));
+ }
+ 
+ /*
+ **func3:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnord	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ void
+ func3 (void)
+ {
+   unsigned int k = -1;
+   __asm volatile ("" : : "k" (k));
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-1b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-1b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-1b.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-1b.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,36 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=x86-64-v4 -mtune=znver4" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **func1:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorb	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ /*
+ **func2:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorw	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ /*
+ **func3:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnord	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr126959-1a.c"
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-2a.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-2a.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-2a.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-2a.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,21 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -march=x86-64-v4" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **func:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorq	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ void
+ func (void)
+ {
+   unsigned long long k = -1;
+   __asm volatile ("" : : "k" (k));
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-2b.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-2b.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr126959-2b.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr126959-2b.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,16 ----
+ /* { dg-do compile { target { ! ia32 } } } */
+ /* { dg-options "-O2 -march=x86-64-v4 -mtune=znver4" } */
+ /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
+ /* { dg-final { check-function-bodies "**" "" "" { target *-*-* } {^\t?\.} } } */
+ 
+ /*
+ **func:
+ **.LFB[0-9]+:
+ **	.cfi_startproc
+ **	kxnorq	%k0, %k0, %k0
+ **	ret
+ **	.cfi_endproc
+ **...
+ */
+ 
+ #include "pr126959-2a.c"
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr15184-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr15184-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr15184-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr15184-1.c	Sun Aug 23 22:32:16 2026
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -march=pentiumpro" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #define regparm __attribute__((__regparm__(1)))
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr15184-2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr15184-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr15184-2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr15184-2.c	Sun Aug 23 22:32:16 2026
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -march=pentiumpro" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #define regparm __attribute__((__regparm__(1)))
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr54855-3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr54855-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr54855-3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr54855-3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -msse2 -mfpmath=sse" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  /* { dg-final { scan-assembler-times "subsd" 1 } } */
  /* { dg-final { scan-assembler-not "movapd" } } */
  /* { dg-final { scan-assembler-not "movsd" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr54855-7.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr54855-7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr54855-7.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr54855-7.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -msse -mfpmath=sse" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  /* { dg-final { scan-assembler-times "divss" 1 } } */
  /* { dg-final { scan-assembler-not "movaps" } } */
  /* { dg-final { scan-assembler-not "movss" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr70325.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr70325.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr70325.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr70325.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* PR target/70325 */
  /* { dg-do compile } */
! /* { dg-options "-fpermissive -mavx512vl -O2" } */
  
  typedef char C __attribute((__vector_size__(32)));
  typedef int I __attribute((__vector_size__(32)));
--- 1,6 ----
  /* PR target/70325 */
  /* { dg-do compile } */
! /* { dg-options "-fpermissive -mavx512vl -mno-avx512bw -O2" } */
  
  typedef char C __attribute((__vector_size__(32)));
  typedef int I __attribute((__vector_size__(32)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr78035.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr78035.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr78035.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr78035.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern int a;
  extern int b;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr81736-5.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr81736-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr81736-5.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr81736-5.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -fno-omit-frame-pointer -mavx" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  typedef int v8si __attribute__ ((vector_size (32)));
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr84876.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr84876.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr84876.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr84876.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target int128 } } */
! /* { dg-options "-w" } */
  
  __int128 test (__int128 a)
  {
--- 1,5 ----
  /* { dg-do compile { target int128 } } */
! /* { dg-options "-mno-avx512f -w" } */
  
  __int128 test (__int128 a)
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr90773-17.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr90773-17.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr90773-17.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr90773-17.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -march=skylake-avx512" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  extern char *dst;
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr92080-12.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr92080-12.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/pr92080-12.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/pr92080-12.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
  /* { dg-additional-options "-O3 -mno-mmx -march=icelake-server" } */
! /* { dg-final { scan-assembler-times "vpbroadcastb" 1 } } */
  
  signed char a;
  signed char f (int i, int j)
--- 1,29 ----
+ /* PR tree-optimization/112104  */
  /* { dg-do compile } */
  /* { dg-additional-options "-O3 -mno-mmx -march=icelake-server" } */
! /* Keep labels and directives ('.cfi_startproc', '.cfi_endproc').  */
! /* { dg-final { check-function-bodies "**" "" "" { target { *-*-linux* && { ! ia32 } } } {^\t?\.} } } */
! 
! /*
! **f:
! **.LFB0:
! **	.cfi_startproc
! **	testl	%edi, %edi
! **	je	.L3
! **	movl	%edi, %eax
! **	andl	\$1, %edi
! **	negl	%edi
! **	negl	%eax
! **	andl	%esi, %edi
! **	xorb	%dil, a\(%rip\)
! **	ret
! **...
! **.L3:
! **	xorl	%eax, %eax
! **	ret
! **	.cfi_endproc
! **...
! */
  
  signed char a;
  signed char f (int i, int j)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/preserve-none-20.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/preserve-none-20.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/preserve-none-20.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/preserve-none-20.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile } */
  /* { dg-options "-O2 -mtune-ctrl=^prologue_using_move,^epilogue_using_move" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  typedef void (*fn_t) (void) __attribute__ ((no_callee_saved_registers));
  extern fn_t bar;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-12.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-12.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-12.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-12.c	Sun Aug 23 22:32:16 2026
***************
*** 3,9 ****
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */
  
  #include <x86intrin.h>
  
--- 3,9 ----
     popcntintrin.h gfniintrin.h and mm_malloc.h are usable
     with -O -std=c89 -pedantic-errors.  */
  /* { dg-do compile } */
! /* { dg-options "-O -std=c89 -pedantic-errors -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
  
  #include <x86intrin.h>
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-13.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-13.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-13.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-13.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mavx512vp2intersect -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mcmpccxadd -mamx-fp16 -mprefetchi -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
***************
*** 920,923 ****
--- 920,928 ----
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 4, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 4, D, E, 4)
  
+ /* avx10v2auxintrin.h */
+ #define __builtin_ia32_vunpackb128_mask(A, B, C, D) __builtin_ia32_vunpackb128_mask(A, 8, C, D)
+ #define __builtin_ia32_vunpackb256_mask(A, B, C, D) __builtin_ia32_vunpackb256_mask(A, 8, C, D)
+ #define __builtin_ia32_vunpackb512_mask(A, B, C, D) __builtin_ia32_vunpackb512_mask(A, 8, C, D)
+ 
  #include <x86intrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-14.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-14.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-14.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-14.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -msse4a -m3dnow -mavx -mavx2 -mfma4 -mxop -maes -mpclmul -mpopcnt -mabm -mlzcnt -mbmi -mbmi2 -mtbm -mlwp -mfsgsbase -mrdrnd -mf16c -mfma -mrtm -mrdseed -mprfchw -madx -mfxsr -mxsaveopt -msha -mxsavec -mxsaves -mclflushopt -mclwb -mmwaitx -mclzero -mpku -msgx -mrdpid -mgfni -mpconfig -mwbnoinvd -menqcmd -mavx512vp2intersect -mserialize -mtsxldtrk -mamx-tile -mamx-int8 -mamx-bf16 -mkl -mwidekl -mavxvnni -mavxifma -mavxvnniint8 -mavxneconvert -mamx-fp16 -mraoint -mamx-complex -mavxvnniint16 -msm3 -msha512 -msm4 -mavx10.2 -mamx-avx512 -mamx-fp8 -mmovrs -mamx-movrs -mavx10v2aux" } */
  /* { dg-add-options bind_pic_locally } */
  
  #include <mm_malloc.h>
*************** test_4x (_mm_mask_minmax_round_ss, __m12
*** 1192,1194 ****
--- 1192,1205 ----
  test_2x (_mm_minmax_round_sh, __m128h, __m128h, __m128h, 100, 4)
  test_3x (_mm_maskz_minmax_round_sh, __m128h, __mmask8, __m128h, __m128h, 100, 4)
  test_4x (_mm_mask_minmax_round_sh, __m128h, __m128h, __mmask8, __m128h, __m128h, 100, 4)
+ 
+ /* avx10v2auxintrin.h */
+ test_1(_mm_unpack_epi8, __m128i, __m128i, 10)
+ test_3(_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
+ test_2(_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
+ test_1(_mm256_unpack_epi8, __m256i, __m256i, 10)
+ test_3(_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
+ test_2(_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
+ test_1(_mm512_unpack_epi8, __m512i, __m512i, 10)
+ test_3(_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
+ test_2(_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-22.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-22.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-22.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-22.c	Sun Aug 23 22:32:16 2026
***************
*** 103,109 ****
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
--- 103,109 ----
  
  
  #ifndef DIFFERENT_PRAGMAS
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
  #endif
  
  /* Following intrinsics require immediate arguments.  They
*************** test_4 (_mm_cmpestrz, int, __m128i, int,
*** 220,226 ****
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
--- 220,226 ----
  
  /* immintrin.h (AVX/AVX2/RDRND/FSGSBASE/F16C/RTM/AVX512F/SHA) */
  #ifdef DIFFERENT_PRAGMAS
! #pragma GCC target ("avx,avx2,rdrnd,fsgsbase,f16c,rtm,sha,gfni,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,amx-fp16,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
  #endif
  #include <immintrin.h>
  test_1 (_cvtss_sh, unsigned short, float, 1)
*************** test_4x (_mm_mask_minmax_round_ss, __m12
*** 1233,1235 ****
--- 1233,1246 ----
  test_2x (_mm_minmax_round_sh, __m128h, __m128h, __m128h, 100, 4)
  test_3x (_mm_maskz_minmax_round_sh, __m128h, __mmask8, __m128h, __m128h, 100, 4)
  test_4x (_mm_mask_minmax_round_sh, __m128h, __m128h, __mmask8, __m128h, __m128h, 100, 4)
+ 
+ /* avx10v2auxintrin.h */
+ test_1(_mm_unpack_epi8, __m128i, __m128i, 10)
+ test_3(_mm_mask_unpack_epi8, __m128i, __m128i, __mmask16, __m128i, 10)
+ test_2(_mm_maskz_unpack_epi8, __m128i, __mmask16, __m128i, 10)
+ test_1(_mm256_unpack_epi8, __m256i, __m256i, 10)
+ test_3(_mm256_mask_unpack_epi8, __m256i, __m256i, __mmask32, __m256i, 10)
+ test_2(_mm256_maskz_unpack_epi8, __m256i, __mmask32, __m256i, 10)
+ test_1(_mm512_unpack_epi8, __m512i, __m512i, 10)
+ test_3(_mm512_mask_unpack_epi8, __m512i, __m512i, __mmask64, __m512i, 10)
+ test_2(_mm512_maskz_unpack_epi8, __m512i, __mmask64, __m512i, 10)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-23.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-23.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse-23.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse-23.c	Sun Aug 23 22:32:16 2026
***************
*** 895,900 ****
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 100, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 100, D, E, 4)
  
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs")
  
  #include <x86intrin.h>
--- 895,905 ----
  #define __builtin_ia32_minmaxsh_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxsh_mask_round (A, B, 100, D, E, 4)
  #define __builtin_ia32_minmaxss_mask_round(A, B, C, D, E, F) __builtin_ia32_minmaxss_mask_round (A, B, 100, D, E, 4)
  
! /* avx10v2auxintrin.h */
! #define __builtin_ia32_vunpackb128_mask(A, B, C, D) __builtin_ia32_vunpackb128_mask(A, 8, C, D)
! #define __builtin_ia32_vunpackb256_mask(A, B, C, D) __builtin_ia32_vunpackb256_mask(A, 8, C, D)
! #define __builtin_ia32_vunpackb512_mask(A, B, C, D) __builtin_ia32_vunpackb512_mask(A, 8, C, D)
! 
! #pragma GCC target ("sse4a,3dnow,avx,avx2,fma4,xop,aes,pclmul,popcnt,abm,lzcnt,bmi,bmi2,tbm,lwp,fsgsbase,rdrnd,f16c,fma,rtm,rdseed,prfchw,adx,fxsr,xsaveopt,sha,xsavec,xsaves,clflushopt,clwb,mwaitx,clzero,pku,sgx,rdpid,gfni,vpclmulqdq,pconfig,wbnoinvd,enqcmd,avx512vp2intersect,serialize,tsxldtrk,amx-tile,amx-int8,amx-bf16,kl,widekl,avxvnni,avxifma,avxvnniint8,avxneconvert,cmpccxadd,amx-fp16,prefetchi,raoint,amx-complex,avxvnniint16,sm3,sha512,sm4,avx10.2,amx-avx512,amx-fp8,movrs,amx-movrs,avx10v2aux")
  
  #include <x86intrin.h>
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-msse2 -O2" } */
  
  
  __bf16 glob_bfloat;
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-msse2 -mno-avx512bf16 -mno-avxneconvert -O2" } */
  
  
  __bf16 glob_bfloat;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-shiftqihi-constant-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-avx" } */
  /* { dg-final { scan-assembler-times "pand\[^\n\]*%xmm" 3 } } */
  typedef char v16qi  __attribute__ ((vector_size (16)));
  typedef unsigned char v16uqi  __attribute__ ((vector_size (16)));
--- 1,6 ----
  /* PR target/95524 */
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-avx -mno-gfni" } */
  /* { dg-final { scan-assembler-times "pand\[^\n\]*%xmm" 3 } } */
  typedef char v16qi  __attribute__ ((vector_size (16)));
  typedef unsigned char v16uqi  __attribute__ ((vector_size (16)));
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-stv-1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-stv-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/sse2-stv-1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/sse2-stv-1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do compile { target ia32 } } */
  /* { dg-options "-O2 -msse2 -mno-stackrealign" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  unsigned long long a,b,c,d;
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/uintr-4.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/uintr-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/uintr-4.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/uintr-4.c	Sun Aug 23 22:32:16 2026
*************** typedef unsigned int uword_t __attribute
*** 7,11 ****
  
  void __attribute__ ((interrupt))
  UINTR_handler (struct __uintr_frame *p, uword_t uirrv)
! { /* { dg-message "SSE instructions aren't allowed in an exception service routine" }  */
  }
--- 7,11 ----
  
  void __attribute__ ((interrupt))
  UINTR_handler (struct __uintr_frame *p, uword_t uirrv)
! { /* { dg-message "(SSE|AVX|AVX512) instructions aren't allowed in an exception service routine" }  */
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  
  #include <immintrin.h>
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mno-avx512bf16 -mno-avxneconvert -O2" } */
  
  #include <immintrin.h>
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -O2" } */
  
  #include <immintrin.h>
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mavx512fp16 -mno-avx512bf16 -mno-avxneconvert -O2" } */
  
  #include <immintrin.h>
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-shiftv4qi.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-avx2 -mno-avx512vl" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
  
  #define N 4
  
--- 1,7 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -msse2 -mno-ssse3 -mtune=generic" } */
  /* { dg-additional-options "-fno-PIE" { target ia32 } } */
+ /* { dg-additional-options "-mdynamic-no-pic" { target { *-*-darwin* && ia32 } } } */
  
  #define N 4
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/vect-shiftv8qi.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -msse2 -mno-avx2 -mno-avx512vl" } */
  
  #define N 8
  
--- 1,5 ----
  /* { dg-do compile { target { ! ia32 } } } */
! /* { dg-options "-O2 -msse2 -mno-ssse3 -mtune=generic" } */
  
  #define N 8
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/widen_mult_high_chain.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/widen_mult_high_chain.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/widen_mult_high_chain.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/widen_mult_high_chain.c	Sun Aug 23 22:32:16 2026
***************
*** 0 ****
--- 1,32 ----
+ /* { dg-do compile { target { lp64 } } } */
+ /* { dg-options "-O3" } */
+ 
+ /* The high 128 bits of a 128 x 128 -> 256 product has no widening
+    multiply (no TI x TI -> OI) and no 256-bit expansion path.  forwprop
+    folds the longhand to the canonical (uint256_t) a * (uint256_t) b
+    >> 128 shape, and widening_mul re-synthesizes it from four
+    64 x 64 -> 128 multiplies (mulq).  No __mulOI3 libcall.  */
+ 
+ __uint128_t
+ mulh_carry_128 (__uint128_t x, __uint128_t y)
+ {
+     __uint128_t x_hi = x >> 64;
+     __uint128_t x_lo = x & (__uint128_t) 0xFFFFFFFFFFFFFFFF;
+     __uint128_t y_hi = y >> 64;
+     __uint128_t y_lo = y & (__uint128_t) 0xFFFFFFFFFFFFFFFF;
+     __uint128_t mulhilo = x_hi * y_lo;
+     __uint128_t mullohi = x_lo * y_hi;
+     __uint128_t cross_sum = mulhilo + mullohi;
+     __uint128_t mullolo = x_lo * y_lo;
+     __uint128_t shrlolo = mullolo >> 64;
+     __uint128_t add_cross_sum = cross_sum + shrlolo;
+     int carry = add_cross_sum < mulhilo;
+     __uint128_t cond = ((__uint128_t) carry << 64) + x_hi * y_hi;
+     __uint128_t add = cond + (add_cross_sum >> 64);
+ 
+     return add;
+ }
+ 
+ /* { dg-final { scan-assembler-not "__multi3" } } */
+ /* { dg-final { scan-assembler-not "__mulOI3" } } */
+ /* { dg-final { scan-assembler-times "\tmul(q|x)" 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/xop-pcmov3.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/xop-pcmov3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/xop-pcmov3.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/xop-pcmov3.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-O2 -mxop -mno-avx512vl" } */
  typedef int v4si __attribute__ ((vector_size (16)));
  
  v4si foo(v4si c, v4si t, v4si f)
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-O2 -mxop -mno-avx512f" } */
  typedef int v4si __attribute__ ((vector_size (16)));
  
  v4si foo(v4si c, v4si t, v4si f)
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/xorps-sse2.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/xorps-sse2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/xorps-sse2.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/xorps-sse2.c	Sun Aug 23 22:32:16 2026
***************
*** 1,6 ****
  /* Test that we generate xorps when the result is used in FP math.  */
  /* { dg-do compile } */
! /* { dg-options "-O -msse2 -mno-sse3" } */
  /* { dg-final { scan-assembler "xorps\[ \t\]" } } */
  /* { dg-final { scan-assembler-not "pxor" } } */
  
--- 1,6 ----
  /* Test that we generate xorps when the result is used in FP math.  */
  /* { dg-do compile } */
! /* { dg-options "-O -msse2 -mno-sse3 -mtune-ctrl=^sse_packed_single_insn_optimal" } */
  /* { dg-final { scan-assembler "xorps\[ \t\]" } } */
  /* { dg-final { scan-assembler-not "pxor" } } */
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/zero-scratch-regs-29.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target *-*-linux* } } */
! /* { dg-options "-O2 -fzero-call-used-regs=all" } */
  
  long double ret_x87 (void)
  {
--- 1,5 ----
  /* { dg-do compile { target *-*-linux* } } */
! /* { dg-options "-O2 -fzero-call-used-regs=all -mtune-ctrl=^use_ffreep" } */
  
  long double ret_x87 (void)
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c gcc-17-20260823/gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c	Sun Aug 16 22:32:12 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/i386/zero-scratch-regs-30.c	Sun Aug 23 22:32:16 2026
***************
*** 1,5 ****
  /* { dg-do compile { target *-*-linux* } } */
! /* { dg-options "-O2 -fzero-call-used-regs=all" } */
  
  _Complex long double ret_x87_cplx (void)
  {
--- 1,5 ----
  /* { dg-do compile { target *-*-linux* } } */
! /* { dg-options "-O2 -fzero-call-used-regs=all -mtune-ctrl=^use_ffreep" } */
  
  _Complex long double ret_x87_cplx (void)
  {
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/amo/gcov-condition-coverage-split-ior.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,27 ----
+ /* { dg-do compile } */
+ /* { dg-options "-O2 -march=rv32gc -mabi=ilp32 -fprofile-update=atomic -fcondition-coverage" { target { rv32 } } } */
+ /* { dg-options "-O2 -march=rv64gc -mabi=lp64 -fprofile-update=atomic -fcondition-coverage" { target { rv64 } } } */
+ 
+ /* rv32 only has 32-bit atomic instructions, so the 64-bit gcov decision
+    counter update is split into up to two 32-bit atomic bitwise-or
+    operations, one per 32-bit half.  Here each counter update is a small
+    compile-time constant, so the always-zero high half is folded away and
+    only one atomic bitwise-or per branch remains.  rv64 has 64-bit atomic
+    instructions, so a single atomic bitwise-or suffices there too.  */
+ 
+ int a (int);
+ int b (int);
+ 
+ int
+ f (int i)
+ {
+   if (i)
+     return a (i);
+   else
+     return b (i);
+ }
+ 
+ /* { dg-final { scan-assembler-times "\tamoor\\.w\t" 2 { target { rv32 } } } } */
+ /* { dg-final { scan-assembler-not "\tamoor\\.d\t" { target { rv32 } } } } */
+ /* { dg-final { scan-assembler-times "\tamoor\\.d\t" 2 { target { rv64 } } } } */
+ /* { dg-final { scan-assembler-not "\tamoor\\.w\t" { target { rv64 } } } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/autopref-xt-c9501fdvt.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/autopref-xt-c9501fdvt.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/autopref-xt-c9501fdvt.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/autopref-xt-c9501fdvt.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,13 ----
+ /* { dg-do compile { target { rv64 } } } */
+ /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-O3" "-Og" "-Os" "-Oz" } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=xt-c9501fdvt" } */
+ 
+ void
+ foo(long *a)
+ { 
+   a[2] = 1;
+   a[1] = 1;
+   a[0] = 1;
+ }
+ 
+ /* { dg-final { scan-assembler "sd.*0\\(a0\\)\n\\s*sd.*8\\(a0\\)\n\\s*sd.*16\\(a0\\)" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/crc-size-no-table.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/crc-size-no-table.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/crc-size-no-table.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/crc-size-no-table.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,31 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv32gc -mabi=ilp32 -fdump-tree-crc-details -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv32 } } } */
+ /* { dg-options "-march=rv64gc -mabi=lp64 -fdump-tree-crc-details -fdisable-tree-phiopt2 -fdisable-tree-phiopt3" { target { rv64 } } } */
+ /* { dg-skip-if "" { *-*-* } { "*" } { "-Os" "-Oz" } } */
+ 
+ typedef unsigned char uint8_t;
+ typedef unsigned int uint32_t;
+ 
+ uint32_t
+ crc32r (const uint8_t *data, uint32_t size)
+ {
+   uint32_t crc = 0xffffffff;
+ 
+   for (uint32_t i = 0; i != size; i++)
+     {
+       crc ^= data[i];
+       for (int j = 0; j < 8; j++)
+ 	if (crc & 1)
+ 	  crc = (crc >> 1) ^ 0xedb88320;
+ 	else
+ 	  crc >>= 1;
+     }
+ 
+   return ~crc;
+ }
+ 
+ /* The CRC loop must be recognized, but retained because rv32gc/rv64gc has no
+    CRC optab that is smaller than the original loop.  */
+ /* { dg-final { scan-tree-dump "calculates CRC!" "crc" } } */
+ /* { dg-final { scan-tree-dump "Couldn't generate faster CRC code." "crc" } } */
+ /* { dg-final { scan-tree-dump-not {\.CRC_REV} "crc" } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/fusion-cache-aligned-std.c	Thu Jan  1 00:00:00 1970
***************
*** 1,21 ****
- /* Verify RISCV_FUSE_CACHE_ALIGNED_STD correctly matches consecutive
-    stores to the same cache line.  This exercises the fix for base
-    register comparison (changed from != to ==).  */
- /* { dg-do compile } */
- /* { dg-skip-if "" { *-*-* } { "-O0" "-O1" "-Og" "-Os" "-Oz" "-flto" } } */
- /* { dg-options "-march=rv64gc -mabi=lp64d -mtune=sifive-p600-series -fdump-rtl-sched1" } */
- /* No upstream mtune currently enables RISCV_FUSE_CACHE_ALIGNED_STD.  */
- /* { dg-final { scan-rtl-dump "RISCV_FUSE_CACHE_ALIGNED_STD" "sched1" { xfail *-*-* } } } */
- 
- struct pair
- {
-   long a;
-   long b;
- } __attribute__ ((aligned (16)));
- 
- void
- store_pair (struct pair *p, long x, long y)
- {
-   p->a = x;
-   p->b = y;
- }
--- 0 ----
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/pr126873.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/pr126873.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/pr126873.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/pr126873.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,37 ----
+ /* { dg-do run { target rv64 } } */
+ /* { dg-require-effective-target riscv_v } */
+ /* { dg-require-effective-target rvv_zvl128b_ok } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O1" } */
+ 
+ typedef unsigned short u16 __attribute__ ((vector_size (4)));
+ 
+ unsigned long long g;
+ 
+ void __attribute__ ((noinline))
+ f1 (unsigned long long a3)
+ {
+   unsigned long long v15
+     = __builtin_bswap64 ((long long) 10398105857157080808ull
+ 			 / (long long) a3);
+   u16 bc13 = (u16) { 29637 };
+   if (0 >= bc13[(unsigned int) v15])
+     __builtin_abort ();
+ }
+ 
+ u16 __attribute__ ((noinline))
+ f2 (u16 in)
+ {
+   in[(unsigned int) g] = 123;
+   return in;
+ }
+ 
+ int
+ main (void)
+ {
+   f1 (17752357569705450221ull);
+   g = 0x0b00000000000000ull;
+   u16 r = f2 ((u16) { 1, 2 });
+   if (r[0] != 123 || r[1] != 2)
+     __builtin_abort ();
+   return 0;
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/group_overlap.h	Sun Aug 23 22:32:17 2026
***************
*** 391,396 ****
--- 391,507 ----
      ST_F ((void *)out, vd14, VL); OUT += VL;                                \
      ST_F ((void *)out, vd15, VL); OUT += VL;                                \
  
+ #define LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4(NT, WT, LD_NF, OUT_F, ST_F, OUT,  \
+ 					   START, X, VL)                    \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, X, VL);                                            \
+     WT vd1 = OUT_F (vs1, X, VL);                                            \
+     WT vd2 = OUT_F (vs2, X, VL);                                            \
+     WT vd3 = OUT_F (vs3, X, VL);                                            \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8(NT, WT, LD_NF, OUT_F, ST_F, OUT,  \
+ 					   START, X, VL)                    \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, X, VL);                                            \
+     WT vd1 = OUT_F (vs1, X, VL);                                            \
+     WT vd2 = OUT_F (vs2, X, VL);                                            \
+     WT vd3 = OUT_F (vs3, X, VL);                                            \
+     WT vd4 = OUT_F (vs4, X, VL);                                            \
+     WT vd5 = OUT_F (vs5, X, VL);                                            \
+     WT vd6 = OUT_F (vs6, X, VL);                                            \
+     WT vd7 = OUT_F (vs7, X, VL);                                            \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16(NT, WT, LD_NF, OUT_F, ST_F, OUT, \
+ 					   START, X, VL)                    \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs8 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs9 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs10 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs11 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs12 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs13 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs14 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs15 = LD_NF ((void *)START, VL); START += VL;                       \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vs0, X, VL);                                            \
+     WT vd1 = OUT_F (vs1, X, VL);                                            \
+     WT vd2 = OUT_F (vs2, X, VL);                                            \
+     WT vd3 = OUT_F (vs3, X, VL);                                            \
+     WT vd4 = OUT_F (vs4, X, VL);                                            \
+     WT vd5 = OUT_F (vs5, X, VL);                                            \
+     WT vd6 = OUT_F (vs6, X, VL);                                            \
+     WT vd7 = OUT_F (vs7, X, VL);                                            \
+     WT vd8 = OUT_F (vs8, X, VL);                                            \
+     WT vd9 = OUT_F (vs9, X, VL);                                            \
+     WT vd10 = OUT_F (vs10, X, VL);                                          \
+     WT vd11 = OUT_F (vs11, X, VL);                                          \
+     WT vd12 = OUT_F (vs12, X, VL);                                          \
+     WT vd13 = OUT_F (vs13, X, VL);                                          \
+     WT vd14 = OUT_F (vs14, X, VL);                                          \
+     WT vd15 = OUT_F (vs15, X, VL);                                          \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd8, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd9, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd10, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd11, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd12, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd13, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd14, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd15, VL); OUT += VL;                                \
+ 
  #define LOOP_DUAL_WIDEN_BINARY_BODY_SU_X4(NT, NUT, WT, LD_NF,               \
  					   LD_NUF, OUT_F, ST_F, OUT,        \
  					   START, VL)                       \
***************
*** 700,705 ****
--- 811,986 ----
      ST_F ((void *)out, vd14, VL); OUT += VL;                                \
      ST_F ((void *)out, vd15, VL); OUT += VL;                                \
  
+ #define LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X4(NT, NUT, WT, LD_NF,              \
+ 					    LD_NUF, LD_WF, OUT_F, ST_F,     \
+ 					    OUT, START, VL)                 \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NUT vt0 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt1 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt2 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt3 = LD_NUF ((void *)START, VL); START += VL;                      \
+     WT vw0 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw1 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw2 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw3 = LD_WF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vw0, vs0, vt0, VL);                                     \
+     WT vd1 = OUT_F (vw1, vs1, vt1, VL);                                     \
+     WT vd2 = OUT_F (vw2, vs2, vt2, VL);                                     \
+     WT vd3 = OUT_F (vw3, vs3, vt3, VL);                                     \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X8(NT, NUT, WT, LD_NF,              \
+ 					    LD_NUF, LD_WF, OUT_F, ST_F,     \
+ 					    OUT, START, VL)                 \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NUT vt0 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt1 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt2 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt3 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt4 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt5 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt6 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt7 = LD_NUF ((void *)START, VL); START += VL;                      \
+     WT vw0 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw1 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw2 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw3 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw4 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw5 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw6 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw7 = LD_WF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vw0, vs0, vt0, VL);                                     \
+     WT vd1 = OUT_F (vw1, vs1, vt1, VL);                                     \
+     WT vd2 = OUT_F (vw2, vs2, vt2, VL);                                     \
+     WT vd3 = OUT_F (vw3, vs3, vt3, VL);                                     \
+     WT vd4 = OUT_F (vw4, vs4, vt4, VL);                                     \
+     WT vd5 = OUT_F (vw5, vs5, vt5, VL);                                     \
+     WT vd6 = OUT_F (vw6, vs6, vt6, VL);                                     \
+     WT vd7 = OUT_F (vw7, vs7, vt7, VL);                                     \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+ 
+ #define LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16(NT, NUT, WT, LD_NF,             \
+ 					    LD_NUF, LD_WF, OUT_F, ST_F,     \
+ 					    OUT, START, VL)                 \
+     NT vs0 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs1 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs2 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs3 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs4 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs5 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs6 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs7 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs8 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs9 = LD_NF ((void *)START, VL); START += VL;                        \
+     NT vs10 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs11 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs12 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs13 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs14 = LD_NF ((void *)START, VL); START += VL;                       \
+     NT vs15 = LD_NF ((void *)START, VL); START += VL;                       \
+     NUT vt0 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt1 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt2 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt3 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt4 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt5 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt6 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt7 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt8 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt9 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NUT vt10 = LD_NUF ((void *)START, VL); START += VL;                     \
+     NUT vt11 = LD_NUF ((void *)START, VL); START += VL;                     \
+     NUT vt12 = LD_NUF ((void *)START, VL); START += VL;                     \
+     NUT vt13 = LD_NUF ((void *)START, VL); START += VL;                     \
+     NUT vt14 = LD_NUF ((void *)START, VL); START += VL;                     \
+     NUT vt15 = LD_NUF ((void *)START, VL); START += VL;                     \
+     WT vw0 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw1 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw2 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw3 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw4 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw5 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw6 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw7 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw8 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw9 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw10 = LD_WF ((void *)START, VL); START += VL;                       \
+     WT vw11 = LD_WF ((void *)START, VL); START += VL;                       \
+     WT vw12 = LD_WF ((void *)START, VL); START += VL;                       \
+     WT vw13 = LD_WF ((void *)START, VL); START += VL;                       \
+     WT vw14 = LD_WF ((void *)START, VL); START += VL;                       \
+     WT vw15 = LD_WF ((void *)START, VL); START += VL;                       \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WT vd0 = OUT_F (vw0, vs0, vt0, VL);                                     \
+     WT vd1 = OUT_F (vw1, vs1, vt1, VL);                                     \
+     WT vd2 = OUT_F (vw2, vs2, vt2, VL);                                     \
+     WT vd3 = OUT_F (vw3, vs3, vt3, VL);                                     \
+     WT vd4 = OUT_F (vw4, vs4, vt4, VL);                                     \
+     WT vd5 = OUT_F (vw5, vs5, vt5, VL);                                     \
+     WT vd6 = OUT_F (vw6, vs6, vt6, VL);                                     \
+     WT vd7 = OUT_F (vw7, vs7, vt7, VL);                                     \
+     WT vd8 = OUT_F (vw8, vs8, vt8, VL);                                     \
+     WT vd9 = OUT_F (vw9, vs9, vt9, VL);                                     \
+     WT vd10 = OUT_F (vw10, vs10, vt10, VL);                                 \
+     WT vd11 = OUT_F (vw11, vs11, vt11, VL);                                 \
+     WT vd12 = OUT_F (vw12, vs12, vt12, VL);                                 \
+     WT vd13 = OUT_F (vw13, vs13, vt13, VL);                                 \
+     WT vd14 = OUT_F (vw14, vs14, vt14, VL);                                 \
+     WT vd15 = OUT_F (vw15, vs15, vt15, VL);                                 \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd2, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd3, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd4, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd5, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd6, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd7, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd8, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd9, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd10, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd11, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd12, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd13, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd14, VL); OUT += VL;                                \
+     ST_F ((void *)out, vd15, VL); OUT += VL;                                \
+ 
  /* The widened destination register group of a dual widen ternary insn is tied
     to the accumulator, which is still live when the narrowed sources are read.
     Feeding one narrowed source from the highest-numbered half of the
***************
*** 732,737 ****
--- 1013,1051 ----
      ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
      ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
  
+ /* Like LOOP_DUAL_WIDEN_TERNARY_BODY_OVERLAP_X2 but for the mixed signed and
+    unsigned narrowed sources.  The first insn overlaps the destination register
+    group with the signed source, the second one with the unsigned source, thus
+    both narrowed operands are covered.  RI_F reinterprets the widened
+    accumulator as the signed narrowed element type, RI_UF and RI_NUF do the
+    same for the unsigned narrowed element type, GET_F and GET_UF extract the
+    highest-numbered half of it.  */
+ #define LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2(NT, NUT, WT, WNT,        \
+ 					    WNUT, LD_NF, LD_NUF, LD_WF,     \
+ 					    RI_F, RI_UF, RI_NUF, GET_F,     \
+ 					    GET_UF, OUT_F, ST_F, OUT,       \
+ 					    START, VL)                      \
+     NUT vt0 = LD_NUF ((void *)START, VL); START += VL;                      \
+     NT vt1 = LD_NF ((void *)START, VL); START += VL;                        \
+     WT vw0 = LD_WF ((void *)START, VL); START += VL;                        \
+     WT vw1 = LD_WF ((void *)START, VL); START += VL;                        \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     WNT vr0 = RI_F (vw0);                                                   \
+     WNUT vr1 = RI_NUF (RI_UF (vw1));                                        \
+                                                                             \
+     NT vs0 = GET_F (vr0, 1);                                                \
+     NUT vs1 = GET_UF (vr1, 1);                                              \
+                                                                             \
+     WT vd0 = OUT_F (vw0, vs0, vt0, VL);                                     \
+     WT vd1 = OUT_F (vw1, vt1, vs1, VL);                                     \
+                                                                             \
+     asm volatile("nop" ::: "memory");                                       \
+                                                                             \
+     ST_F ((void *)out, vd0, VL); OUT += VL;                                 \
+     ST_F ((void *)out, vd1, VL); OUT += VL;                                 \
+ 
  #define DEF_GROUP_OVERLAP_UNARY_0(VL_F, NT, WT, LD_F, OUT_F, ST_F, NAME, \
  				  LOOP_BODY)                             \
    void test_group_overlap_##NAME##_##NT##_unary_0(uint8_t *data,         \
***************
*** 793,798 ****
--- 1107,1128 ----
      }                                                                       \
    }
  
+ #define DEF_GROUP_OVERLAP_BINARY_3(VL_F, NT, WT, ST, LD_NF, OUT_F, ST_F,    \
+ 				   NAME, LOOP_BODY)                         \
+   void test_group_overlap_##NAME##_##NT##_binary_3(uint8_t *data,           \
+ 						   uint8_t *out,            \
+ 						   ST x,                    \
+ 						   size_t limit)            \
+   {                                                                         \
+     uint8_t *start = data;                                                  \
+     uint8_t *end = data + limit;                                            \
+     size_t vl = VL_F ();                                                    \
+                                                                             \
+     while (start < end) {                                                   \
+       LOOP_BODY (NT, WT, LD_NF, OUT_F, ST_F, out, start, x, vl);            \
+     }                                                                       \
+   }
+ 
  #define DEF_GROUP_OVERLAP_TERNARY_0(VL_F, NT, WT, LD_NF, LD_WF, OUT_F,      \
  				    ST_F, NAME, LOOP_BODY)                  \
    void test_group_overlap_##NAME##_##NT##_ternary_0(uint8_t *data,          \
***************
*** 824,827 ****
--- 1154,1191 ----
      }                                                                       \
    }
  
+ #define DEF_GROUP_OVERLAP_TERNARY_2(VL_F, NT, NUT, WT, LD_NF, LD_NUF,       \
+ 				    LD_WF, OUT_F, ST_F, NAME, LOOP_BODY)    \
+   void test_group_overlap_##NAME##_##NT##_ternary_2(uint8_t *data,          \
+ 						    uint8_t *out,           \
+ 						    size_t limit)           \
+   {                                                                         \
+     uint8_t *start = data;                                                  \
+     uint8_t *end = data + limit;                                            \
+     size_t vl = VL_F ();                                                    \
+                                                                             \
+     while (start < end) {                                                   \
+       LOOP_BODY (NT, NUT, WT, LD_NF, LD_NUF, LD_WF, OUT_F, ST_F, out,       \
+ 		 start, vl);                                                \
+     }                                                                       \
+   }
+ 
+ #define DEF_GROUP_OVERLAP_TERNARY_3(VL_F, NT, NUT, WT, WNT, WNUT, LD_NF,    \
+ 				    LD_NUF, LD_WF, RI_F, RI_UF, RI_NUF,     \
+ 				    GET_F, GET_UF, OUT_F, ST_F, NAME,       \
+ 				    LOOP_BODY)                              \
+   void test_group_overlap_##NAME##_##NT##_ternary_3(uint8_t *data,          \
+ 						    uint8_t *out,           \
+ 						    size_t limit)           \
+   {                                                                         \
+     uint8_t *start = data;                                                  \
+     uint8_t *end = data + limit;                                            \
+     size_t vl = VL_F ();                                                    \
+                                                                             \
+     while (start < end) {                                                   \
+       LOOP_BODY (NT, NUT, WT, WNT, WNUT, LD_NF, LD_NUF, LD_WF, RI_F,        \
+ 		 RI_UF, RI_NUF, GET_F, GET_UF, OUT_F, ST_F, out, start, vl);\
+     }                                                                       \
+   }
+ 
  #endif
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vint32m2_t,
+   int16_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwadd_vx_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vint32m4_t,
+   int16_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwadd_vx_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vint32m8_t,
+   int16_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwadd_vx_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vint32m1_t,
+   int16_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwadd_vx_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vint32mf2_t,
+   int16_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwadd_vx_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vint64m2_t,
+   int32_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwadd_vx_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vint64m4_t,
+   int32_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwadd_vx_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vint64m8_t,
+   int32_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwadd_vx_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vint64m1_t,
+   int32_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwadd_vx_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vint16m2_t,
+   int8_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vwadd_vx_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vint16m4_t,
+   int8_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vwadd_vx_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vint16m8_t,
+   int8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vwadd_vx_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwadd\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vint16m1_t,
+   int8_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vwadd_vx_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vint16mf2_t,
+   int8_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vwadd_vx_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwadd_vx-i8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vint16mf4_t,
+   int8_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vwadd_vx_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwadd_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwadd\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16m1_t,
+   vuint32m2_t,
+   uint16_t,
+   __riscv_vle16_v_u16m1,
+   __riscv_vwaddu_vx_u32m2,
+   __riscv_vse32_v_u32m2,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vuint16m2_t,
+   vuint32m4_t,
+   uint16_t,
+   __riscv_vle16_v_u16m2,
+   __riscv_vwaddu_vx_u32m4,
+   __riscv_vse32_v_u32m4,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vuint16m4_t,
+   vuint32m8_t,
+   uint16_t,
+   __riscv_vle16_v_u16m4,
+   __riscv_vwaddu_vx_u32m8,
+   __riscv_vse32_v_u32m8,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf2_t,
+   vuint32m1_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vwaddu_vx_u32m1,
+   __riscv_vse32_v_u32m1,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf4_t,
+   vuint32mf2_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vwaddu_vx_u32mf2,
+   __riscv_vse32_v_u32mf2,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32m1_t,
+   vuint64m2_t,
+   uint32_t,
+   __riscv_vle32_v_u32m1,
+   __riscv_vwaddu_vx_u64m2,
+   __riscv_vse64_v_u64m2,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vuint32m2_t,
+   vuint64m4_t,
+   uint32_t,
+   __riscv_vle32_v_u32m2,
+   __riscv_vwaddu_vx_u64m4,
+   __riscv_vse64_v_u64m4,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vuint32m4_t,
+   vuint64m8_t,
+   uint32_t,
+   __riscv_vle32_v_u32m4,
+   __riscv_vwaddu_vx_u64m8,
+   __riscv_vse64_v_u64m8,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32mf2_t,
+   vuint64m1_t,
+   uint32_t,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vwaddu_vx_u64m1,
+   __riscv_vse64_v_u64m1,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8m1_t,
+   vuint16m2_t,
+   uint8_t,
+   __riscv_vle8_v_u8m1,
+   __riscv_vwaddu_vx_u16m2,
+   __riscv_vse16_v_u16m2,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vuint8m2_t,
+   vuint16m4_t,
+   uint8_t,
+   __riscv_vle8_v_u8m2,
+   __riscv_vwaddu_vx_u16m4,
+   __riscv_vse16_v_u16m4,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vuint8m4_t,
+   vuint16m8_t,
+   uint8_t,
+   __riscv_vle8_v_u8m4,
+   __riscv_vwaddu_vx_u16m8,
+   __riscv_vse16_v_u16m8,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwaddu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf2_t,
+   vuint16m1_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vwaddu_vx_u16m1,
+   __riscv_vse16_v_u16m1,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf4_t,
+   vuint16mf2_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vwaddu_vx_u16mf2,
+   __riscv_vse16_v_u16mf2,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwaddu_vx-u8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf8_t,
+   vuint16mf4_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vwaddu_vx_u16mf4,
+   __riscv_vse16_v_u16mf4,
+   vwaddu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwaddu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vuint16m1_t,
+   vint32m2_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vle16_v_u16m1,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwmaccsu_vv_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vuint16m1_t,
+   vint32m2_t,
+   vint16m2_t,
+   vuint16m2_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vle16_v_u16m1,
+   __riscv_vle32_v_i32m2,
+   __riscv_vreinterpret_v_i32m2_i16m2,
+   __riscv_vreinterpret_v_i32m2_u32m2,
+   __riscv_vreinterpret_v_u32m2_u16m2,
+   __riscv_vget_v_i16m2_i16m1,
+   __riscv_vget_v_u16m2_u16m1,
+   __riscv_vwmaccsu_vv_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v30,v29([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v16,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v0,v31([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v14,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v30,v28,v27([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v26,v25([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v6,v20,v19([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v26,v24,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v18,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v10,v1,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v22,v21([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v14,v19,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v21,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v18,v20,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v0,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v22,v0,v1([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v5,v8([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vuint16m2_t,
+   vint32m4_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vle16_v_u16m2,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwmaccsu_vv_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X8)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vuint16m2_t,
+   vint32m4_t,
+   vint16m4_t,
+   vuint16m4_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vle16_v_u16m2,
+   __riscv_vle32_v_i32m4,
+   __riscv_vreinterpret_v_i32m4_i16m4,
+   __riscv_vreinterpret_v_i32m4_u32m4,
+   __riscv_vreinterpret_v_u32m4_u16m4,
+   __riscv_vget_v_i16m4_i16m2,
+   __riscv_vget_v_u16m4_u16m2,
+   __riscv_vwmaccsu_vv_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v0,v30([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v26([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v24,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v20,v18([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v16,v14([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v12,v10([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v8,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v2([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v10,v16([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v2,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vuint16m4_t,
+   vint32m8_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vle16_v_u16m4,
+   __riscv_vle32_v_i32m8,
+   __riscv_vwmaccsu_vv_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X4)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vuint16m4_t,
+   vint32m8_t,
+   vint16m8_t,
+   vuint16m8_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vle16_v_u16m4,
+   __riscv_vle32_v_i32m8,
+   __riscv_vreinterpret_v_i32m8_i16m8,
+   __riscv_vreinterpret_v_i32m8_u32m8,
+   __riscv_vreinterpret_v_u32m8_u16m8,
+   __riscv_vget_v_i16m8_i16m4,
+   __riscv_vget_v_u16m8_u16m4,
+   __riscv_vwmaccsu_vv_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v0,v4([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v20([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v16,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v8,v12([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v20,v0([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vuint16mf2_t,
+   vint32m1_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwmaccsu_vv_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vuint16mf4_t,
+   vint32mf2_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwmaccsu_vv_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vuint32m1_t,
+   vint64m2_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vle32_v_u32m1,
+   __riscv_vle64_v_i64m2,
+   __riscv_vwmaccsu_vv_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vuint32m1_t,
+   vint64m2_t,
+   vint32m2_t,
+   vuint32m2_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vle32_v_u32m1,
+   __riscv_vle64_v_i64m2,
+   __riscv_vreinterpret_v_i64m2_i32m2,
+   __riscv_vreinterpret_v_i64m2_u64m2,
+   __riscv_vreinterpret_v_u64m2_u32m2,
+   __riscv_vget_v_i32m2_i32m1,
+   __riscv_vget_v_u32m2_u32m1,
+   __riscv_vwmaccsu_vv_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v30,v29([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v16,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v0,v31([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v14,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v30,v28,v27([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v26,v25([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v6,v20,v19([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v26,v24,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v18,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v10,v1,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v22,v21([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v14,v19,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v21,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v18,v20,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v0,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v22,v0,v1([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v5,v8([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vuint32m2_t,
+   vint64m4_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vle32_v_u32m2,
+   __riscv_vle64_v_i64m4,
+   __riscv_vwmaccsu_vv_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X8)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vuint32m2_t,
+   vint64m4_t,
+   vint32m4_t,
+   vuint32m4_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vle32_v_u32m2,
+   __riscv_vle64_v_i64m4,
+   __riscv_vreinterpret_v_i64m4_i32m4,
+   __riscv_vreinterpret_v_i64m4_u64m4,
+   __riscv_vreinterpret_v_u64m4_u32m4,
+   __riscv_vget_v_i32m4_i32m2,
+   __riscv_vget_v_u32m4_u32m2,
+   __riscv_vwmaccsu_vv_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v0,v30([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v26([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v24,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v20,v18([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v16,v14([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v12,v10([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v8,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v2([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v10,v16([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v2,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vuint32m4_t,
+   vint64m8_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vle32_v_u32m4,
+   __riscv_vle64_v_i64m8,
+   __riscv_vwmaccsu_vv_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X4)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vuint32m4_t,
+   vint64m8_t,
+   vint32m8_t,
+   vuint32m8_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vle32_v_u32m4,
+   __riscv_vle64_v_i64m8,
+   __riscv_vreinterpret_v_i64m8_i32m8,
+   __riscv_vreinterpret_v_i64m8_u64m8,
+   __riscv_vreinterpret_v_u64m8_u32m8,
+   __riscv_vget_v_i32m8_i32m4,
+   __riscv_vget_v_u32m8_u32m4,
+   __riscv_vwmaccsu_vv_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v0,v4([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v20([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v16,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v8,v12([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v20,v0([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vuint32mf2_t,
+   vint64m1_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vle64_v_i64m1,
+   __riscv_vwmaccsu_vv_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,66 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vuint8m1_t,
+   vint16m2_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vle8_v_u8m1,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwmaccsu_vv_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vuint8m1_t,
+   vint16m2_t,
+   vint8m2_t,
+   vuint8m2_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vle8_v_u8m1,
+   __riscv_vle16_v_i16m2,
+   __riscv_vreinterpret_v_i16m2_i8m2,
+   __riscv_vreinterpret_v_i16m2_u16m2,
+   __riscv_vreinterpret_v_u16m2_u8m2,
+   __riscv_vget_v_i8m2_i8m1,
+   __riscv_vget_v_u8m2_u8m1,
+   __riscv_vwmaccsu_vv_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v30,v29([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v16,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v0,v31([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v14,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v30,v28,v27([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v26,v25([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v6,v20,v19([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v26,v24,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v18,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v10,v1,v15([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v22,v21([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v14,v19,v17([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v21,v23([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v18,v20,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v0,v1([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v22,v0,v1([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v5,v8([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v2,v1,v3([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,58 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vuint8m2_t,
+   vint16m4_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vle8_v_u8m2,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwmaccsu_vv_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X8)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vuint8m2_t,
+   vint16m4_t,
+   vint8m4_t,
+   vuint8m4_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vle8_v_u8m2,
+   __riscv_vle16_v_i16m4,
+   __riscv_vreinterpret_v_i16m4_i8m4,
+   __riscv_vreinterpret_v_i16m4_u16m4,
+   __riscv_vreinterpret_v_u16m4_u8m4,
+   __riscv_vget_v_i8m4_i8m2,
+   __riscv_vget_v_u8m4_u8m2,
+   __riscv_vwmaccsu_vv_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v0,v30([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v26([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v28,v24,v22([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v20,v18([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v20,v16,v14([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v12,v10([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v12,v8,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v2([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v10,v16([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v2,v6([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,54 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vuint8m4_t,
+   vint16m8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vle8_v_u8m4,
+   __riscv_vle16_v_i16m8,
+   __riscv_vwmaccsu_vv_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X4)
+ 
+ DEF_GROUP_OVERLAP_TERNARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vuint8m4_t,
+   vint16m8_t,
+   vint8m8_t,
+   vuint8m8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vle8_v_u8m4,
+   __riscv_vle16_v_i16m8,
+   __riscv_vreinterpret_v_i16m8_i8m8,
+   __riscv_vreinterpret_v_i16m8_u16m8,
+   __riscv_vreinterpret_v_u16m8_u8m8,
+   __riscv_vget_v_i8m8_i8m4,
+   __riscv_vget_v_u8m8_u8m4,
+   __riscv_vwmaccsu_vv_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_OVERLAP_X2)
+ 
+ /* ternary_2: the accumulator occupies the whole destination register group and
+    is live when the narrowed sources are read, so no source can be allocated
+    inside the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v0,v4([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v0,v28,v20([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v24,v16,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v8,v12([^0-9]|$)} 1 } } */
+ 
+ /* ternary_3: one narrowed source is the highest-numbered half of its own
+    accumulator, thus it overlaps the highest-numbered part of the destination
+    register group.  The signed source is the overlapping one in the first insn,
+    the unsigned source in the second one.  Without the group overlap the
+    sources would have to be copied out to a disjoint register group first.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v16,v20,v0([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v8,v4,v12([^0-9]|$)} 1 } } */
+ /* { dg-final { scan-assembler-not {vmv[0-9]+r\.v} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vuint8mf2_t,
+   vint16m1_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwmaccsu_vv_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vuint8mf4_t,
+   vint16mf2_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwmaccsu_vv_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmaccsu_vv-i8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,23 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_TERNARY_2(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vuint8mf8_t,
+   vint16mf4_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwmaccsu_vv_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwmaccsu_vv,
+   LOOP_DUAL_WIDEN_TERNARY_BODY_SU_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap either source at all.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv} 16 } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),\1,} } } */
+ /* { dg-final { scan-assembler-not {vwmaccsu\.vv\s+(v[0-9]+),v[0-9]+,\1([^0-9]|$)} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vint32m2_t,
+   int16_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwmul_vx_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vint32m4_t,
+   int16_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwmul_vx_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vint32m8_t,
+   int16_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwmul_vx_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vint32m1_t,
+   int16_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwmul_vx_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vint32mf2_t,
+   int16_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwmul_vx_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vint64m2_t,
+   int32_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwmul_vx_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vint64m4_t,
+   int32_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwmul_vx_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vint64m8_t,
+   int32_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwmul_vx_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vint64m1_t,
+   int32_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwmul_vx_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vint16m2_t,
+   int8_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vwmul_vx_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vint16m4_t,
+   int8_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vwmul_vx_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vint16m8_t,
+   int8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vwmul_vx_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmul\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vint16m1_t,
+   int8_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vwmul_vx_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vint16mf2_t,
+   int8_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vwmul_vx_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmul_vx-i8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vint16mf4_t,
+   int8_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vwmul_vx_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwmul_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmul\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16m1_t,
+   vuint32m2_t,
+   uint16_t,
+   __riscv_vle16_v_u16m1,
+   __riscv_vwmulu_vx_u32m2,
+   __riscv_vse32_v_u32m2,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vuint16m2_t,
+   vuint32m4_t,
+   uint16_t,
+   __riscv_vle16_v_u16m2,
+   __riscv_vwmulu_vx_u32m4,
+   __riscv_vse32_v_u32m4,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vuint16m4_t,
+   vuint32m8_t,
+   uint16_t,
+   __riscv_vle16_v_u16m4,
+   __riscv_vwmulu_vx_u32m8,
+   __riscv_vse32_v_u32m8,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf2_t,
+   vuint32m1_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vwmulu_vx_u32m1,
+   __riscv_vse32_v_u32m1,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf4_t,
+   vuint32mf2_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vwmulu_vx_u32mf2,
+   __riscv_vse32_v_u32mf2,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32m1_t,
+   vuint64m2_t,
+   uint32_t,
+   __riscv_vle32_v_u32m1,
+   __riscv_vwmulu_vx_u64m2,
+   __riscv_vse64_v_u64m2,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vuint32m2_t,
+   vuint64m4_t,
+   uint32_t,
+   __riscv_vle32_v_u32m2,
+   __riscv_vwmulu_vx_u64m4,
+   __riscv_vse64_v_u64m4,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vuint32m4_t,
+   vuint64m8_t,
+   uint32_t,
+   __riscv_vle32_v_u32m4,
+   __riscv_vwmulu_vx_u64m8,
+   __riscv_vse64_v_u64m8,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32mf2_t,
+   vuint64m1_t,
+   uint32_t,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vwmulu_vx_u64m1,
+   __riscv_vse64_v_u64m1,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8m1_t,
+   vuint16m2_t,
+   uint8_t,
+   __riscv_vle8_v_u8m1,
+   __riscv_vwmulu_vx_u16m2,
+   __riscv_vse16_v_u16m2,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vuint8m2_t,
+   vuint16m4_t,
+   uint8_t,
+   __riscv_vle8_v_u8m2,
+   __riscv_vwmulu_vx_u16m4,
+   __riscv_vse16_v_u16m4,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vuint8m4_t,
+   vuint16m8_t,
+   uint8_t,
+   __riscv_vle8_v_u8m4,
+   __riscv_vwmulu_vx_u16m8,
+   __riscv_vse16_v_u16m8,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwmulu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf2_t,
+   vuint16m1_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vwmulu_vx_u16m1,
+   __riscv_vse16_v_u16m1,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf4_t,
+   vuint16mf2_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vwmulu_vx_u16mf2,
+   __riscv_vse16_v_u16mf2,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwmulu_vx-u8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf8_t,
+   vuint16mf4_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vwmulu_vx_u16mf4,
+   __riscv_vse16_v_u16mf4,
+   vwmulu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwmulu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16m1_t,
+   vint32m2_t,
+   int16_t,
+   __riscv_vle16_v_i16m1,
+   __riscv_vwsub_vx_i32m2,
+   __riscv_vse32_v_i32m2,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vint16m2_t,
+   vint32m4_t,
+   int16_t,
+   __riscv_vle16_v_i16m2,
+   __riscv_vwsub_vx_i32m4,
+   __riscv_vse32_v_i32m4,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vint16m4_t,
+   vint32m8_t,
+   int16_t,
+   __riscv_vle16_v_i16m4,
+   __riscv_vwsub_vx_i32m8,
+   __riscv_vse32_v_i32m8,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf2_t,
+   vint32m1_t,
+   int16_t,
+   __riscv_vle16_v_i16mf2,
+   __riscv_vwsub_vx_i32m1,
+   __riscv_vse32_v_i32m1,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vint16mf4_t,
+   vint32mf2_t,
+   int16_t,
+   __riscv_vle16_v_i16mf4,
+   __riscv_vwsub_vx_i32mf2,
+   __riscv_vse32_v_i32mf2,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32m1_t,
+   vint64m2_t,
+   int32_t,
+   __riscv_vle32_v_i32m1,
+   __riscv_vwsub_vx_i64m2,
+   __riscv_vse64_v_i64m2,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vint32m2_t,
+   vint64m4_t,
+   int32_t,
+   __riscv_vle32_v_i32m2,
+   __riscv_vwsub_vx_i64m4,
+   __riscv_vse64_v_i64m4,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vint32m4_t,
+   vint64m8_t,
+   int32_t,
+   __riscv_vle32_v_i32m4,
+   __riscv_vwsub_vx_i64m8,
+   __riscv_vse64_v_i64m8,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vint32mf2_t,
+   vint64m1_t,
+   int32_t,
+   __riscv_vle32_v_i32mf2,
+   __riscv_vwsub_vx_i64m1,
+   __riscv_vse64_v_i64m1,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8m1_t,
+   vint16m2_t,
+   int8_t,
+   __riscv_vle8_v_i8m1,
+   __riscv_vwsub_vx_i16m2,
+   __riscv_vse16_v_i16m2,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vint8m2_t,
+   vint16m4_t,
+   int8_t,
+   __riscv_vle8_v_i8m2,
+   __riscv_vwsub_vx_i16m4,
+   __riscv_vse16_v_i16m4,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vint8m4_t,
+   vint16m8_t,
+   int8_t,
+   __riscv_vle8_v_i8m4,
+   __riscv_vwsub_vx_i16m8,
+   __riscv_vse16_v_i16m8,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsub\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf2_t,
+   vint16m1_t,
+   int8_t,
+   __riscv_vle8_v_i8mf2,
+   __riscv_vwsub_vx_i16m1,
+   __riscv_vse16_v_i16m1,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf4_t,
+   vint16mf2_t,
+   int8_t,
+   __riscv_vle8_v_i8mf4,
+   __riscv_vwsub_vx_i16mf2,
+   __riscv_vse16_v_i16mf2,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsub_vx-i8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vint8mf8_t,
+   vint16mf4_t,
+   int8_t,
+   __riscv_vle8_v_i8mf8,
+   __riscv_vwsub_vx_i16mf4,
+   __riscv_vse16_v_i16mf4,
+   vwsub_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsub\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16m1_t,
+   vuint32m2_t,
+   uint16_t,
+   __riscv_vle16_v_u16m1,
+   __riscv_vwsubu_vx_u32m2,
+   __riscv_vse32_v_u32m2,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m2,
+   vuint16m2_t,
+   vuint32m4_t,
+   uint16_t,
+   __riscv_vle16_v_u16m2,
+   __riscv_vwsubu_vx_u32m4,
+   __riscv_vse32_v_u32m4,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m4,
+   vuint16m4_t,
+   vuint32m8_t,
+   uint16_t,
+   __riscv_vle16_v_u16m4,
+   __riscv_vwsubu_vx_u32m8,
+   __riscv_vse32_v_u32m8,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf2_t,
+   vuint32m1_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf2,
+   __riscv_vwsubu_vx_u32m1,
+   __riscv_vse32_v_u32m1,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u16-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e16m1,
+   vuint16mf4_t,
+   vuint32mf2_t,
+   uint16_t,
+   __riscv_vle16_v_u16mf4,
+   __riscv_vwsubu_vx_u32mf2,
+   __riscv_vse32_v_u32mf2,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32m1_t,
+   vuint64m2_t,
+   uint32_t,
+   __riscv_vle32_v_u32m1,
+   __riscv_vwsubu_vx_u64m2,
+   __riscv_vse64_v_u64m2,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m2,
+   vuint32m2_t,
+   vuint64m4_t,
+   uint32_t,
+   __riscv_vle32_v_u32m2,
+   __riscv_vwsubu_vx_u64m4,
+   __riscv_vse64_v_u64m4,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m4,
+   vuint32m4_t,
+   vuint64m8_t,
+   uint32_t,
+   __riscv_vle32_v_u32m4,
+   __riscv_vwsubu_vx_u64m8,
+   __riscv_vse64_v_u64m8,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u32-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e32m1,
+   vuint32mf2_t,
+   vuint64m1_t,
+   uint32_t,
+   __riscv_vle32_v_u32mf2,
+   __riscv_vwsubu_vx_u64m1,
+   __riscv_vse64_v_u64m1,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m1.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m1.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8m1_t,
+   vuint16m2_t,
+   uint8_t,
+   __riscv_vle8_v_u8m1,
+   __riscv_vwsubu_vx_u16m2,
+   __riscv_vse16_v_u16m2,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v1,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v2,v3,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m2,
+   vuint8m2_t,
+   vuint16m4_t,
+   uint8_t,
+   __riscv_vle8_v_u8m2,
+   __riscv_vwsubu_vx_u16m4,
+   __riscv_vse16_v_u16m4,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X8)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v2,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v4,v6,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-m4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,18 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m4,
+   vuint8m4_t,
+   vuint16m8_t,
+   uint8_t,
+   __riscv_vle8_v_u8m4,
+   __riscv_vwsubu_vx_u16m8,
+   __riscv_vse16_v_u16m8,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X4)
+ 
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v0,v4,} 1 } } */
+ /* { dg-final { scan-assembler-times {vwsubu\.vx\s+v8,v12,} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf2.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf2.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf2_t,
+   vuint16m1_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf2,
+   __riscv_vwsubu_vx_u16m1,
+   __riscv_vse16_v_u16m1,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf4.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf4.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf4_t,
+   vuint16mf2_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf4,
+   __riscv_vwsubu_vx_u16mf2,
+   __riscv_vse16_v_u16mf2,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf8.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/group_overlap/vwsubu_vx-u8-mf8.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,19 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d" } */
+ 
+ #include "group_overlap.h"
+ 
+ DEF_GROUP_OVERLAP_BINARY_3(
+   __riscv_vsetvlmax_e8m1,
+   vuint8mf8_t,
+   vuint16mf4_t,
+   uint8_t,
+   __riscv_vle8_v_u8mf8,
+   __riscv_vwsubu_vx_u16mf4,
+   __riscv_vse16_v_u16mf4,
+   vwsubu_vx,
+   LOOP_DUAL_WIDEN_BINARY_VX_BODY_X16)
+ 
+ /* The fractional LMUL source has EMUL < 1, thus the widened destination
+    register group must not overlap the source at all.  */
+ /* { dg-final { scan-assembler-not {vwsubu\.vx\s+(v[0-9]+),\1,} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/pr114734.c	Sun Aug 23 22:32:17 2026
***************
*** 1,6 ****
--- 1,7 ----
  /* { dg-do run } */
  /* { dg-require-effective-target riscv_v } */
  /* { dg-options { -march=rv64gcv_zvl256b -mabi=lp64d -fwhole-program -O3 -mrvv-vector-bits=zvl  } } */
+ /* { dg-require-effective-target rvv_zvl256b_ok } */
  
  int f[18];
  int g[18];
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s16.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_3(int16_t, uint16_t, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_3(int16_t, uint16_t, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s32.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_3(int32_t, uint32_t, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_3(int32_t, uint32_t, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s64.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_3(int64_t, uint64_t, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_3(int64_t, uint64_t, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-3-s8.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_3(int8_t, uint8_t, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_3(int8_t, uint8_t, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s16.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_4(int16_t, uint16_t, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_4(int16_t, uint16_t, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s32.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_4(int32_t, uint32_t, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_4(int32_t, uint32_t, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s64.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_4(int64_t, uint64_t, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_4(int64_t, uint64_t, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add-4-s8.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_FMT_4(int8_t, uint8_t, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_FMT_4(int8_t, uint8_t, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vv} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i16.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int16_t, uint16_t, 9, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int16_t, uint16_t, 9, INT16_MIN, INT16_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i32.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int32_t, uint32_t, 9, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int32_t, uint32_t, 9, INT32_MIN, INT32_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i64.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int64_t, uint64_t, 9, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int64_t, uint64_t, 9, INT64_MIN, INT64_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_s_add_imm-1-i8.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int8_t, uint8_t, 9, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 1 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
--- 5,9 ----
  
  DEF_VEC_SAT_S_ADD_IMM_FMT_1(0, int8_t, uint8_t, 9, INT8_MIN, INT8_MAX)
  
! /* { dg-final { scan-tree-dump-times ".SAT_ADD " 2 "optimized" } } */
  /* { dg-final { scan-assembler-times {vsadd\.vi} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/autovec/sat/vec_sat_u_sub_trunc-1-u8.c	Sun Aug 23 22:32:17 2026
***************
*** 5,10 ****
  
  DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint8_t, uint16_t)
  
! /* { dg-final { scan-tree-dump-times ".SAT_SUB " 1 "optimized" } } */
  /* { dg-final { scan-assembler-times {vssubu\.vv} 1 } } */
  /* { dg-final { scan-assembler-times {vnsrl\.wi} 1 } } */
--- 5,11 ----
  
  DEF_VEC_SAT_U_SUB_TRUNC_FMT_1(uint8_t, uint16_t)
  
! /* { dg-final { scan-tree-dump-times ".SAT_SUB " 2 "optimized" { target { no-opts "-O2" } } } } */
! /* { dg-final { scan-tree-dump-times ".SAT_SUB " 1 "optimized" { target { no-opts "-O3" } } } } */
  /* { dg-final { scan-assembler-times {vssubu\.vv} 1 } } */
  /* { dg-final { scan-assembler-times {vnsrl\.wi} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-f.c	Sun Aug 23 22:32:17 2026
*************** test_vfcvt_f_x_vu_f32m1_m (vbool32_t mas
*** 45,50 ****
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.f\.x[u]?\.v\s+v[0-9]+,\s*v[0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 45,50 ----
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.f\.x[u]?\.v\s+v[0-9]+,\s*v[0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-x.c	Sun Aug 23 22:32:17 2026
*************** test_vfcvt_x_f_vv_i32m1_m (vbool32_t mas
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-cvt-xu.c	Sun Aug 23 22:32:17 2026
*************** test_vfcvt_xu_f_v_u32m1_m (vbool32_t mas
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.xu\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfcvt\.xu\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 15,21 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
--- 15,21 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 20,26 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 20,26 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 20,26 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 20,26 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,29 ****
    return result;
  }
  
! /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,29 ----
    return result;
  }
  
! /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,29 ****
    return result;
  }
  
! /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,29 ----
    return result;
  }
  
! /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 16,22 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 16,22 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 16,22 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 16,22 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 19,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 19,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 19,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 19,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 14,20 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 14,20 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 21,27 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 5 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 21,27 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 5 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 21,27 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 5 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 21,27 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 5 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 19,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 19,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 19,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 19,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 7,13 ****
  {
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
--- 7,13 ----
  {
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 17,23 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 17,23 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 24,30 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
--- 24,30 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 24,30 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 24,30 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (float *in,
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 15,21 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 15,21 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (float *in,
*** 26,32 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 26,32 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 23,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 23,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 19,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 19,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 25,31 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 25,31 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 26,32 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 26,32 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 26,32 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 26,32 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 23,29 ****
    return vl > 16 ? result : op2;
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
--- 23,29 ----
    return vl > 16 ? result : op2;
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 28,34 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 28,34 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 15,21 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 15,21 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 28,34 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 28,34 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 31,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 31,37 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 31,37 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 31,37 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 34,40 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 34,40 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 29,35 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 29,35 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 29,35 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 29,35 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 15,21 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
--- 15,21 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-unroll-loops -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 30,36 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 30,36 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-march=rv64gcv -mabi=lp64 -O3 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 21,27 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 21,27 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 32,38 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 32,38 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 3 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 25,31 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 25,31 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 21,27 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 21,27 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 22,28 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 22,28 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 27,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 27,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 33,39 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 33,39 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 33,39 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 33,39 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 33,39 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 33,39 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 33,39 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 33,39 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c	Sun Aug 23 22:32:17 2026
*************** double sum(double *d)
*** 14,20 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 14,20 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_dynamic_frm (vfloat32m1
*** 20,26 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 20,26 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 3 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-1.c	Sun Aug 23 22:32:17 2026
*************** test_vfadd_vf_f32m1_rm_m (vbool32_t mask
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-10.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_static (float *out,
*** 20,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 20,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-2.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_insert (vfloat32m1_
*** 11,16 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
--- 11,16 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-3.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_insert (vfloat32m1_
*** 11,16 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 11,16 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-4.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_insert (vfloat32m1_
*** 20,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
--- 20,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-5.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_insert (vfloat32m1_
*** 20,25 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
--- 20,25 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.vv\s+v[0-9]+,\s*v[0-9]+,\s*v+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-7.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_static (float *out,
*** 26,32 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
--- 26,32 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-8.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_static (float *out,
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-frm-insert-9.c	Sun Aug 23 22:32:17 2026
*************** test_float_point_frm_static (float *out,
*** 21,26 ****
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
--- 21,26 ----
  }
  
  /* { dg-final { scan-assembler-times {vfadd\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 3 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-fwmacc.c	Sun Aug 23 22:32:17 2026
*************** test_vfwmacc_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwmacc\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwmacc\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-macc.c	Sun Aug 23 22:32:17 2026
*************** test_vfmacc_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfmacc\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfmacc\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-madd.c	Sun Aug 23 22:32:17 2026
*************** test_vfmadd_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfmadd\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfmadd\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msac.c	Sun Aug 23 22:32:17 2026
*************** test_vfmsac_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfmsac\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfmsac\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-msub.c	Sun Aug 23 22:32:17 2026
*************** test_vfmsub_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfmsub\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfmsub\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-f.c	Sun Aug 23 22:32:17 2026
*************** test_vfncvt_f_f_w_f32m1_m (vbool32_t mas
*** 64,69 ****
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.f\.[xuf]+\.w\s+v[0-9]+,\s*v[0-9]+} 12 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 6 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 6 } } */
--- 64,69 ----
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.f\.[xuf]+\.w\s+v[0-9]+,\s*v[0-9]+} 12 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 6 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 6 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-x.c	Sun Aug 23 22:32:17 2026
*************** test_vfncvt_x_f_w_i16mf2_m (vbool32_t ma
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.x\.f\.w\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.x\.f\.w\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-ncvt-xu.c	Sun Aug 23 22:32:17 2026
*************** test_vfncvt_xu_f_w_u16mf2_m (vbool32_t m
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.xu\.f\.w\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfncvt\.xu\.f\.w\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmacc.c	Sun Aug 23 22:32:17 2026
*************** test_vfnmacc_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfnmacc\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfnmacc\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmadd.c	Sun Aug 23 22:32:17 2026
*************** test_vfnmadd_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfnmadd\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfnmadd\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsac.c	Sun Aug 23 22:32:17 2026
*************** test_vfnmsac_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfnmsac\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfnmsac\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-nmsub.c	Sun Aug 23 22:32:17 2026
*************** test_vfnmsub_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfnmsub\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfnmsub\.v[vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*v[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-rec7.c	Sun Aug 23 22:32:17 2026
*************** test_vfrec7_vv_f32m1_m (vbool32_t mask,
*** 26,31 ****
  }
  
  /* { dg-final { scan-assembler-times {vfrec7\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 26,31 ----
  }
  
  /* { dg-final { scan-assembler-times {vfrec7\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redosum.c	Sun Aug 23 22:32:17 2026
*************** test_vfredosum_vs_f32m1_f32m1_m (vbool32
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfredosum\.vs\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfredosum\.vs\s+v[0-9]+,\s*v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-redusum.c	Sun Aug 23 22:32:17 2026
*************** test_vfredusum_vs_f32m1_f32m1_m (vbool32
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfredusum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfredusum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-div.c	Sun Aug 23 22:32:17 2026
*************** test_vfdiv_vv_f32m1_m (vbool32_t mask, v
*** 39,44 ****
  }
  
  /* { dg-final { scan-assembler-times {vfdiv\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 39,44 ----
  }
  
  /* { dg-final { scan-assembler-times {vfdiv\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-mul.c	Sun Aug 23 22:32:17 2026
*************** test_vfmul_vv_f32m1_m (vbool32_t mask, v
*** 39,44 ****
  }
  
  /* { dg-final { scan-assembler-times {vfmul\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 39,44 ----
  }
  
  /* { dg-final { scan-assembler-times {vfmul\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rdiv.c	Sun Aug 23 22:32:17 2026
*************** test_vfrdiv_vf_f32m1_m (vbool32_t mask,
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfrdiv\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfrdiv\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-rsub.c	Sun Aug 23 22:32:17 2026
*************** test_vfrsub_vf_f32m1_m (vbool32_t mask,
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfrsub\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfrsub\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-single-sub.c	Sun Aug 23 22:32:17 2026
*************** test_vfsub_vv_f32m1_m (vbool32_t mask, v
*** 39,44 ****
  }
  
  /* { dg-final { scan-assembler-times {vfsub\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 39,44 ----
  }
  
  /* { dg-final { scan-assembler-times {vfsub\.v[vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-sqrt.c	Sun Aug 23 22:32:17 2026
*************** test_vfsqrt_vv_f32m1_m (vbool32_t mask,
*** 26,31 ****
  }
  
  /* { dg-final { scan-assembler-times {vfsqrt\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 26,31 ----
  }
  
  /* { dg-final { scan-assembler-times {vfsqrt\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-x.c	Sun Aug 23 22:32:17 2026
*************** test_vfwcvt_x_f_v_i64m2_m (vbool32_t mas
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwcvt\.x\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wcvt-xu.c	Sun Aug 23 22:32:17 2026
*************** test_vfwcvt_xu_f_v_u64m2_m (vbool32_t ma
*** 24,29 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwcvt\.xu\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 24,29 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwcvt\.xu\.f\.v\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-add.c	Sun Aug 23 22:32:17 2026
*************** test_vfwadd_vv_f32m1_m (vbool32_t mask,
*** 61,66 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwadd\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 10 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 8 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 8 } } */
--- 61,66 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwadd\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 10 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 8 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 8 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-mul.c	Sun Aug 23 22:32:17 2026
*************** test_vfwmul_vv_f32m1_m (vbool32_t mask,
*** 39,44 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwmul\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 39,44 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwmul\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-widening-sub.c	Sun Aug 23 22:32:17 2026
*************** test_vfwsub_vv_f32m1_m (vbool32_t mask,
*** 61,66 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwsub\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 10 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 8 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 8 } } */
--- 61,66 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwsub\.[vw][vf]\s+v[0-9]+,\s*v[0-9]+,\s*[fav]+[0-9]+} 10 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 8 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 8 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 8 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wmsac.c	Sun Aug 23 22:32:17 2026
*************** test_vfwmsac_vv_f32m1_m (vbool32_t mask,
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwmsac\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwmsac\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmacc.c	Sun Aug 23 22:32:17 2026
*************** test_vfwnmacc_vv_f32m1_m (vbool32_t mask
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwnmacc\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwnmacc\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wnmsac.c	Sun Aug 23 22:32:17 2026
*************** test_vfwnmsac_vv_f32m1_m (vbool32_t mask
*** 42,47 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwnmsac\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
--- 42,47 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwnmsac\.[vw][vf]\s+v[0-9]+,\s*[fav]+[0-9]+,\s*[fav]+[0-9]+} 6 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 4 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 4 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredosum.c	Sun Aug 23 22:32:17 2026
*************** test_vfwredosum_vs_f32m1_f64m1_m (vbool3
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwredosum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwredosum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/float-point-wredusum.c	Sun Aug 23 22:32:17 2026
*************** test_vfwredusum_vs_f32m1_f64m1_m (vbool3
*** 28,33 ****
  }
  
  /* { dg-final { scan-assembler-times {vfwredusum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
--- 28,33 ----
  }
  
  /* { dg-final { scan-assembler-times {vfwredusum\.vs\s+v[0-9]+,\s*v[0-9]+} 4 } } */
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 2 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 2 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 2 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/no-honor-frm-1.c	Sun Aug 23 22:32:17 2026
*************** void foo (void) {
*** 6,12 ****
      __builtin_printf("%d", i);
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axs][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
--- 6,12 ----
      __builtin_printf("%d", i);
  }
  
! /* { dg-final { scan-assembler-not {fsrmi\s+[axst][0-9]+,\s*[01234]} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-51.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-51.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-51.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr112431-51.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,69 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv -mabi=lp64d -O3" } */
+ 
+ #include "riscv_vector.h"
+ 
+ void
+ foo (void *in, void *out, int n)
+ {
+   for (int i = 0; i < n; i++)
+     {
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v0 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v0_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v0, 1));
+       vuint8m2_t v0_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v0_n);
+       v0 = __riscv_vwmaccsu_vv_i16m4_tu (v0, v0_n, v0_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v1 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v1_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v1, 1));
+       vuint8m2_t v1_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v1_n);
+       v1 = __riscv_vwmaccsu_vv_i16m4_tu (v1, v1_n, v1_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v2 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v2_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v2, 1));
+       vuint8m2_t v2_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v2_n);
+       v2 = __riscv_vwmaccsu_vv_i16m4_tu (v2, v2_n, v2_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v3 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v3_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v3, 1));
+       vuint8m2_t v3_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v3_n);
+       v3 = __riscv_vwmaccsu_vv_i16m4_tu (v3, v3_n, v3_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v4 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v4_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v4, 1));
+       vuint8m2_t v4_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v4_n);
+       v4 = __riscv_vwmaccsu_vv_i16m4_tu (v4, v4_n, v4_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v5 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v5_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v5, 1));
+       vuint8m2_t v5_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v5_n);
+       v5 = __riscv_vwmaccsu_vv_i16m4_tu (v5, v5_n, v5_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint16m4_t v6 = __riscv_vle16_v_i16m4 (in, 4);in+=100;
+       vint8m2_t v6_n = __riscv_vreinterpret_v_i16m2_i8m2 (__riscv_vget_v_i16m4_i16m2 (v6, 1));
+       vuint8m2_t v6_nu = __riscv_vreinterpret_v_i8m2_u8m2 (v6_n);
+       v6 = __riscv_vwmaccsu_vv_i16m4_tu (v6, v6_n, v6_nu, 4);
+       asm volatile("nop" ::: "memory");
+       vint8m2_t v7_n = __riscv_vle8_v_i8m2 (in, 4);in+=100;
+       vint16m4_t v7 = __riscv_vwcvt_x_x_v_i16m4 (v7_n, 4);
+ 
+       asm volatile("nop" ::: "memory");
+       __riscv_vsse16_v_i16m4 (out, 4, v0, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v1, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v2, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v3, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v4, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v5, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v6, 4);out+=100;
+       __riscv_vsse16_v_i16m4 (out, 4, v7, 4);out+=100;
+     }
+ }
+ 
+ /* Both narrowed sources are the highest-numbered half of the accumulator, thus
+    they overlap the destination register group.  */
+ /* { dg-final { scan-assembler-times {vwmaccsu\.vv\s+v4,v6,v6([^0-9]|$)} 7 } } */
+ /* { dg-final { scan-assembler-not {vmv1r} } } */
+ /* { dg-final { scan-assembler-not {vmv2r} } } */
+ /* { dg-final { scan-assembler-not {vmv4r} { xfail riscv*-*-* } } } */
+ /* { dg-final { scan-assembler-not {vmv8r} } } */
+ /* { dg-final { scan-assembler-not {csrr} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr118103-1.c	Sun Aug 23 22:32:17 2026
*************** int test_exampe () {
*** 22,27 ****
    return 0;
  }
  
! /* { dg-final { scan-assembler-times {frrm\s+[axs][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axs][0-9]+} 1 } } */
--- 22,27 ----
    return 0;
  }
  
! /* { dg-final { scan-assembler-times {frrm\s+[axst][0-9]+} 1 } } */
  /* { dg-final { scan-assembler-times {fsrmi\s+[01234]} 1 } } */
! /* { dg-final { scan-assembler-times {fsrm\s+[axst][0-9]+} 1 } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/base/pr119164.c	Sun Aug 23 22:32:17 2026
*************** void e() {
*** 17,22 ****
    }
  }
  
! /* { dg-final { scan-assembler-not {frrm\s+[axs][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axs][0-9]+} } } */
--- 17,22 ----
    }
  }
  
! /* { dg-final { scan-assembler-not {frrm\s+[axst][0-9]+} } } */
  /* { dg-final { scan-assembler-not {fsrmi\s+[01234]} } } */
! /* { dg-final { scan-assembler-not {fsrm\s+[axst][0-9]+} } } */
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vls-cc/empty-aggregate.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vls-cc/empty-aggregate.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vls-cc/empty-aggregate.c	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vls-cc/empty-aggregate.c	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,30 ----
+ /* { dg-do compile } */
+ /* { dg-options "-march=rv64gcv_zvl512b -mabi=lp64d -Wno-psabi" } */
+ 
+ /* An aggregate with no field has nothing to pass in a vector register.  It
+    used to run an empty field list into riscv_pass_aggregate_in_vr.  */
+ 
+ struct empty { };
+ struct empty_array { struct empty a[0]; };
+ 
+ __attribute__((riscv_vls_cc(1024))) void arg (struct empty);
+ __attribute__((riscv_vls_cc(1024))) void arg_array (struct empty_array);
+ __attribute__((riscv_vls_cc(1024))) struct empty ret (void);
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ def_arg (struct empty x)
+ {
+   arg (x);
+ }
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ def_arg_array (struct empty_array x)
+ {
+   arg_array (x);
+ }
+ 
+ __attribute__((riscv_vls_cc(1024))) void
+ call_ret (void)
+ {
+   ret ();
+ }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr113429.c	Sun Aug 23 22:32:17 2026
***************
*** 2,7 ****
--- 2,8 ----
  /* { dg-options "-march=rv64gcv_zvl256b -mabi=lp64d -O3" } */
  /* { dg-require-effective-target rv64 } */
  /* { dg-require-effective-target riscv_v } */
+ /* { dg-require-effective-target rvv_zvl_ge_256b_ok } */
  
  long a;
  int b, c, d, e, f, g;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c
*** gcc-17-20260816/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-13.c	Sun Aug 23 22:32:17 2026
***************
*** 1,5 ****
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -fno-schedule-insns -fno-schedule-insns2" } */
  
  #include "riscv_vector.h"
  
--- 1,5 ----
  /* { dg-do compile } */
! /* { dg-options "-mrvv-vector-bits=scalable -march=rv32gcv -mabi=ilp32 -fno-tree-vectorize -fno-schedule-insns -fno-schedule-insns2 -fno-thread-jumps" } */
  
  #include "riscv_vector.h"
  
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S gcc-17-20260823/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
*** gcc-17-20260816/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S	Sun Aug 23 22:32:17 2026
*************** FUNC_BEGIN(mem_to_regs)
*** 105,110 ****
--- 105,123 ----
  	retq
  FUNC_END(mem_to_regs)
  
+ FUNC_BEGIN(call_do_test_unaligned)
+ 	# Load the 5th argument to R10.
+ 	movq	0x28(%rsp), %r10
+ 	# Unalign stack.
+ 	subq	$8, %rsp
+ 	# Push the 5th argument.
+ 	pushq	%r10
+ 	subq	$32, %rsp
+ 	call	ASMNAME(do_test_unaligned)
+ 	addq	$48, %rsp
+ 	ret
+ FUNC_END(call_do_test_unaligned)
+ 
  # NOTE: Not MT safe
  FUNC_BEGIN(do_test_unaligned)
  	# The below alignment checks are to verify correctness of the test
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc gcc-17-20260823/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
*** gcc-17-20260816/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc	Sun Aug 23 22:32:17 2026
*************** vector<class fn*> sysv_funcs;
*** 372,378 ****
  vector<class fn*> msabi_funcs;
  
  
! /* Emit extern for do_test_aligned and do_test_unaligned (defined in do_test.S)
     followed by all of the various do_test* function function pointers that
     are just aliases of them.  */
  static void make_do_tests_decl (const vector<class arg> &args, ostream &out)
--- 372,378 ----
  vector<class fn*> msabi_funcs;
  
  
! /* Emit extern for do_test_aligned and call_do_test_unaligned (defined in do_test.S)
     followed by all of the various do_test* function function pointers that
     are just aliases of them.  */
  static void make_do_tests_decl (const vector<class arg> &args, ostream &out)
*************** static void make_do_tests_decl (const ve
*** 381,387 ****
    unsigned i, varargs, unaligned;
  
    out << "extern __attribute__ ((ms_abi)) long do_test_aligned ();" << endl
!       << "extern __attribute__ ((ms_abi)) long do_test_unaligned ();" << endl;
  
    list_delimiter comma (", ");
    for (i = extra_params_min; i <= args.size (); ++i)
--- 381,387 ----
    unsigned i, varargs, unaligned;
  
    out << "extern __attribute__ ((ms_abi)) long do_test_aligned ();" << endl
!       << "extern __attribute__ ((ms_abi)) long call_do_test_unaligned ();" << endl;
  
    list_delimiter comma (", ");
    for (i = extra_params_min; i <= args.size (); ++i)
*************** static void make_do_tests_decl (const ve
*** 402,409 ****
  		<< ai->get_name ();
  	  if (varargs)
  	    out << comma.get () << "...";
! 	  out << ") = (void*)do_test_" << (unaligned ? "un" : "")
! 	      << "aligned;" << endl;
  	}
  }
  
--- 402,410 ----
  		<< ai->get_name ();
  	  if (varargs)
  	    out << comma.get () << "...";
! 	  out << ") = (void*)" << (unaligned
! 				   ? "call_do_test_unaligned;"
! 				   : "do_test_aligned;") << endl;
  	}
  }
  
*************** void make_do_test (const vector<class ar
*** 510,519 ****
  	    out << ");" << endl;
  	    /* End if init_test call.  */
  
- 	    if (f.get_realign () && unaligned == 1)
- 	      out << "  __asm__ __volatile__ (\"subq $8,%%rsp\":::\"cc\");"
- 		  << endl;
- 
  	    out << "  ret = do_test_"
  		<< (f.get_realign () && unaligned == 1 ? "u" : "")
  		<< (f.get_varargs () ? "v" : "")
--- 511,516 ----
*************** void make_do_test (const vector<class ar
*** 524,533 ****
  	      out << comma.get () << arg.get_name ();
  	    out << ");" << endl;
  
- 	    if (f.get_realign () && unaligned == 1)
- 	      out << "  __asm__ __volatile__ (\"addq $8,%%rsp\":::\"cc\");"
- 		  << endl;
- 
  	    out << "  check_results (ret);" << endl;
  	  }
      }
--- 521,526 ----
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/associate_83.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/associate_83.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/associate_83.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/associate_83.f90	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,36 ----
+ ! { dg-do run }
+ ! Test the fix for PR121384
+ ! Contributed by Mikael Morin  <mikael@gcc.gnu.org>
+ program test
+   implicit none
+   type :: t
+     integer :: i,j
+   end type
+   type(t) :: a(5)
+   class(t), allocatable :: c(:)
+   a = [ t(2,3), t(5,7), t(11,13), t(17,19), t(23,29) ]
+   associate (x => (a%i))
+     if (rank(x) /= 1) error stop 11
+     if (any(shape(x) /= [5])) error stop 12
+     if (any(x /= [2,5,11,17,23])) error stop 13
+   end associate
+   associate (x => (a%j))
+     if (rank(x) /= 1) error stop 21
+     if (any(shape(x) /= [5])) error stop 22
+     if (any(x /= [3,7,13,19,29])) error stop 23
+   end associate
+ 
+ ! Check the class variants
+   c = a
+   associate (x => (c%i))
+     if (rank(x) /= 1) error stop 31
+     if (any(shape(x) /= [5])) error stop 32
+     if (any(x /= [2,5,11,17,23])) error stop 33
+   end associate
+   associate (x => (c%j))
+     if (rank(x) /= 1) error stop 41
+     if (any(shape(x) /= [5])) error stop 42
+     if (any(x /= [3,7,13,19,29])) error stop 43
+   end associate
+   if (allocated (c)) deallocate (c)
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/associate_84.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/associate_84.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/associate_84.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/associate_84.f90	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,43 ----
+ ! { dg-do compile }
+ ! Test the a missed invalid code found while fixing PR121384
+ ! Contributed by Mikael Morin  <mikael@gcc.gnu.org>
+ program test
+   implicit none
+   type :: t
+     integer :: i,j
+   end type
+   type(t) :: a(5)
+   class(t), allocatable :: c(:)
+   a = [ t(2,3), t(5,7), t(11,13), t(17,19), t(23,29) ]
+   associate (x => (a%i))
+     if (rank(x) /= 1) error stop 11
+     if (any(shape(x) /= [5])) error stop 12
+     if (any(x /= [2,5,11,17,23])) error stop 13
+     x(1) = 3 ! { dg-error "cannot be used in a variable definition context" }
+   end associate
+   if  (a(1)%i /= 2) print *,a(1)%i
+   associate (x => (a%j))
+     if (rank(x) /= 1) error stop 21
+     if (any(shape(x) /= [5])) error stop 22
+     if (any(x /= [3,7,13,19,29])) error stop 23
+     x(1) = 4 ! { dg-error "cannot be used in a variable definition context" }
+   end associate
+   if  (a(1)%j /= 3) stop 24
+ 
+ ! Check the class variants
+   c = a
+   associate (x => (c%i))
+     if (rank(x) /= 1) error stop 31
+     if (any(shape(x) /= [5])) error stop 32
+     if (any(x /= [2,5,11,17,23])) error stop 33
+     x(1) = 3 ! { dg-error "cannot be used in a variable definition context" }
+   end associate
+   if  (c(1)%i /= 2) stop 34
+   associate (x => (c%j))
+     if (rank(x) /= 1) error stop 41
+     if (any(shape(x) /= [5])) error stop 42
+     if (any(x /= [3,7,13,19,29])) error stop 43
+     x(1) = 4 ! { dg-error "cannot be used in a variable definition context" }
+   end associate
+   if  (c(1)%j /= 3) stop 44
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/bind_c_private_1.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/bind_c_private_1.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/bind_c_private_1.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/bind_c_private_1.f90	Sun Aug 23 22:32:17 2026
***************
*** 0 ****
--- 1,30 ----
+ ! { dg-do compile }
+ ! { dg-require-visibility "" }
+ !
+ ! PR fortran/126872
+ !
+ ! A binding label gives external linkage, so PRIVATE must hide only the
+ ! Fortran name and must not give the symbol hidden ELF visibility.
+ ! Module entities without a binding label keep the hidden visibility
+ ! introduced by PR fortran/125430.
+ 
+ module m
+   use iso_c_binding
+   implicit none
+   private
+   integer(c_int), bind(C, name="bc_var") :: bc_var
+   integer :: plain_var
+ contains
+   subroutine bc_named() bind(C, name="bc_named")
+   end subroutine bc_named
+   subroutine bc_unnamed() bind(C)
+   end subroutine bc_unnamed
+   subroutine plain_sub()
+   end subroutine plain_sub
+ end module m
+ 
+ ! { dg-final { scan-not-hidden "bc_var" } }
+ ! { dg-final { scan-not-hidden "bc_named" } }
+ ! { dg-final { scan-not-hidden "bc_unnamed" } }
+ ! { dg-final { scan-hidden "__m_MOD_plain_var" } }
+ ! { dg-final { scan-hidden "__m_MOD_plain_sub" } }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/c_loc_test_22.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/c_loc_test_22.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/c_loc_test_22.f90	Sun Aug 16 22:32:13 2026
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/c_loc_test_22.f90	Sun Aug 23 22:32:17 2026
*************** end
*** 17,23 ****
  ! { dg-final { scan-tree-dump-not " _gfortran_internal_pack" "original" } }
  ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[0\\\];" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[D.\[0-9\]+ \\* 4\\\];" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) yyy.\[0-9\]+;" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) yyy.\[0-9\]+ \\+ \\(sizetype\\) \\(D.\[0-9\]+ \\* 16\\);" 1 "original" } }
  
  ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = parm.\[0-9\]+.data;\[^;]+ptr\[1-4\] = D.\[0-9\]+;" 4 "original" } }
--- 17,25 ----
  ! { dg-final { scan-tree-dump-not " _gfortran_internal_pack" "original" } }
  ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[0\\\];" 1 "original" } }
  ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.xxx.\[0-9\]+\\)\\\[D.\[0-9\]+ \\* 4\\\];" 1 "original" } }
! ! A TARGET assumed-shape dummy is addressed with the descriptor's runtime
! ! span, so the element offset is span-scaled instead of a constant 16.
! ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) &\\(.yyy.\[0-9\]+\\)\\\[0\\\];" 1 "original" } }
! ! { dg-final { scan-tree-dump-times "parm.\[0-9\]+.data = \\(void .\\) yyy.\[0-9\]+ \\+ \\(sizetype\\) \\(\\(yyy->span \\* D.\[0-9\]+\\) \\* 4\\);" 1 "original" } }
  
  ! { dg-final { scan-tree-dump-times "D.\[0-9\]+ = parm.\[0-9\]+.data;\[^;]+ptr\[1-4\] = D.\[0-9\]+;" 4 "original" } }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_5.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_5.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_5.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_5.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,35 ----
+ ! { dg-do run }
+ ! PR 53800
+ 
+ ! Check that a CLASS array with an extended dynamic type passed to an
+ ! assumed-shape TYPE dummy aliases the original storage, rather
+ ! than a copy-in/copy-out temporary that goes stale after return.
+ !
+ ! Reported by Tobias Burnus  <burnus@gcc.gnu.org>
+ 
+ program class_to_type
+   implicit none
+   type t
+     integer :: i
+   end type t
+   type, extends(t) :: t2
+     integer :: j
+   end type t2
+   class(t), target, allocatable :: a(:,:)
+   type(t), pointer :: ptr
+ 
+   allocate (t2 :: a(5,5))
+   a(:,:)%i = 53
+   a(3,3)%i = 42
+   a(4,4)%i = 74
+ 
+   call f (a)
+   if (ptr%i /= 42) stop 1
+   a(3,3)%i = 999
+   if (ptr%i /= 999) stop 2
+ contains
+   subroutine f(x)
+     type(t), target :: x(:,:)
+     ptr => x(3,3)
+   end subroutine f
+ end program class_to_type
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_6.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_6.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_6.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_6.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,93 ----
+ ! { dg-do run }
+ ! PR53800
+ 
+ ! A CLASS array actual passed to an assumed-shape TYPE dummy only
+ ! aliases the actual's storage when the dummy has the TARGET attribute.
+ !
+ module m
+   implicit none
+   type :: t
+     integer :: i
+   end type
+   type, extends(t) :: t2
+     integer :: pad(4)
+   end type
+   type :: u
+     integer :: k
+   end type
+   type :: c
+     integer  :: i
+     type(u)  :: sub(3)
+   end type
+   type, extends(c) :: c2
+     integer :: pad(4)
+   end type
+ contains
+   ! A dummy (non-target): copy-in/copy-out,
+   subroutine plain (x)
+     type(t) :: x(:)
+     if (any (x%i /= [1,2,3,4,5])) stop 1
+     call expl (x)
+     if (any (cshift (x%i, 1) /= [2,3,4,5,1])) stop 3
+     if (any (pack (x%i, [.true.,.false.,.true.,.false.,.true.]) &
+              /= [1,3,5])) stop 4
+     if (any (reshape (x%i, [1,5]) /= reshape ([1,2,3,4,5], [1,5]))) stop 5
+     call to_class (x)
+   end subroutine
+ 
+   subroutine expl (y)
+     type(t) :: y(5)
+     if (any (y%i /= [1,2,3,4,5])) stop 2
+   end subroutine
+ 
+   subroutine to_class (z)
+     class(t) :: z(:)
+     if (any (z%i /= [1,2,3,4,5])) stop 6
+   end subroutine
+ 
+   ! A component sub-array of a span-carrying dummy has its own element
+   ! size and must not inherit the parent's span.
+   subroutine comp (x)
+     type(c), target :: x(:)
+     call inner (x(2)%sub)
+   end subroutine
+ 
+   subroutine inner (s)
+     type(u) :: s(:)
+     if (any (s%k /= [21,22,23])) stop 7
+   end subroutine
+ end module
+ 
+ program class_to_type_6
+   use m
+   implicit none
+   class(t), target, allocatable :: a(:)
+   class(c), target, allocatable :: b(:)
+   type(t), pointer :: p
+   integer :: n
+ 
+   allocate (t2 :: a(5))
+   do n = 1, 5
+     a(n)%i = n
+   end do
+   call plain (a)
+ 
+   allocate (c2 :: b(3))
+   do n = 1, 3
+     b(n)%i = 10 * n
+     b(n)%sub(:)%k = [10*n+1, 10*n+2, 10*n+3]
+   end do
+   call comp (b)
+ 
+   ! A TARGET assumed-shape dummy without CONTIGUOUS does alias.
+   call aliased (a)
+   if (p%i /= 3) stop 8
+   a(3)%i = 999
+   if (p%i /= 999) stop 9
+ 
+ contains
+   subroutine aliased (x)
+     type(t), target :: x(:)
+     p => x(3)
+   end subroutine
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_7.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_7.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_7.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,151 ----
+ ! { dg-do run }
+ ! PR fortran/53800
+ 
+ ! Further cases in which a dummy must be associated with the actual
+ ! argument's storage rather than a copy-in/copy-out temporary: an
+ ! intrinsic-type component of a CLASS array, a POINTER dummy and an
+ ! assumed-rank TARGET dummy.
+ !
+ ! Variations contributed by Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ module m
+   implicit none
+   type t
+     integer :: i
+   end type t
+   type, extends(t) :: t2
+     integer :: j
+   end type t2
+ end module m
+ 
+ ! An intrinsic-type component of a CLASS array to an INTEGER TARGET dummy.
+ subroutine test_integer_component ()
+   use m
+   implicit none
+   class(t), target, allocatable :: a(:,:)
+   integer, pointer :: ptr
+ 
+   allocate (t2 :: a(5,5))
+   a(:,:)%i = 53
+   a(3,3)%i = 42
+ 
+   call f (a%i)
+   if (ptr /= 42) stop 1
+   a(3,3)%i = 999
+   if (ptr /= 999) stop 2
+ contains
+   subroutine f(x)
+     integer, target :: x(:,:)
+     ptr => x(3,3)
+   end subroutine f
+ end subroutine test_integer_component
+ 
+ ! A component of a plain derived-type array to an INTEGER TARGET dummy.
+ subroutine test_subref_component ()
+   implicit none
+   type u
+     integer :: i
+     integer :: pad
+   end type u
+   type(u), target :: a(5,5)
+   integer, pointer :: ptr
+ 
+   a(:,:)%i = 53
+   a(3,3)%i = 42
+ 
+   call f (a%i)
+   if (ptr /= 42) stop 3
+   a(3,3)%i = 999
+   if (ptr /= 999) stop 4
+ contains
+   subroutine f(x)
+     integer, target :: x(:,:)
+     ptr => x(3,3)
+   end subroutine f
+ end subroutine test_subref_component
+ 
+ ! A character component of a derived-type array to a CHARACTER TARGET dummy.
+ subroutine test_character_component ()
+   implicit none
+   type u
+     character(len=4) :: c
+     integer :: pad
+   end type u
+   type(u), target :: a(6)
+   character(len=4), pointer :: ptr
+   integer :: k
+ 
+   do k = 1, 6
+     a(k)%c = "ab00"
+   end do
+   a(4)%c = "zzzz"
+ 
+   call f (a%c)
+   if (ptr /= "zzzz") stop 10
+   a(4)%c = "qqqq"
+   if (ptr /= "qqqq") stop 11
+ contains
+   subroutine f(x)
+     character(len=4), target :: x(:)
+     ptr => x(4)
+   end subroutine f
+ end subroutine test_character_component
+ 
+ ! A CLASS POINTER array to a TYPE POINTER dummy.
+ subroutine test_pointer_dummy ()
+   use m
+   implicit none
+   class(t), pointer :: a(:,:)
+   type(t), pointer :: ptr
+ 
+   allocate (t2 :: a(5,5))
+   a(:,:)%i = 53
+   a(3,3)%i = 42
+ 
+   call f (a)
+   if (ptr%i /= 42) stop 5
+   a(3,3)%i = 999
+   if (ptr%i /= 999) stop 6
+   deallocate (a)
+ contains
+   subroutine f(x)
+     type(t), pointer :: x(:,:)
+     ptr => x(3,3)
+   end subroutine f
+ end subroutine test_pointer_dummy
+ 
+ ! A CLASS array to an assumed-rank TARGET dummy, selected with SELECT RANK.
+ subroutine test_assumed_rank ()
+   use m
+   implicit none
+   class(t), target, allocatable :: a(:,:)
+   type(t), pointer :: ptr
+ 
+   allocate (t2 :: a(5,5))
+   a(:,:)%i = 53
+   a(3,3)%i = 42
+ 
+   call f (a)
+   if (ptr%i /= 42) stop 7
+   a(3,3)%i = 999
+   if (ptr%i /= 999) stop 8
+ contains
+   subroutine f(x)
+     type(t), target :: x(..)
+     select rank (x)
+       rank (2)
+         ptr => x(3,3)
+       rank default
+         error stop 9
+     end select
+   end subroutine f
+ end subroutine test_assumed_rank
+ 
+ program class_to_type_7
+   implicit none
+   call test_integer_component ()
+   call test_subref_component ()
+   call test_character_component ()
+   call test_pointer_dummy ()
+   call test_assumed_rank ()
+ end program class_to_type_7
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_8.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_8.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_8.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_8.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,47 ----
+ ! { dg-do run }
+ ! PR fortran/53800
+ 
+ ! A component of an array of extended derived types, passed to a TARGET
+ ! dummy, is addressed through the span of its descriptor.  This must also
+ ! hold for a section of such a dummy and for a subobject reference applied
+ ! to it.
+ !
+ ! Contributed by Mikael Morin  <mikael@gcc.gnu.org>
+ 
+ program p
+   implicit none
+   type :: t
+     integer :: c1, c2
+   end type
+   type, extends(t) :: u
+     integer :: c3
+   end type
+   type, extends(u) :: v
+     integer :: c4
+   end type
+   type(v), target :: x(12)
+   integer :: i
+   x = [(v(i,i*i,i,i), i=1,size(x))]
+   call s1(x(2::3)%c2, 1)
+   call s2(x%u)
+ contains
+   subroutine s1(a, error_idx)
+     integer, intent(in) :: error_idx
+     integer, target :: a(:)
+     if (any(a /= [4, 25, 64, 121])) error stop error_idx * 10 + 1
+   end subroutine
+   subroutine s2(a)
+     type(u), target :: a(:)
+     if (any(a%c2 /= [(i*i, i=1,12)])) error stop 2
+     if (any(a(2::3)%c2 /= [4, 25, 64, 121])) error stop 3
+     call s1(a(2::3)%c2, 2)
+     call s3(a(2::3)%c2)
+     if (any(x(2::3)%c2 /= [-4, -25, -64, -121])) error stop 5
+     x = [(v(i,i*i,i,i), i=1,size(x))]
+   end subroutine
+   subroutine s3(a)
+     integer :: a(:)          ! copy-in/copy-out
+     if (any(a /= [4, 25, 64, 121])) error stop 4
+     a = -a
+   end subroutine
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_9.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_9.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/class_to_type_9.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/class_to_type_9.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,67 ----
+ ! { dg-do run }
+ ! PR fortran/53800
+ 
+ ! A TARGET dummy associated with elements that are spaced by more than the
+ ! element size: pointers to it stay valid after the call, it is written
+ ! through, it is not contiguous, it is copied when passed on to a dummy
+ ! without the TARGET attribute and it is transferred element by element.
+ 
+ module m
+   implicit none
+   type :: t
+     integer :: c1, c2
+   end type
+   integer, pointer :: saved(:) => null()
+ contains
+   subroutine chk(a, opt)
+     integer, target :: a(:)
+     integer, optional, target :: opt(:)
+     character(24) :: line
+     if (is_contiguous(a)) stop 1
+     if (present(opt)) stop 2
+     write (line, '(4I3)') a
+     if (line(1:12) /= '  1  4  9 16') stop 3
+     if (sum(a) /= 30) stop 4
+     call packed(a)
+     call assumed_size(a)
+     saved => a
+     a(2) = -a(2)
+   end subroutine
+   subroutine packed(b)         ! copy-in/copy-out
+     integer :: b(:)
+     if (any(b /= [1, 4, 9, 16])) stop 5
+     if (.not. is_contiguous(b)) stop 6
+   end subroutine
+   subroutine assumed_size(c)   ! no descriptor
+     integer :: c(*)
+     if (any(c(1:4) /= [1, 4, 9, 16])) stop 7
+   end subroutine
+   subroutine rank_any(d)
+     integer, target :: d(..)
+     select rank (d)
+     rank (1)
+       if (any(d /= [1, 2, 3, 4])) stop 8
+       saved => d
+     rank default
+       stop 9
+     end select
+   end subroutine
+ end module
+ 
+ program p
+   use m
+   implicit none
+   type(t), target :: x(4)
+   integer :: i
+   x = [(t(i, i*i), i=1,4)]
+ 
+   call chk(x%c2)
+   if (any(x%c2 /= [1, -4, 9, 16])) stop 10
+   saved = 0
+   if (any(x%c2 /= [0, 0, 0, 0])) stop 11
+   if (any(x%c1 /= [1, 2, 3, 4])) stop 12
+ 
+   call rank_any(x%c1)
+   saved = 7
+   if (any(x%c1 /= [7, 7, 7, 7])) stop 13
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/is_contiguous_7.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/is_contiguous_7.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/is_contiguous_7.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/is_contiguous_7.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,26 ----
+ ! { dg-do run }
+ !
+ ! PR fortran/126895
+ ! The IS_CONTIGUOUS intrinsic used to erroneously return FALSE for pointer
+ ! assumed-rank dummies associated with a scalar value.
+ 
+ program prog
+   implicit none
+   type :: t
+     integer :: c1
+   end type
+   type, extends(t) :: u
+     integer :: c2
+   end type
+   type(t), target :: x
+   type(u), target :: y
+   call s1(x, 1)
+   call s1(y, 2)
+ contains
+   subroutine s1(a, e)
+     class(t), pointer, intent(in) :: a(..)
+     integer, value :: e
+     !print *, is_contiguous(a)
+     if (.not. is_contiguous(a)) error stop e
+   end subroutine
+ end program
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/pr126909.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/pr126909.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/pr126909.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/pr126909.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,77 ----
+ ! { dg-do run }
+ ! { dg-options "-fdump-tree-original" }
+ !
+ ! Test the fix for PR126909, in which END PROGRAM/FUNCTION/SUBROUTINE labels
+ ! were not being generated correctly, when preceded by contain sections.
+ !
+ ! Contributed by Steve Kargl  <kargl@gcc.gnu.org>
+ !
+ Module tally
+   integer :: ctr = 0
+ contains
+   integer function two_power_n_plus (n, base)
+     integer, intent(IN) :: n, base
+     two_power_n_plus = 2**n  + base
+   end function two_power_n_plus
+ end module
+ 
+ program lost
+    use tally
+    interface
+       function yet_more_lost() result(i)
+          integer :: i
+       end function yet_more_lost
+    end interface
+ 
+    goto 9
+    stop 1
+ 9  ctr = two_power_n_plus (1, ctr)
+    call sub()
+    call more_lost()
+    if (yet_more_lost () /= 42) stop 2
+    if (ctr /= 126) stop 3
+    goto 10
+    stop 4
+    contains
+       subroutine sub()
+          ctr = two_power_n_plus (2, ctr)
+          goto 11
+          stop 5
+ 11    end subroutine sub
+ 10 end program lost
+ 
+ subroutine more_lost
+    use tally
+    goto 9
+    stop 6
+ 9  ctr = two_power_n_plus (3, ctr)
+    call sub2()
+    goto 10
+    stop 7
+    contains
+       subroutine sub2()
+          ctr = two_power_n_plus (4, ctr)
+          goto 11
+          stop 8
+ 11    end subroutine sub2
+ 10 end subroutine more_lost
+ 
+ function yet_more_lost() result(i)
+    use tally
+    integer :: i
+    i = 42
+    goto 9
+    stop 9
+ 9  ctr = two_power_n_plus (5, ctr)
+    call sub3()
+    goto 10
+    stop 10
+    contains
+       subroutine sub3()
+          ctr = two_power_n_plus (6, ctr)
+          goto 11
+          stop 11
+ 11    end subroutine sub3
+ 10 end function yet_more_lost
+ 
+ ! { dg-final { scan-tree-dump-times "label.000010" 6 "original" } }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/pr95542.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/pr95542.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/pr95542.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/pr95542.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,21 ----
+ ! { dg-do run }
+ ! PR95542 - ICE in gfc_get_symbol_decl, at fortran/trans-decl.cc:1851
+ !
+ function f()
+   character(:), allocatable :: f
+   f = 'xyz'
+   call s
+ contains
+   subroutine s
+     if (f /= 'xyz') stop 1
+   end subroutine s
+ end function f
+ 
+ program pr95542
+   interface
+     function f()
+       character(:), allocatable :: f
+     end function f
+   end interface
+   if (f() /= 'xyz') stop 2
+ end program pr95542
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gfortran.dg/structure_constructor_18.f90 gcc-17-20260823/gcc/testsuite/gfortran.dg/structure_constructor_18.f90
*** gcc-17-20260816/gcc/testsuite/gfortran.dg/structure_constructor_18.f90	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gfortran.dg/structure_constructor_18.f90	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,102 ----
+ ! { dg-do run }
+ !
+ ! Test the fix for PR121683 and a variant from Jerry Delisle. Explicit
+ ! deallocations were added, when both original and variant were stand
+ ! alone programs.
+ !
+ ! Contributed by Neil Carlson  <neil.n.carlson@gmail.com>
+ !            and Jerry Delisle  <jvdelisle@gcc.gnu.org>
+ !
+ module mod
+   implicit none
+   type, abstract :: func
+   end type
+   type, extends(func) :: poly
+     real, allocatable :: array(:)
+   end type
+   type, extends(func) :: func_deriv
+     class(func), allocatable :: f
+   end type
+ 
+ contains
+ 
+   subroutine alloc_deriv(f, df)
+     class(func), intent(in) :: f
+     class(func), allocatable, intent(out) :: df
+     allocate(df, source=func_deriv(f)) ! THIS CORRUPTS F
+   end subroutine
+ 
+ end module
+ 
+ program fubar
+   call original
+   call variant
+ contains
+ 
+   subroutine original
+     use mod
+     type(poly), allocatable :: p
+     class(func), allocatable :: f, df
+     real :: array(2) = [1, 2]
+     allocate(p)
+     p%array = array
+     call move_alloc(p, f)
+     call alloc_deriv(f, df)
+     if (.not.allocated(f)) stop 1
+     select type (f)
+       type is (poly)
+         if (.not.allocated(f%array)) stop 2 ! SANITIZER: HEAP-USE-AFTER-FREE
+         if (size(f%array) /= size(array)) stop 3
+         if (any(f%array /= array)) stop 4   ! SEGFAULTS HERE WITHOUT SANITIZER
+       class default
+         stop 5
+     end select
+     deallocate (f)
+     select type (df)                        ! Verify that df is OK
+       type is (func_deriv)
+       if (.not.allocated(df%f)) stop 6
+       select type (f => df%f)
+         type is (poly)
+           if (.not.allocated(f%array)) stop 7
+           if (size(f%array) /= size(array)) stop 8
+           if (any(f%array /= array)) stop 9
+         class default
+           stop 10
+         end select
+       class default
+         stop 11
+     end select
+     deallocate (df)
+   end
+ 
+   subroutine variant
+     type :: base
+       integer :: i = 1
+     end type
+     type, extends(base) :: t1
+       integer, allocatable :: array(:)
+     end type
+     type(t1) :: x
+     type :: t2
+       class(base), allocatable :: b
+     end type
+     type(t2), allocatable :: y
+     type :: t3
+       type(t1), allocatable :: b
+     end type
+     type(t3), allocatable :: z
+     type :: t4
+       type(t1) :: b
+     end type
+     type(t4), allocatable :: z2
+ 
+     x%array = [1,2]
+     allocate(y, source = t2(x))             ! This was the original problem...
+     if (any (x%array /= [1,2])) stop 12     ! ... x%array was overwritten
+     allocate(z, source = t3(x))
+     if (any (x%array /= [1,2])) stop 13     !    -ditto-
+     allocate(z2, source = t4(x))
+     if (any (x%array /= [1,2])) stop 14     ! Was already OK
+     deallocate (x%array, y, z, z2%b%array)
+   end
+ end ! Valgrind shows "     in use at exit: 0 bytes in 0 blocks"
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/reduce7.adb gcc-17-20260823/gcc/testsuite/gnat.dg/reduce7.adb
*** gcc-17-20260816/gcc/testsuite/gnat.dg/reduce7.adb	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/reduce7.adb	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,61 ----
+ -- { dg-do run }
+ -- { dg-options "-gnat2022 -gnatVa" }
+ 
+ with Ada.Text_IO;
+ 
+ procedure Reduce7 is
+ 
+    procedure Section_4_2_1_Paragraph_15 is
+       package Roman is
+          type Roman_Digit is ('I', 'V', 'X', 'L', 'C', 'D', 'M');
+          for Roman_Digit use ('I' => 1, 'V' => 5, 'X' => 10, 'L' => 50, 'C' => 100, 'D' => 500, 'M' => 1000);
+ 
+          subtype Roman_Character is Wide_Wide_Character with
+            Static_Predicate => Roman_Character in 'I' | 'V' | 'X' | 'L' | 'C' | 'D' | 'M';
+ 
+          Max_Roman_Number : constant := 3_999;  -- MMMCMXCIX
+ 
+          type Roman_Number is range 1 .. Max_Roman_Number
+            with String_Literal => To_Roman_Number;
+ 
+          function To_Roman_Number (S : Wide_Wide_String) return Roman_Number
+            with Pre => S'Length > 0 and then
+            (for all Char of S => Char in Roman_Character);
+ 
+          function To_Roman_Number (S : Wide_Wide_String) return Roman_Number is
+            (declare
+             R : constant array (Integer range <>) of Roman_Number :=
+             (for D in S'Range => Roman_Digit'Enum_Rep
+              (Roman_Digit'Wide_Wide_Value (''' & S (D) & '''))); -- See 3.5.2 and 13.4
+             begin
+               [for I in R'Range =>
+                 (if I < R'Last and then R (I) < R (I + 1) then -1 else 1) * R (I)]'
+                   Reduce("+", 0));
+       end Roman;
+ 
+    use type Roman.Roman_Number;
+    X : Roman.Roman_Number := "III" * "IV" * "XII"; -- 144 (that is, CXLIV)
+    Y : Roman.Roman_Number := 10;
+    begin
+       Ada.Text_IO.Put_Line ("III * IV * XII is" & X'Image);
+    end Section_4_2_1_Paragraph_15;
+ 
+    procedure Section_4_5_10_Paragraph_36 is
+       use Ada.Text_IO;
+       type Real is digits 8;
+       -- Example of a reduction expression used to compute the value of Pi:
+ 
+       --  See 3.5.7.
+       function Pi (Number_Of_Steps : Natural := 10_000) return Real is
+         (1.0 / Real (Number_Of_Steps) *
+           [for I in 1 .. Number_Of_Steps =>
+             (4.0 / (1.0 + ((Real (I) - 0.5) * (1.0 / Real (Number_Of_Steps)))**2))]'
+               Reduce("+", 0.0));
+    begin
+       Ada.Text_IO.Put_Line ("Pi =" & Pi (100)'Image);
+    end Section_4_5_10_Paragraph_36;
+ 
+ begin
+    Section_4_2_1_Paragraph_15;
+    Section_4_5_10_Paragraph_36;
+ end;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10.ads gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10.ads
*** gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10.ads	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,6 ----
+ -- { dg-do compile }
+ 
+ with Generic_Inst10_G3;
+ with Generic_Inst10_Pkg;
+ 
+ package Generic_Inst10 is new Generic_Inst10_G3 (Generic_Inst10_Pkg);
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g1.ads gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g1.ads
*** gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g1.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g1.ads	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,3 ----
+ generic
+ package Generic_Inst10_G1 is
+ end Generic_Inst10_G1;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g2.ads gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g2.ads
*** gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g2.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g2.ads	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,28 ----
+ with Ada.Containers.Indefinite_Ordered_Maps;
+ with Generic_Inst10_G1;
+ 
+ generic
+ package Generic_Inst10_G2 is
+ 
+   generic
+     with package Actual_Types is new Generic_Inst10_G1;
+   package Holder is
+   private
+     package Maps is new Ada.Containers.Indefinite_Ordered_Maps
+       (Integer, Integer);
+   end Holder;
+ 
+   generic
+     with package Actual_Types is new Generic_Inst10_G1;
+     with package Actual_Holder is new Holder (Actual_Types);
+   package User is
+   end User;
+ 
+   generic
+     with package Actual_Types is new Generic_Inst10_G1;
+     with package Actual_User is
+       new User (Actual_Types => Actual_Types, others => <>);
+   package Final is
+   end Final;
+ 
+ end Generic_Inst10_G2;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g3.ads gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g3.ads
*** gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_g3.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_g3.ads	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,13 ----
+ with Generic_Inst10_G1;
+ with Generic_Inst10_G2;
+ 
+ generic
+    with package Actual_Types is new Generic_Inst10_G1;
+ package Generic_Inst10_G3 is
+    package Actual_Root is new Generic_Inst10_G2;
+    package Actual_Holder is new Actual_Root.Holder (Actual_Types);
+    package Actual_User is new
+      Actual_Root.User (Actual_Types, Actual_Holder);
+    package Actual_Final is new
+      Actual_Root.Final (Actual_Types, Actual_User);
+ end Generic_Inst10_G3;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_pkg.ads gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_pkg.ads
*** gcc-17-20260816/gcc/testsuite/gnat.dg/specs/generic_inst10_pkg.ads	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/gcc/testsuite/gnat.dg/specs/generic_inst10_pkg.ads	Sun Aug 23 22:32:18 2026
***************
*** 0 ****
--- 1,3 ----
+ with Generic_Inst10_G1;
+ 
+ package Generic_Inst10_Pkg is new Generic_Inst10_G1;
diff -Nrcpad gcc-17-20260816/gcc/testsuite/lib/gcov.exp gcc-17-20260823/gcc/testsuite/lib/gcov.exp
*** gcc-17-20260816/gcc/testsuite/lib/gcov.exp	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/testsuite/lib/gcov.exp	Sun Aug 23 22:32:18 2026
*************** proc run-gcov-pytest { args } {
*** 694,702 ****
      }
  
      setenv GCOV_PATH $testcase
!     spawn -noecho python3 -m pytest --color=no -rap -s --tb=no $srcdir/$subdir/$pytest_script
  
      set prefix "\[^\r\n\]*"
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [gcov-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
--- 694,703 ----
      }
  
      setenv GCOV_PATH $testcase
!     spawn -noecho {*}[pytest_invoke] $srcdir/$subdir/$pytest_script
  
      set prefix "\[^\r\n\]*"
+     set timeout 300
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [gcov-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
*************** proc run-gcov-pytest { args } {
*** 713,718 ****
--- 714,722 ----
         pass $output
         exp_continue
        }
+       timeout {
+ 	  fail "$subdir/$testcase $pytest_script timed out"
+       }
      }
  
      clean-gcov $testcase
diff -Nrcpad gcc-17-20260816/gcc/testsuite/lib/scanhtml.exp gcc-17-20260823/gcc/testsuite/lib/scanhtml.exp
*** gcc-17-20260816/gcc/testsuite/lib/scanhtml.exp	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/testsuite/lib/scanhtml.exp	Sun Aug 23 22:32:18 2026
*************** proc run-html-pytest { args } {
*** 62,74 ****
      
      verbose "PYTHONPATH=[getenv PYTHONPATH]" 2
  
!     spawn -noecho python3 -m pytest --color=no -rap -s --tb=no $srcdir/$subdir/$pytest_script
  
      if [info exists old_PYTHONPATH] {
  	setenv PYTHONPATH ${old_PYTHONPATH}
      }
  
      set prefix "\[^\r\n\]*"
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [html-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
--- 62,75 ----
      
      verbose "PYTHONPATH=[getenv PYTHONPATH]" 2
  
!     spawn -noecho {*}[pytest_invoke] $srcdir/$subdir/$pytest_script
  
      if [info exists old_PYTHONPATH] {
  	setenv PYTHONPATH ${old_PYTHONPATH}
      }
  
      set prefix "\[^\r\n\]*"
+     set timeout 300
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [html-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
*************** proc run-html-pytest { args } {
*** 85,90 ****
         pass $output
         exp_continue
        }
      }
  }
- 
--- 86,93 ----
         pass $output
         exp_continue
        }
+       timeout {
+ 	  fail "$subdir/$testcase $pytest_script timed out"
+       }
      }
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/lib/scansarif.exp gcc-17-20260823/gcc/testsuite/lib/scansarif.exp
*** gcc-17-20260816/gcc/testsuite/lib/scansarif.exp	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/testsuite/lib/scansarif.exp	Sun Aug 23 22:32:18 2026
*************** proc run-sarif-pytest { args } {
*** 173,185 ****
      
      verbose "PYTHONPATH=[getenv PYTHONPATH]" 2
  
!     spawn -noecho python3 -m pytest --color=no -rap -s --tb=no $srcdir/$subdir/$pytest_script
  
      if [info exists old_PYTHONPATH] {
  	setenv PYTHONPATH ${old_PYTHONPATH}
      }
  
      set prefix "\[^\r\n\]*"
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [sarif-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
--- 173,186 ----
      
      verbose "PYTHONPATH=[getenv PYTHONPATH]" 2
  
!     spawn -noecho {*}[pytest_invoke] $srcdir/$subdir/$pytest_script
  
      if [info exists old_PYTHONPATH] {
  	setenv PYTHONPATH ${old_PYTHONPATH}
      }
  
      set prefix "\[^\r\n\]*"
+     set timeout 300
      expect {
        -re "FAILED($prefix)\[^\r\n\]+\r\n" {
         set output [sarif-pytest-format-line $testcase $pytest_script $expect_out(1,string)]
*************** proc run-sarif-pytest { args } {
*** 196,201 ****
         pass $output
         exp_continue
        }
      }
  }
- 
--- 197,204 ----
         pass $output
         exp_continue
        }
+       timeout {
+ 	  fail "$subdir/$testcase $pytest_script timed out"
+       }
      }
  }
diff -Nrcpad gcc-17-20260816/gcc/testsuite/lib/target-supports.exp gcc-17-20260823/gcc/testsuite/lib/target-supports.exp
*** gcc-17-20260816/gcc/testsuite/lib/target-supports.exp	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/testsuite/lib/target-supports.exp	Sun Aug 23 22:32:18 2026
*************** proc check_effective_target_riscv_v { }
*** 2177,2183 ****
  proc check_effective_target_rvv_zvl128b_ok { } {
      # Check if the target has a VLENB of 16.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_exec {
         int main()
         {
           int vlenb = 0;
--- 2177,2183 ----
  proc check_effective_target_rvv_zvl128b_ok { } {
      # Check if the target has a VLENB of 16.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_zvl128b_exec {
         int main()
         {
           int vlenb = 0;
*************** proc check_effective_target_rvv_zvl128b_
*** 2195,2201 ****
  proc check_effective_target_rvv_zvl256b_ok { } {
      # Check if the target has a VLENB of 32.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_exec {
  	int main()
  	{
  	  int vlenb = 0;
--- 2195,2201 ----
  proc check_effective_target_rvv_zvl256b_ok { } {
      # Check if the target has a VLENB of 32.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_zvl256b_exec {
  	int main()
  	{
  	  int vlenb = 0;
*************** proc check_effective_target_rvv_zvl256b_
*** 2213,2219 ****
  proc check_effective_target_rvv_zvl_ge_256b_ok { } {
      # Check if the target has at least a VLENB of 32.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_exec {
  	int main()
  	{
  	  int vlenb = 0;
--- 2213,2219 ----
  proc check_effective_target_rvv_zvl_ge_256b_ok { } {
      # Check if the target has at least a VLENB of 32.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_zvl_ge_256b_exec {
  	int main()
  	{
  	  int vlenb = 0;
*************** proc check_effective_target_rvv_zvl_ge_2
*** 2231,2237 ****
  proc check_effective_target_rvv_zvl512b_ok { } {
      # Check if the target has a VLENB of 64.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_exec {
  	int main()
  	{
  	  int vlenb = 0;
--- 2231,2237 ----
  proc check_effective_target_rvv_zvl512b_ok { } {
      # Check if the target has a VLENB of 64.
      set gcc_march [riscv_get_arch]
!     return [check_runtime ${gcc_march}_zvl512b_exec {
  	int main()
  	{
  	  int vlenb = 0;
*************** proc check_effective_target_int128 { } {
*** 4983,4988 ****
--- 4983,5008 ----
      }]
  }
  
+ # Return 1 if the target's mode table includes OImode (a 256-bit
+ # scalar_int_mode).  Enumerated from `INT_MODE (OI, 32)' declarations
+ # in gcc/config/*/*-modes.def.
+ 
+ proc check_effective_target_oi_mode { } {
+     return [check_cached_effective_target oi_mode {
+ 	expr { [istarget aarch64*-*-*]
+ 	       || [istarget i?86-*-*]
+ 	       || [istarget x86_64-*-*]
+ 	       || [istarget riscv*-*-*]
+ 	       || [istarget sparc*-*-*]
+ 	       || [istarget s390*-*-*]
+ 	       || [istarget loongarch*-*-*]
+ 	       || [istarget arm*-*-*]
+ 	       || [istarget alpha*-*-*]
+ 	       || [istarget ia64-*-*]
+ 	       || [istarget hppa*-*-*] }
+     }]
+ }
+ 
  # Return 1 if the target supports unsigned int->float conversion
  #
  
*************** foreach { armfunc armflag armdefs } {
*** 6371,6376 ****
--- 6391,6397 ----
  		__ARM_ARCH_8M_BASE__
  	v8m_main "-march=armv8-m.main+fp -mthumb" __ARM_ARCH_8M_MAIN__
  	v8_1m_main "-march=armv8.1-m.main+fp -mthumb" __ARM_ARCH_8M_MAIN__
+ 	v8_1m_main_mve "-march=armv8.1-m.main+mve -mthumb" __ARM_ARCH_8M_MAIN__
  	v8_1m_main_pacbti "-march=armv8.1-m.main+pacbti+fp -mthumb"
  		"__ARM_ARCH_8M_MAIN__ && __ARM_FEATURE_BTI && __ARM_FEATURE_PAUTH"
  	v8_1m_main_fp_hard "-march=armv8.1-m.main+pacbti+fp -mthumb -mfpu=auto -mfloat-abi=hard" "__ARM_ARCH_8M_MAIN__ && (__ARM_FP & 2)"
*************** proc check_effective_target_aarch64_sve2
*** 6772,6777 ****
--- 6793,6799 ----
  	return 0
      }
      return [check_runtime aarch64_sve2_hw_available {
+ 	#pragma GCC target "+sve2"
  	int
  	main (void)
  	{
*************** proc check_effective_target_avx10v2aux {
*** 11701,11706 ****
--- 11723,11731 ----
  	foo ()
  	{
  	  __asm__ volatile ("vcvtps2bf8\t{%%xmm1, %%xmm0|%%xmm0, %%xmm1}");
+ 	  __asm__ volatile ("vcvtbf82ps\t{%%xmm1, %%xmm0|%%xmm0, %%xmm1}");
+ 	  __asm__ volatile ("vunpackb\t$1, %%ymm1, %%ymm0");
+ 	  __asm__ volatile ("vpmovssdb\t{%%zmm1, %%xmm0|%%xmm0, %%zmm1}");
  	}
      } "-mavx10v2aux" ]
  }
*************** set exts {
*** 13076,13082 ****
      "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1" "sme2p2"
      "sme2p3"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
!     "ssve-fexpa" "ssve-bitperm" "ssve-aes"
  }
  
  foreach { aarch64_ext } $exts {
--- 13101,13107 ----
      "sme-b16b16" "sme-f16f16" "sme-i16i64" "sme" "sme2" "sme2p1" "sme2p2"
      "sme2p3"
      "ssve-fp8dot2" "ssve-fp8dot4" "ssve-fp8fma" "sve-bfscale" "sme-lutv2"
!     "ssve-fexpa" "ssve-bitperm" "ssve-aes" "sme-mop4"
  }
  
  foreach { aarch64_ext } $exts {
*************** proc check_effective_target_python3_modu
*** 14402,14412 ****
      }]
  }
  
  # Return 1 if pytest module is available for python3.
  
  proc check_effective_target_pytest3 { } {
      return [check_cached_effective_target pytest3 {
! 	set result [remote_exec host "python3 -m pytest --color=no -rap -s --tb=no --version"]
  	set status [lindex $result 0]
  	if { $status == 0 } then {
  	    return 1;
--- 14427,14444 ----
      }]
  }
  
+ # Helper to return the common pytest arguments
+ proc pytest_invoke { } {
+     return [list python3 -m pytest --color=no -rap -s --tb=no \
+ 	    --rootdir . --basetemp pytest-tmp \
+ 	    -p no:cacheprovider]
+ }
+ 
  # Return 1 if pytest module is available for python3.
  
  proc check_effective_target_pytest3 { } {
      return [check_cached_effective_target pytest3 {
! 	set result [remote_exec host "[pytest_invoke] --version"]
  	set status [lindex $result 0]
  	if { $status == 0 } then {
  	    return 1;
diff -Nrcpad gcc-17-20260816/gcc/tree-profile.cc gcc-17-20260823/gcc/tree-profile.cc
*** gcc-17-20260816/gcc/tree-profile.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-profile.cc	Sun Aug 23 22:32:19 2026
*************** resolve_counters (vec<counters> &cands)
*** 1033,1038 ****
--- 1033,1085 ----
  
  }
  
+ /* Append statements to SEQ that update the decision counter referenced by
+    REF with the COUNTER.  Generate two separate 32-bit atomic bitwise-or
+    operations specified by ATOMIC_IOR_32 in the RELAXED memory order.  If a
+    32-bit part of COUNTER folds to a constant zero, then the atomic
+    bitwise-or operation for this part is a no-op and is omitted.  */
+ static void
+ split_update_decision_counter (gimple_seq *seq, tree ref, tree counter,
+ 			       tree atomic_ior_32, tree relaxed)
+ {
+   ref = unshare_expr (ref);
+ 
+   /* Get the low and high addresses of the referenced counter.  */
+   tree addr_low = build_addr (ref);
+   tree four = build_int_cst (size_type_node, 4);
+   tree addr_high = gimple_build (seq, POINTER_PLUS_EXPR,
+ 				 TREE_TYPE (addr_low), addr_low, four);
+   if (WORDS_BIG_ENDIAN)
+     std::swap (addr_low, addr_high);
+ 
+   /* Get the low and high 32-bit parts of the counter.  Fold to a
+      constant if COUNTER is a compile-time constant, so that a part
+      which is known to be zero can be recognized below.  */
+   tree counter_low_32 = gimple_build (seq, NOP_EXPR, uint32_type_node,
+ 				      counter);
+   tree shift_32 = build_int_cst (integer_type_node, 32);
+   tree counter_high_64 = gimple_build (seq, RSHIFT_EXPR, gcov_type_node,
+ 				       counter, shift_32);
+   tree counter_high_32 = gimple_build (seq, NOP_EXPR, uint32_type_node,
+ 				       counter_high_64);
+ 
+   /* Atomically bitwise-or the low 32-bit counter parts.  */
+   if (!integer_zerop (counter_low_32))
+     {
+       gcall *call1 = gimple_build_call (atomic_ior_32, 3, addr_low,
+ 					counter_low_32, relaxed);
+       gimple_seq_add_stmt (seq, call1);
+     }
+ 
+   /* Atomically bitwise-or the high 32-bit counter parts.  */
+   if (!integer_zerop (counter_high_32))
+     {
+       gcall *call2 = gimple_build_call (atomic_ior_32, 3, addr_high,
+ 					counter_high_32, relaxed);
+       gimple_seq_add_stmt (seq, call2);
+     }
+ }
+ 
  /* Add instrumentation to a decision subgraph.  EXPR should be the
     (topologically sorted) block of nodes returned by cov_blocks, MAPS the
     bitmaps returned by cov_maps, and MASKS the block of bitsets returned by
*************** instrument_decisions (array_slice<basic_
*** 1138,1148 ****
    gcc_assert (xi == bitmap_count_bits (core));
  
    const tree relaxed = build_int_cst (integer_type_node, MEMMODEL_RELAXED);
!   const bool atomic = flag_profile_update == PROFILE_UPDATE_ATOMIC;
    const tree atomic_ior
!     = builtin_decl_explicit (TYPE_PRECISION (gcov_type_node) > 32
! 			     ? BUILT_IN_ATOMIC_FETCH_OR_8
! 			     : BUILT_IN_ATOMIC_FETCH_OR_4);
  
    /* Flush to the gcov accumulators.  */
    for (const basic_block b : expr)
--- 1185,1201 ----
    gcc_assert (xi == bitmap_count_bits (core));
  
    const tree relaxed = build_int_cst (integer_type_node, MEMMODEL_RELAXED);
!   const bool use_atomic_builtin
!     = counter_update == COUNTER_UPDATE_ATOMIC_BUILTIN;
!   const bool use_atomic_split
!     = counter_update == COUNTER_UPDATE_ATOMIC_SPLIT
!       || counter_update == COUNTER_UPDATE_ATOMIC_PARTIAL;
!   const tree atomic_ior_32
!     = builtin_decl_explicit (BUILT_IN_ATOMIC_FETCH_OR_4);
    const tree atomic_ior
!     = TYPE_PRECISION (gcov_type_node) > 32
!       ? builtin_decl_explicit (BUILT_IN_ATOMIC_FETCH_OR_8)
!       : atomic_ior_32;
  
    /* Flush to the gcov accumulators.  */
    for (const basic_block b : expr)
*************** instrument_decisions (array_slice<basic_
*** 1183,1189 ****
  		continue;
  	      tree ref = tree_coverage_counter_ref (GCOV_COUNTER_CONDS,
  						    2 * condno + k);
! 	      if (atomic)
  		{
  		  ref = unshare_expr (ref);
  		  gcall *flush = gimple_build_call (atomic_ior, 3,
--- 1236,1242 ----
  		continue;
  	      tree ref = tree_coverage_counter_ref (GCOV_COUNTER_CONDS,
  						    2 * condno + k);
! 	      if (use_atomic_builtin)
  		{
  		  ref = unshare_expr (ref);
  		  gcall *flush = gimple_build_call (atomic_ior, 3,
*************** instrument_decisions (array_slice<basic_
*** 1191,1196 ****
--- 1244,1252 ----
  						    next[k], relaxed);
  		  gimple_seq_add_stmt (&seq, flush);
  		}
+ 	      else if (use_atomic_split)
+ 		split_update_decision_counter (&seq, ref, next[k],
+ 					       atomic_ior_32, relaxed);
  	      else
  		{
  		  tree get = emit_assign (&seq, ref);
diff -Nrcpad gcc-17-20260816/gcc/tree-scalar-evolution.cc gcc-17-20260823/gcc/tree-scalar-evolution.cc
*** gcc-17-20260816/gcc/tree-scalar-evolution.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-scalar-evolution.cc	Sun Aug 23 22:32:19 2026
*************** analyze_and_compute_bitop_with_inv_effec
*** 3850,3861 ****
  
    if (code1 == BIT_XOR_EXPR)
      {
!        if (!tree_fits_uhwi_p (niter))
! 	return NULL_TREE;
!        unsigned HOST_WIDE_INT niter_num;
!        niter_num = tree_to_uhwi (niter);
!        if (niter_num % 2 != 0)
! 	match_op[0] =  build_zero_cst (type);
      }
  
    inv = PHI_ARG_DEF_FROM_EDGE (header_phi, loop_preheader_edge (loop));
--- 3850,3865 ----
  
    if (code1 == BIT_XOR_EXPR)
      {
!       tree niter_type = TREE_TYPE (niter);
!       tree one = build_one_cst (niter_type);
!       tree contributes = fold_build2 (BIT_XOR_EXPR, niter_type,
! 				      fold_build2 (BIT_AND_EXPR, niter_type,
! 						   niter, one),
! 				      one);
!       /* mask is all-ones when the invariant contributes, zero otherwise.  */
!       tree mask = fold_build1 (NEGATE_EXPR, type,
! 			       fold_convert (type, contributes));
!       match_op[0] = fold_build2 (BIT_AND_EXPR, type, match_op[0], mask);
      }
  
    inv = PHI_ARG_DEF_FROM_EDGE (header_phi, loop_preheader_edge (loop));
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-alias.cc gcc-17-20260823/gcc/tree-ssa-alias.cc
*** gcc-17-20260816/gcc/tree-ssa-alias.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-alias.cc	Sun Aug 23 22:32:19 2026
*************** ptr_deref_may_alias_global_p (tree ptr,
*** 224,230 ****
  
    /* If we end up with a pointer constant here that may point
       to global memory.  */
!   if (TREE_CODE (ptr) != SSA_NAME)
      return true;
  
    pi = SSA_NAME_PTR_INFO (ptr);
--- 224,230 ----
  
    /* If we end up with a pointer constant here that may point
       to global memory.  */
!   if (TREE_CODE (ptr) != SSA_NAME || !POINTER_TYPE_P (TREE_TYPE (ptr)))
      return true;
  
    pi = SSA_NAME_PTR_INFO (ptr);
*************** ptr_deref_may_alias_auto_p (tree ptr)
*** 248,254 ****
  
    /* If we end up with a pointer constant here that may point
       to local stack memory.  */
!   if (TREE_CODE (ptr) != SSA_NAME)
      return true;
  
    pi = SSA_NAME_PTR_INFO (ptr);
--- 248,254 ----
  
    /* If we end up with a pointer constant here that may point
       to local stack memory.  */
!   if (TREE_CODE (ptr) != SSA_NAME || !POINTER_TYPE_P (TREE_TYPE (ptr)))
      return true;
  
    pi = SSA_NAME_PTR_INFO (ptr);
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-dce.cc gcc-17-20260823/gcc/tree-ssa-dce.cc
*** gcc-17-20260816/gcc/tree-ssa-dce.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-dce.cc	Sun Aug 23 22:32:19 2026
*************** simple_dce_from_worklist (bitmap worklis
*** 2278,2283 ****
--- 2278,2284 ----
  	      for (unsigned i = 0; i < gimple_phi_num_args (phi); ++i)
  		SET_PHI_ARG_DEF (phi, i, zero);
  	      update_stmt (phi);
+ 	      reset_flow_sensitive_info (def);
  	    }
  	  else
  	    remove_phi_node (&gsi, true);
*************** simple_dce_from_worklist (bitmap worklis
*** 2292,2297 ****
--- 2293,2299 ----
  	      tree zero = build_zero_cst (TREE_TYPE (def));
  	      gassign *new_stmt = gimple_build_assign (def, zero);
  	      gsi_replace (&gsi, new_stmt, true);
+ 	      reset_flow_sensitive_info (def);
  	    }
  	  else
  	    {
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-forwprop.cc gcc-17-20260823/gcc/tree-ssa-forwprop.cc
*** gcc-17-20260816/gcc/tree-ssa-forwprop.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-forwprop.cc	Sun Aug 23 22:32:19 2026
*************** along with GCC; see the file COPYING3.
*** 58,63 ****
--- 58,64 ----
  #include "tree-ssa.h"
  #include "gimple-range.h"
  #include "tree-ssa-dce.h"
+ #include "tree-ssa-math-opts.h"
  
  /* This pass propagates the RHS of assignment statements into use
     sites of the LHS of the assignment.  It's basically a specialized
*************** simplify_count_zeroes (gimple_stmt_itera
*** 3605,3610 ****
--- 3606,4799 ----
    return true;
  }
  
+ /* Long-multiply fold framework.
+ 
+    Walks the outer addition or bit_ior chain on a candidate statement,
+    classifies each summand against the atom match patterns from
+    match.pd, and looks the resulting multiset of (kind, extract) tuples
+    up in a table.  On a hit, three cross-summand consistency checks
+    decide whether the wide multiply is emitted.  */
+ 
+ /* Match.pd recognizers for the conditional carry-add pattern. */
+ 
+ extern bool gimple_cond_carry_add (tree, tree *, tree (*)(tree));
+ 
+ /* Match.pd functions to match long multiplication.  */
+ 
+ extern bool gimple_mul_hi (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_lo (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_hilo (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_lolo (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_hihi (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_cross_sum (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_low_sum (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_low_accum (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_carry_cross_sum (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_carry_low_sum (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_carry_low (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_ladder_sum1 (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_ladder_sum2 (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_ladder_sum3 (tree, tree *, tree (*)(tree));
+ extern bool gimple_mul_ladder_part_sum (tree, tree *, tree (*)(tree));
+ 
+ /* Append to SEQ statements assigning DEST the high-part multiply of
+    OP1 and OP2, emitted as
+      (N)(((2N) op1 * (2N) op2) >> N).
+    pass_optimize_widening_mul's convert_mult_to_widen and
+    convert_mult_to_highpart later rewrite this to a single
+    WIDEN_MULT_EXPR or MULT_HIGHPART_EXPR when the target supports it,
+    otherwise the 2N multiply expands directly.  Emitting the canonical
+    widening shape keeps target-capability decisions in the layer that
+    already owns them.  */
+ 
+ static void
+ build_mul_high_seq (tree op1, tree op2, tree dest, location_t loc,
+ 		    gimple_seq *seq)
+ {
+   tree op_type = TREE_TYPE (op1);
+   unsigned int width = TYPE_PRECISION (op_type);
+   tree wide_type = build_nonstandard_integer_type (width * 2, 1);
+ 
+   tree wide_a = gimple_convert (seq, loc, wide_type, op1);
+   tree wide_b = gimple_convert (seq, loc, wide_type, op2);
+   tree wide_prod = gimple_build (seq, loc, MULT_EXPR, wide_type,
+ 				 wide_a, wide_b);
+   tree hi = gimple_build (seq, loc, RSHIFT_EXPR, wide_type, wide_prod,
+ 			  build_int_cst (integer_type_node, width));
+ 
+   gimple *prod = gimple_build_assign (dest, NOP_EXPR, hi);
+   gimple_set_location (prod, loc);
+   gimple_seq_add_stmt (seq, prod);
+ }
+ 
+ /* Append to SEQ statements combining ACC with each of EXTRAS under
+    OUTER, the last one assigning to STMT's lhs.  EXTRAS are leaves of
+    STMT's own chain, so any combining order is valid.  */
+ 
+ static void
+ long_mul_apply_extras (tree acc, const vec<tree> &extras, tree_code outer,
+ 		       gassign *stmt, gimple_seq *seq)
+ {
+   location_t loc = gimple_location (stmt);
+   tree lhs = gimple_assign_lhs (stmt);
+   for (unsigned i = 0; i + 1 < extras.length (); i++)
+     acc = gimple_build (seq, loc, outer, TREE_TYPE (lhs), acc, extras[i]);
+   gimple *last = gimple_build_assign (lhs, outer, acc, extras.last ());
+   gimple_set_location (last, loc);
+   gimple_seq_add_stmt (seq, last);
+ }
+ 
+ /* Replace STMT with a high-part multiply of OP1 and OP2, combining any
+    EXTRAS back on top under OUTER.  */
+ 
+ static void
+ create_mul_high_seq (tree op1, tree op2, gassign *stmt,
+ 		     const vec<tree> &extras, tree_code outer)
+ {
+   gimple_seq seq = NULL;
+   tree lhs = gimple_assign_lhs (stmt);
+   tree dest = extras.is_empty () ? lhs : make_ssa_name (TREE_TYPE (lhs));
+   build_mul_high_seq (op1, op2, dest, gimple_location (stmt), &seq);
+   if (!extras.is_empty ())
+     long_mul_apply_extras (dest, extras, outer, stmt, &seq);
+   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+   gsi_replace_with_seq (&gsi, seq, true);
+ }
+ 
+ /* Replace STMT with a low-part multiply of OP1 and OP2, combining any
+    EXTRAS back on top under OUTER.  */
+ 
+ static void
+ create_mul_low_seq (tree op1, tree op2, gassign *stmt,
+ 		    const vec<tree> &extras, tree_code outer)
+ {
+   gimple_seq seq = NULL;
+   tree lhs = gimple_assign_lhs (stmt);
+   tree dest = extras.is_empty () ? lhs : make_ssa_name (TREE_TYPE (lhs));
+   gimple *prod = gimple_build_assign (dest, MULT_EXPR, op1, op2);
+   gimple_set_location (prod, gimple_location (stmt));
+   gimple_seq_add_stmt (&seq, prod);
+   if (!extras.is_empty ())
+     long_mul_apply_extras (dest, extras, outer, stmt, &seq);
+   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+   gsi_replace_with_seq (&gsi, seq, true);
+ }
+ 
+ /* Widest match.pd atom (mul_carry_low_sum) takes 7 captures; round up
+    to 8 for the scratch buffers below.  */
+ static constexpr unsigned LONG_MUL_MAX_CAPTURES = 8;
+ 
+ /* Longest variant in long_mul_table has 4 summands.  */
+ static constexpr unsigned LONG_MUL_MAX_SUMMANDS = 4;
+ 
+ /* Cap on the leaves set aside as not part of the idiom, so an
+    arbitrarily long unrelated chain still bails early.  */
+ static constexpr unsigned LONG_MUL_MAX_EXTRAS = 4;
+ 
+ namespace {
+ 
+ enum long_mul_kind : unsigned char {
+   LMK_INVALID,
+   LMK_MUL_HIHI,
+   LMK_MUL_LOLO,
+   LMK_MUL_HILO,
+   LMK_CROSS_SUM,
+   LMK_LOW_ACCUM,
+   LMK_LOW_SUM,
+   LMK_LADDER_SUM1,
+   LMK_LADDER_SUM2,
+   LMK_LADDER_SUM3,
+   LMK_LADDER_PART_SUM,
+   LMK_CARRY_LOW,
+   LMK_CARRY_CROSS_SUM,
+   LMK_CARRY_LOW_SUM,
+ };
+ 
+ /* How the leaf wraps its inner kind.  Carry kinds use LMX_NONE: their
+    match.pd pattern bakes the lshift in, so the leaf is already the
+    complete carry expression.  */
+ 
+ enum long_mul_extract : unsigned char  {
+   LMX_NONE,
+   LMX_HI,
+   LMX_LO,
+   LMX_SHL_N,
+ };
+ 
+ struct long_mul_summand {
+   long_mul_summand () {}
+   long_mul_summand (tree);
+   long_mul_summand (const long_mul_summand &) = default;
+   long_mul_kind kind = LMK_INVALID;
+   long_mul_extract extract = LMX_NONE;
+   tree op0 = NULL_TREE, op1 = NULL_TREE;
+   tree hilo[3] = { NULL_TREE, NULL_TREE, NULL_TREE };
+   tree carry_a = NULL_TREE, carry_b = NULL_TREE;
+   unsigned HOST_WIDE_INT shift = 0;
+   operator bool () { return kind != LMK_INVALID; }
+ private:
+   bool classify_carry (tree leaf);
+   bool classify_hi_extract (tree, unsigned HOST_WIDE_INT);
+   bool classify_lo_extract (tree);
+   bool classify_shl_extract (tree, unsigned HOST_WIDE_INT);
+   bool classify_plus_kinds (tree);
+   bool classify_bare (tree);
+   void set (long_mul_kind kind, const tree *res_ops);
+ };
+ 
+ }
+ 
+ /* Walk the OUTER addition or BIT_IOR chain rooted at STMT and collect
+    the leaf operands into LEAVES.  Descends through single-use
+    intermediate stmts of the same code.  Returns false once the leaf
+    count exceeds LONG_MUL_MAX_SUMMANDS + LONG_MUL_MAX_EXTRAS, so an
+    overlong chain bails mid-walk instead of after a full traversal.
+ 
+    If SHARED_DEF_OUT is non-NULL, record there the first inner stmt that
+    shares the outer code but has more than one use -- descending into it
+    would change semantics, so it stays as a leaf.  Such a leaf often
+    classifies as something no row matches, silently disabling the fold;
+    the caller surfaces this as a dump-file hint.  */
+ 
+ static bool
+ long_mul_linearize_chain (gimple *stmt, tree_code outer, vec<tree> &leaves,
+ 			  gimple **shared_def_out = NULL)
+ {
+   auto_vec<tree, 8> stack;
+   stack.safe_push (gimple_assign_rhs2 (stmt));
+   stack.safe_push (gimple_assign_rhs1 (stmt));
+ 
+   while (!stack.is_empty ())
+     {
+       tree t = stack.pop ();
+       if (TREE_CODE (t) == SSA_NAME)
+ 	{
+ 	  gimple *def = SSA_NAME_DEF_STMT (t);
+ 	  if (def
+ 	      && is_gimple_assign (def)
+ 	      && gimple_assign_rhs_code (def) == outer)
+ 	    {
+ 	      if (has_single_use (t))
+ 		{
+ 		  stack.safe_push (gimple_assign_rhs2 (def));
+ 		  stack.safe_push (gimple_assign_rhs1 (def));
+ 		  continue;
+ 		}
+ 	      if (shared_def_out && !*shared_def_out)
+ 		*shared_def_out = def;
+ 	    }
+ 	}
+       leaves.safe_push (t);
+       if (leaves.length () > LONG_MUL_MAX_SUMMANDS + LONG_MUL_MAX_EXTRAS)
+ 	return false;
+     }
+   return !leaves.is_empty ();
+ }
+ 
+ /* If EXPR is defined by LSHIFT_EXPR with a uhwi-valued amount, return
+    the shifted input via *INNER_OUT and the amount via *SHIFT_OUT.  */
+ 
+ static bool
+ long_mul_is_lshift_def (tree expr, tree *inner_out,
+ 			unsigned HOST_WIDE_INT *shift_out)
+ {
+   if (TREE_CODE (expr) != SSA_NAME)
+     return false;
+   gimple *def = SSA_NAME_DEF_STMT (expr);
+   if (!def || !is_gimple_assign (def)
+       || gimple_assign_rhs_code (def) != LSHIFT_EXPR)
+     return false;
+   tree amount = gimple_assign_rhs2 (def);
+   if (!tree_fits_uhwi_p (amount))
+     return false;
+   *inner_out = gimple_assign_rhs1 (def);
+   *shift_out = tree_to_uhwi (amount);
+   return true;
+ }
+ 
+ /* Fill THIS's kind plus the captures from RES_OPS that the kind requires.
+    The kind itself determines how many (op0, op1) and hilo captures to
+    pick up from RES_OPS, and whether a baked-in shift is present.  */
+ 
+ void
+ long_mul_summand::set (long_mul_kind kind, const tree *res_ops)
+ {
+   this->kind = kind;
+   unsigned n_ops = 0;
+   unsigned n_hilos = 0;
+   int shift_idx = -1;
+   switch (kind)
+     {
+     default:
+       gcc_unreachable ();
+     case LMK_MUL_HIHI:
+     case LMK_MUL_LOLO:
+     case LMK_MUL_HILO:
+       n_ops = 2;
+       break;
+     case LMK_CROSS_SUM:
+       n_hilos = 2;
+       break;
+     case LMK_LOW_ACCUM:
+     case LMK_LOW_SUM:
+     case LMK_LADDER_SUM1:
+     case LMK_LADDER_SUM2:
+     case LMK_LADDER_SUM3:
+       n_ops = 2;
+       n_hilos = 2;
+       break;
+     case LMK_LADDER_PART_SUM:
+       n_ops = 2;
+       n_hilos = 1;
+       break;
+     case LMK_CARRY_CROSS_SUM:
+       n_hilos = 3;
+       shift_idx = 3;
+       break;
+     case LMK_CARRY_LOW_SUM:
+       n_ops = 2;
+       n_hilos = 3;
+       shift_idx = 5;
+       break;
+     case LMK_CARRY_LOW:
+       this->carry_a = res_ops[0];
+       this->carry_b = res_ops[1];
+       return;
+     }
+   if (n_ops >= 1)
+     this->op0 = res_ops[0];
+   if (n_ops >= 2)
+     this->op1 = res_ops[1];
+   gcc_checking_assert (n_hilos <= 3);
+   for (unsigned i = 0; i < n_hilos; i++)
+     this->hilo[i] = res_ops[n_ops + i];
+   if (shift_idx >= 0)
+     /* The carry atoms (mul_carry_cross_sum, mul_carry_low_sum) capture the
+        shift since it is always less than TYPE_PRECISION, using tree_to_uhwi is safe.  */
+     this->shift = tree_to_uhwi (res_ops[shift_idx]);
+ }
+ 
+ /* Classify LEAF as a carry-kind summand.  The lshift amount is baked
+    into mul_carry_cross_sum / mul_carry_low_sum, so they're tried before
+    any branch that looks for a generic (X >> N) or (X << N) wrapper.  */
+ 
+ bool
+ long_mul_summand::classify_carry (tree leaf)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   /* mul_carry_low_sum's inner is constrained to mul_low_sum (cross_sum
+      + mul_hi(mul_lolo)); mul_carry_cross_sum's inner is just
+      mul_cross_sum (any plus); mul_carry_low matches gt:c (@0, plus(@0,
+      @1)) without a baked-in shift.  Most specific first, so the
+      less-constrained pattern doesn't shadow the more-constrained one.  */
+   if (gimple_mul_carry_low_sum (leaf, res_ops, NULL))
+     {
+       set (LMK_CARRY_LOW_SUM, res_ops);
+       return true;
+     }
+   if (gimple_mul_carry_cross_sum (leaf, res_ops, NULL))
+     {
+       set (LMK_CARRY_CROSS_SUM, res_ops);
+       return true;
+     }
+   if (gimple_mul_carry_low (leaf, res_ops, NULL))
+     {
+       set (LMK_CARRY_LOW, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Plus-based summand kinds shared by the (X >> SHIFT) and (X << SHIFT)
+    classifiers.  Order is by specificity: mul_low_sum's first arm is any
+    plus, so mul_ladder_sum1/3 (which constrain that arm to a plus
+    containing a mul_lo) and mul_low_accum (which constrains both arms)
+    shadow it and must come first.  */
+ 
+ bool
+ long_mul_summand::classify_plus_kinds (tree inner)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   if (gimple_mul_low_accum (inner, res_ops, NULL))
+     {
+       set (LMK_LOW_ACCUM, res_ops);
+       return true;
+     }
+   if (gimple_mul_ladder_sum3 (inner, res_ops, NULL))
+     {
+       set (LMK_LADDER_SUM3, res_ops);
+       return true;
+     }
+   if (gimple_mul_ladder_sum1 (inner, res_ops, NULL))
+     {
+       set (LMK_LADDER_SUM1, res_ops);
+       return true;
+     }
+   if (gimple_mul_low_sum (inner, res_ops, NULL))
+     {
+       set (LMK_LOW_SUM, res_ops);
+       return true;
+     }
+   if (gimple_mul_ladder_sum2 (inner, res_ops, NULL))
+     {
+       set (LMK_LADDER_SUM2, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Classify INNER -- already unwrapped from an outer (X >> SHIFT) -- as
+    a high-half-extracted summand.  mul_hilo (mult-shape) is orthogonal
+    to the plus-based kinds and is tried first; ladder_part_sum (one arm
+    unconstrained) and mul_cross_sum (any plus) are the fallbacks after
+    the shared plus-based ladder.  */
+ 
+ bool
+ long_mul_summand::classify_hi_extract (tree inner, unsigned HOST_WIDE_INT shift)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   this->extract = LMX_HI;
+   this->shift = shift;
+   if (gimple_mul_hilo (inner, res_ops, NULL))
+     {
+       set (LMK_MUL_HILO, res_ops);
+       return true;
+     }
+   if (classify_plus_kinds (inner))
+     return true;
+   if (gimple_mul_ladder_part_sum (inner, res_ops, NULL))
+     {
+       set (LMK_LADDER_PART_SUM, res_ops);
+       return true;
+     }
+   if (gimple_mul_cross_sum (inner, res_ops, NULL))
+     {
+       set (LMK_CROSS_SUM, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Classify INNER -- already unwrapped from an outer (X & MASK) -- as
+    a low-half-masked summand.  */
+ 
+ bool
+ long_mul_summand::classify_lo_extract (tree inner)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   this->extract = LMX_LO;
+   if (gimple_mul_lolo (inner, res_ops, NULL))
+     {
+       set (LMK_MUL_LOLO, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Classify INNER -- already unwrapped from an outer (X << SHIFT) -- as
+    a left-shifted summand.  No mul_hilo / ladder_part_sum here -- those
+    shapes appear only under (X >> SHIFT).  */
+ 
+ bool
+ long_mul_summand::classify_shl_extract (tree inner,
+ 					unsigned HOST_WIDE_INT shift)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   this->extract = LMX_SHL_N;
+   this->shift = shift;
+   if (classify_plus_kinds (inner))
+     return true;
+   if (gimple_mul_cross_sum (inner, res_ops, NULL))
+     {
+       set (LMK_CROSS_SUM, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Classify LEAF as one of the bare-kind summands (no extraction
+    wrapper): mul_hihi or mul_lolo standing on their own.  */
+ 
+ bool
+ long_mul_summand::classify_bare (tree leaf)
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+   if (gimple_mul_hihi (leaf, res_ops, NULL))
+     {
+       set (LMK_MUL_HIHI, res_ops);
+       return true;
+     }
+   if (gimple_mul_lolo (leaf, res_ops, NULL))
+     {
+       set (LMK_MUL_LOLO, res_ops);
+       return true;
+     }
+   return false;
+ }
+ 
+ /* Classify LEAF as one of the long-multiply summand shapes.  On success,
+    fill *INFO with the kind, extract, captured operands and shift.
+    Dispatches to per-extract helpers; the order matters because the
+    carry kinds bake an lshift into the pattern and would otherwise be
+    misread by the (X << N) branch.  */
+ 
+ long_mul_summand::long_mul_summand (tree leaf)
+  : long_mul_summand()
+ {
+   tree res_ops[LONG_MUL_MAX_CAPTURES];
+ 
+   if (classify_carry (leaf))
+     return;
+ 
+   if (gimple_mul_hi (leaf, res_ops, NULL))
+     {
+       classify_hi_extract (res_ops[0], tree_to_uhwi (res_ops[1]));
+       return;
+     }
+ 
+   if (gimple_mul_lo (leaf, res_ops, NULL))
+     {
+       classify_lo_extract (res_ops[0]);
+       return;
+     }
+ 
+   tree inner;
+   unsigned HOST_WIDE_INT shift;
+   if (long_mul_is_lshift_def (leaf, &inner, &shift))
+     {
+       classify_shl_extract (inner, shift);
+       return;
+     }
+ 
+   classify_bare (leaf);
+ }
+ 
+ /* qsort comparator: sort summands by (kind, extract) to put a multiset
+    into canonical order for table lookup.  Unstable sort within a tie is
+    harmless: no row in long_mul_table pairs distinct subterms under the
+    same (kind, extract), and long_mul_check_consistency cross-validates
+    that matching summands share one canonical (op0, op1).  */
+ 
+ static int
+ long_mul_summand_compare (const void *a, const void *b)
+ {
+   const long_mul_summand *sa = (const long_mul_summand *) a;
+   const long_mul_summand *sb = (const long_mul_summand *) b;
+   gcc_checking_assert (sa->kind != LMK_INVALID);
+   gcc_checking_assert (sb->kind != LMK_INVALID);
+   if (sa->kind != sb->kind)
+     return (int) sa->kind - (int) sb->kind;
+   return (int) sa->extract - (int) sb->extract;
+ }
+ 
+ /* One row of the long-multiply variant table.  COUNT is how many entries
+    of SIG carry the row's signature (2 to LONG_MUL_MAX_SUMMANDS); a row
+    with fewer summands leaves the remaining SIG entries zero-initialized.
+    Those zeros are not a terminator -- {LMK_MUL_HIHI, LMX_NONE} is itself a
+    valid signature -- so long_mul_signature_matches is bounded by COUNT,
+    never by a sentinel entry.  */
+ 
+ struct long_mul_row {
+   enum long_mul_row_part { HIGH_PART, LOW_PART } part;
+   tree_code outer;
+   unsigned char count;
+   struct {
+     long_mul_kind kind;
+     long_mul_extract extract;
+   } sig[LONG_MUL_MAX_SUMMANDS];
+   bool (*extra_check) (const vec<long_mul_summand> &, gimple *);
+ };
+ 
+ /* True if (A, B) is the same pair as (OP0, OP1) in either order.  */
+ 
+ static inline bool
+ long_mul_same_ops (tree a, tree b, tree op0, tree op1)
+ {
+   return (a == op0 && b == op1) || (a == op1 && b == op0);
+ }
+ 
+ /* True if H is a cross-half product of (OP0, OP1) -- gimple_mul_hilo
+    recognizes it and its captured operands match the pair.  */
+ 
+ static bool
+ long_mul_is_cross_half (tree h, tree op0, tree op1)
+ {
+   tree scratch[LONG_MUL_MAX_CAPTURES];
+   return gimple_mul_hilo (h, scratch, NULL)
+ 	 && long_mul_same_ops (scratch[0], scratch[1], op0, op1);
+ }
+ 
+ /* Orientation of the mul_hilo capture H relative to (OP0, OP1):
+    returns 0 for high(OP0)*low(OP1), 1 for high(OP1)*low(OP0), or -1
+    if H does not decompose that way.  A cross-sum of two mul_hilos must
+    see one of each orientation -- otherwise a doubled factor would fold
+    to the wrong value.  (In a self-multiply the two orientations
+    coincide; see the OP0 == OP1 bypass in long_mul_check_consistency.)  */
+ 
+ static int
+ long_mul_hilo_orientation (tree h, tree op0, tree op1)
+ {
+   tree scratch[LONG_MUL_MAX_CAPTURES];
+   if (!gimple_mul_hilo (h, scratch, NULL))
+     return -1;
+   if (scratch[0] == op0 && scratch[1] == op1)
+     return 0;
+   if (scratch[0] == op1 && scratch[1] == op0)
+     return 1;
+   return -1;
+ }
+ 
+ /* Find the first summand that carries operand captures, and return its
+    (op0, op1) pair in *OP0_OUT / *OP1_OUT.  Returns false if no summand
+    provides them.  */
+ 
+ static bool
+ long_mul_canonical_ops (const vec<long_mul_summand> &summands,
+ 			tree *op0_out, tree *op1_out)
+ {
+   for (const long_mul_summand &s : summands)
+     if (s.op0)
+       {
+ 	*op0_out = s.op0;
+ 	*op1_out = s.op1;
+ 	return true;
+       }
+   return false;
+ }
+ 
+ /* Return the first summand in SUMMANDS whose kind matches KIND, or NULL.  */
+ 
+ static const long_mul_summand *
+ long_mul_find_summand (const vec<long_mul_summand> &summands,
+ 		       long_mul_kind kind)
+ {
+   gcc_checking_assert (kind != LMK_INVALID);
+   for (const long_mul_summand &s : summands)
+     if (s.kind == kind)
+       return &s;
+   return NULL;
+ }
+ 
+ /* Run the cross-summand validation invariants and return the canonical
+    (op0, op1).  Returns false unless all summands that carry operands use
+    the same (op0, op1) pair (in either order), every LMX_HI/LMX_SHL_N shift
+    equals halfwidth, every captured hilo is a true cross-half product of
+    (op0, op1), and every cross-half pair (both those inside a single
+    mul_cross_sum-bearing summand and those spread across separate
+    LMK_MUL_HILO summands) contains one of each orientation.  */
+ 
+ static bool
+ long_mul_check_consistency (const vec<long_mul_summand> &summands,
+ 		   tree *op0_out, tree *op1_out)
+ {
+   tree op0, op1;
+   if (!long_mul_canonical_ops (summands, &op0, &op1))
+     return false;
+ 
+   tree op_type = TREE_TYPE (op0);
+   if (!INTEGRAL_TYPE_P (op_type)
+       || TYPE_PRECISION (op_type) % 2 != 0)
+     return false;
+   unsigned int halfwidth = TYPE_PRECISION (op_type) / 2;
+ 
+   /* Self-multiply (x*x) collapses the two cross-halves onto one value,
+      so the complementarity constraint is a trivial no-op there.  */
+   bool need_orient = op0 != op1;
+   int mul_hilo_orient[2] = { 0, 0 };
+ 
+   for (const long_mul_summand &s : summands)
+     {
+       if (s.op0 && !long_mul_same_ops (s.op0, s.op1, op0, op1))
+ 	return false;
+       if ((s.extract == LMX_HI || s.extract == LMX_SHL_N)
+ 	  && s.shift != halfwidth)
+ 	return false;
+       for (tree h : s.hilo)
+ 	if (h && !long_mul_is_cross_half (h, op0, op1))
+ 	  return false;
+ 
+       if (!need_orient)
+ 	continue;
+ 
+       /* The two cross-sum operands are the last two non-null hilos:
+ 	 (hilo[1], hilo[2]) for the CARRY_*_SUM kinds, (hilo[0], hilo[1]) for
+ 	 the CROSS_SUM / SUM / ACCUM / LADDER_SUM kinds, none for the
+ 	 rest.  */
+       tree a = NULL_TREE;
+       tree b = NULL_TREE;
+       if (s.hilo[2])
+ 	{
+ 	  a = s.hilo[1];
+ 	  b = s.hilo[2];
+ 	}
+       else if (s.hilo[1])
+ 	{
+ 	  a = s.hilo[0];
+ 	  b = s.hilo[1];
+ 	}
+       if (a && b
+ 	  && (long_mul_hilo_orientation (a, op0, op1)
+ 	      == long_mul_hilo_orientation (b, op0, op1)))
+ 	return false;
+ 
+       /* Two LMK_MUL_HILO summands (the two-hilos ladder form) stand for
+ 	 the two cross-halves separately; count orientations and require
+ 	 the pair to be complementary.  s.op0/op1 is already validated to
+ 	 match (op0, op1) in some order above.  */
+       if (s.kind == LMK_MUL_HILO && s.op0)
+ 	mul_hilo_orient[s.op0 == op1]++;
+     }
+ 
+   if (mul_hilo_orient[0] + mul_hilo_orient[1] >= 2
+       && (mul_hilo_orient[0] == 0 || mul_hilo_orient[1] == 0))
+     return false;
+ 
+   *op0_out = op0;
+   *op1_out = op1;
+   return true;
+ }
+ 
+ /* Compare the (already-sorted) SUMMANDS multiset against ROW.sig.  */
+ 
+ static bool
+ long_mul_signature_matches (const vec<long_mul_summand> &summands,
+ 		   const long_mul_row &row)
+ {
+   if (row.count != summands.length ())
+     return false;
+   for (unsigned i = 0; i < row.count; i++)
+     if (summands[i].kind != row.sig[i].kind
+ 	|| summands[i].extract != row.sig[i].extract)
+       return false;
+   return true;
+ }
+ 
+ /* Extra check for the two-carries high-part row: the LMK_CARRY_LOW summand's
+    two operands (carry_a, carry_b) must be a (cross_shifted, mul_lolo) pair
+    consistent with the multiset's canonical (op0, op1).  */
+ 
+ static bool
+ long_mul_check_two_carries (const vec<long_mul_summand> &summands,
+ 			    gimple *)
+ {
+   tree op0, op1;
+   if (!long_mul_canonical_ops (summands, &op0, &op1))
+     return false;
+   unsigned int halfwidth = TYPE_PRECISION (TREE_TYPE (op0)) / 2;
+ 
+   const long_mul_summand *cl = long_mul_find_summand (summands, LMK_CARRY_LOW);
+   if (!cl)
+     return false;
+ 
+   /* The two carry_low operands must be (cross_shifted, mul_lolo) in either
+      order.  cross_shifted = LSHIFT_EXPR (mul_cross_sum, halfwidth).  */
+   tree cs = cl->carry_a, lolo = cl->carry_b;
+   tree inner;
+   unsigned HOST_WIDE_INT shift;
+   if (!long_mul_is_lshift_def (cs, &inner, &shift))
+     {
+       std::swap (cs, lolo);
+       if (!long_mul_is_lshift_def (cs, &inner, &shift))
+ 	return false;
+     }
+   if (shift != halfwidth)
+     return false;
+ 
+   tree scratch[LONG_MUL_MAX_CAPTURES];
+   if (!gimple_mul_cross_sum (inner, scratch, NULL))
+     return false;
+   for (int i = 0; i < 2; i++)
+     if (!long_mul_is_cross_half (scratch[i], op0, op1))
+       return false;
+   if (!gimple_mul_lolo (lolo, scratch, NULL)
+       || !long_mul_same_ops (scratch[0], scratch[1], op0, op1))
+     return false;
+ 
+   return true;
+ }
+ 
+ /* The lolo + cross_shifted shape is also the low half of a two-carry
+    long-multiply, where an unsigned overflow compare against one of
+    the PLUS operands is the low-carry term consumed by the matching
+    high-part fold.  Folding to mul_lo here destroys cross_shifted,
+    which both the compare and the high-part match still need; defer
+    so the high-part fold runs first.  After it does, the compare is
+    dead and the surviving lolo + cross_shifted is picked up by this
+    row in the next forwprop instance.  Returns false to defer.  */
+ 
+ static bool
+ long_mul_check_low_plus_defer (const vec<long_mul_summand> &, gimple *stmt)
+ {
+   /* The PHI entry passes its gphi as the candidate but commits only to
+      HIGH_PART rows, so a LOW_PART row never folds from there.  Guard the
+      gimple_assign accessors regardless, so this stays correct if a future
+      PLUS-shaped row reachable from the PHI path uses it.  */
+   if (!is_gimple_assign (stmt))
+     return false;
+ 
+   tree lhs = gimple_assign_lhs (stmt);
+   tree rhs1 = gimple_assign_rhs1 (stmt);
+   tree rhs2 = gimple_assign_rhs2 (stmt);
+ 
+   imm_use_iterator iter;
+   gimple *use_stmt;
+   FOR_EACH_IMM_USE_STMT (use_stmt, iter, lhs)
+     {
+       tree cmp_op1 = NULL_TREE, cmp_op2 = NULL_TREE;
+       enum tree_code use_code = ERROR_MARK;
+       if (is_gimple_assign (use_stmt))
+ 	{
+ 	  use_code = gimple_assign_rhs_code (use_stmt);
+ 	  cmp_op1 = gimple_assign_rhs1 (use_stmt);
+ 	  cmp_op2 = gimple_assign_rhs2 (use_stmt);
+ 	}
+       else if (gcond *cond = dyn_cast<gcond *> (use_stmt))
+ 	{
+ 	  use_code = gimple_cond_code (cond);
+ 	  cmp_op1 = gimple_cond_lhs (cond);
+ 	  cmp_op2 = gimple_cond_rhs (cond);
+ 	}
+       if (use_code == GT_EXPR || use_code == LT_EXPR
+ 	  || use_code == GE_EXPR || use_code == LE_EXPR)
+ 	{
+ 	  tree other = (cmp_op1 == lhs) ? cmp_op2
+ 		     : (cmp_op2 == lhs) ? cmp_op1 : NULL_TREE;
+ 	  if (other && (other == rhs1 || other == rhs2))
+ 	    return false;
+ 	}
+     }
+   return true;
+ }
+ 
+ /* Long-multiply variant table.  Each row enumerates the multiset of
+    (kind, extract) summands that compose one long-multiply form.  Rows
+    are sorted by long_mul_summand_compare, matching the input summands'
+    sort order, so a plain element-wise compare suffices.  Rows describe
+    unsigned schoolbook expansions on an even-width 2N-bit type split at
+    half-width N; EXTRA_CHECK carries invariants the (kind, extract)
+    signature cannot express.
+ 
+    The formula on each row uses xh, xl, yh, yl for the half-width pieces
+    of x and y, cross_sum for xh*yl + xl*yh, and hilo for either cross-half
+    product (consumers validate the operand shape).  */
+ 
+ static const long_mul_row long_mul_table[] = {
+   /* HIGH-PART folds.  */
+   /* xh*yh + (low_sum >> N) + ((hilo > low_sum) << N),
+      low_sum = cross_sum + (xl*yl >> N).  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 3,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_LOW_SUM, LMX_HI },
+       { LMK_CARRY_LOW_SUM, LMX_NONE } },
+     NULL },
+   /* xh*yh + (low_accum >> N) + (cross_sum >> N) + ((hilo > cross_sum) << N),
+      low_accum = (xl*yl >> N) + (cross_sum & mask).  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 4,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_CROSS_SUM, LMX_HI },
+       { LMK_LOW_ACCUM, LMX_HI },
+       { LMK_CARRY_CROSS_SUM, LMX_NONE } },
+     NULL },
+   /* xh*yh + (cross_sum >> N) + carry_low + ((hilo > cross_sum) << N),
+      carry_low = (xl*yl + (cross_sum << N)) < (cross_sum << N).  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 4,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_CROSS_SUM, LMX_HI },
+       { LMK_CARRY_LOW, LMX_NONE },
+       { LMK_CARRY_CROSS_SUM, LMX_NONE } },
+     long_mul_check_two_carries },
+   /* xh*yh + (hilo >> N) + (ladder_sum1 >> N),
+      ladder_sum1 = (hilo & mask) + hilo' + (xl*yl >> N),
+      hilo, hilo' the two cross-half products.  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 3,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_MUL_HILO, LMX_HI },
+       { LMK_LADDER_SUM1, LMX_HI } },
+     NULL },
+   /* xh*yh + (ladder_sum2 >> N) + (ladder_part_sum >> N),
+      ladder_part_sum = (xl*yl >> N) + hilo,
+      ladder_sum2 = (ladder_part_sum & mask) + hilo'.  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 3,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_LADDER_SUM2, LMX_HI },
+       { LMK_LADDER_PART_SUM, LMX_HI } },
+     NULL },
+   /* xh*yh + (hilo >> N) + (hilo' >> N) + (ladder_sum3 >> N),
+      ladder_sum3 = (hilo & mask) + (hilo' & mask) + (xl*yl >> N).  */
+   { long_mul_row::HIGH_PART, PLUS_EXPR, 4,
+     { { LMK_MUL_HIHI, LMX_NONE },
+       { LMK_MUL_HILO, LMX_HI },
+       { LMK_MUL_HILO, LMX_HI },
+       { LMK_LADDER_SUM3, LMX_HI } },
+     NULL },
+   /* LOW-PART folds.  Recover the lower 2N bits from xl*yl plus a
+      shifted cross-half term.  */
+   /* xl*yl + (cross_sum << N).  */
+   { long_mul_row::LOW_PART, PLUS_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_NONE },
+       { LMK_CROSS_SUM, LMX_SHL_N } },
+     long_mul_check_low_plus_defer },
+   /* (xl*yl & mask) | (low_accum << N),
+      low_accum = (xl*yl >> N) + (cross_sum & mask).  */
+   { long_mul_row::LOW_PART, BIT_IOR_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_LO },
+       { LMK_LOW_ACCUM, LMX_SHL_N } },
+     NULL },
+   /* (xl*yl & mask) | (low_sum << N),
+      low_sum = cross_sum + (xl*yl >> N).  */
+   { long_mul_row::LOW_PART, BIT_IOR_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_LO },
+       { LMK_LOW_SUM, LMX_SHL_N } },
+     NULL },
+   /* (xl*yl & mask) | (ladder_sum1 << N),
+      ladder_sum1 as in the high ladder row above.  */
+   { long_mul_row::LOW_PART, BIT_IOR_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_LO },
+       { LMK_LADDER_SUM1, LMX_SHL_N } },
+     NULL },
+   /* (xl*yl & mask) | (ladder_sum2 << N),
+      ladder_sum2 as in the high ladder row above.  */
+   { long_mul_row::LOW_PART, BIT_IOR_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_LO },
+       { LMK_LADDER_SUM2, LMX_SHL_N } },
+     NULL },
+   /* (xl*yl & mask) | (ladder_sum3 << N),
+      ladder_sum3 as in the high ladder-long row above.  */
+   { long_mul_row::LOW_PART, BIT_IOR_EXPR, 2,
+     { { LMK_MUL_LOLO, LMX_LO },
+       { LMK_LADDER_SUM3, LMX_SHL_N } },
+     NULL },
+ };
+ 
+ /* If a multi-used inner addition (sharing the chain's outer code) blocked
+    linearization of a long-mul candidate, emit a dump-file hint pointing
+    at it.  */
+ 
+ static void
+ long_mul_hint_shared_intermediate (gimple *shared_def)
+ {
+   if (!shared_def || !dump_file || !(dump_flags & TDF_DETAILS))
+     return;
+   fprintf (dump_file, "long-mul fold rejected: shared intermediate at ");
+   print_gimple_stmt (dump_file, shared_def, 0, TDF_SLIM);
+ }
+ 
+ /* Search long_mul_table for a row whose multiset matches SUMMANDS for
+    outer kind OUTER on a result of type LHS_TYPE.  CANDIDATE_STMT is
+    passed to per-row extra_check predicates.  On a hit, returns the
+    matching row and writes the half-width operands via OUT_OP0/OUT_OP1.
+    No IR mutation.  */
+ 
+ static const long_mul_row *
+ long_mul_classify_match (const vec<long_mul_summand> &summands,
+ 			 tree lhs_type, tree_code outer,
+ 			 gimple *candidate_stmt,
+ 			 tree *out_op0, tree *out_op1)
+ {
+   /* HIGH_PART rows emit a 2N-bit multiply that pass_optimize_widening_mul
+      consumes -- either via WIDEN_MULT_EXPR / MULT_HIGHPART conversion when
+      the target has a native 2N multiply, or via lower_long_mul_high_chain
+      when it does not.  LOW_PART rows emit a plain MULT_EXPR.  Emission
+      needs a 2N mode to exist in the mode table AND the widening_mul pass
+      to be active: without the pass, the emit could reach RTL expand as an
+      unexpandable 2N multiply (e.g. OImode).  BITINT_TYPE is
+      refused -- the long_mul_high_chain atom excludes it.  */
+   scalar_int_mode mode, wide_mode;
+   bool can_emit_high
+     = optimize_widening_mul_active_p ()
+       && TREE_CODE (lhs_type) != BITINT_TYPE
+       && is_a <scalar_int_mode> (TYPE_MODE (lhs_type), &mode)
+       && GET_MODE_2XWIDER_MODE (mode).exists (&wide_mode);
+ 
+   for (const long_mul_row &row : long_mul_table)
+     {
+       if (row.outer != outer
+ 	  || (row.part == long_mul_row::HIGH_PART && !can_emit_high)
+ 	  || !long_mul_signature_matches (summands, row))
+ 	continue;
+ 
+       tree op0, op1;
+       if (!long_mul_check_consistency (summands, &op0, &op1))
+ 	continue;
+ 
+       /* Do not emit the wide chain when an operand is subject to
+ 	 abnormal coalescing: the widening_mul-side consumers refuse
+ 	 such operands (see convert_mult_to_widen), which would leave
+ 	 the chain without a consumer.  */
+       if (row.part == long_mul_row::HIGH_PART
+ 	  && ((TREE_CODE (op0) == SSA_NAME
+ 	       && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op0))
+ 	      || (TREE_CODE (op1) == SSA_NAME
+ 		  && SSA_NAME_OCCURS_IN_ABNORMAL_PHI (op1))))
+ 	continue;
+ 
+       if (row.extra_check && !row.extra_check (summands, candidate_stmt))
+ 	continue;
+ 
+       *out_op0 = op0;
+       *out_op1 = op1;
+       return &row;
+     }
+   return NULL;
+ }
+ 
+ /* Walk STMT's outer chain (kind OUTER), classify each leaf as a
+    long-multiply summand, optionally add the already-classified EXTRA,
+    and look the multiset up in long_mul_table for a result of type
+    LHS_TYPE.  CANDIDATE is passed to per-row extra_check predicates.
+ 
+    If EXTRAS_OUT is non-NULL, leaves matching no summand are set aside
+    there instead of failing the match, and the caller must re-apply
+    them on top of the folded multiply.  A leaf that does match is
+    always consumed: if that makes the signature miss every row the
+    match fails, rather than retrying with the leaf demoted to an extra
+    (subset search would be exponential).
+ 
+    Returns the matched row and the half-width operands via
+    OUT_OP0/OUT_OP1, or NULL on a miss.  No IR mutation.  */
+ 
+ static const long_mul_row *
+ long_mul_classify_chain (gimple *stmt, tree_code outer, tree lhs_type,
+ 			 gimple *candidate, const long_mul_summand *extra,
+ 			 vec<tree> *extras_out,
+ 			 tree *out_op0, tree *out_op1)
+ {
+   auto_vec<tree, LONG_MUL_MAX_SUMMANDS + LONG_MUL_MAX_EXTRAS> leaves;
+   gimple *shared_def = NULL;
+   if (!long_mul_linearize_chain (stmt, outer, leaves, &shared_def))
+     return NULL;
+ 
+   auto_vec<long_mul_summand,
+ 	   LONG_MUL_MAX_SUMMANDS + LONG_MUL_MAX_EXTRAS + 1> summands;
+   for (tree leaf : leaves)
+     {
+       if (long_mul_summand s{leaf})
+ 	{
+ 	  gcc_checking_assert (s.kind != LMK_INVALID);
+ 	  summands.quick_push (s);
+ 	}
+       else if (extras_out && extras_out->length () < LONG_MUL_MAX_EXTRAS)
+ 	extras_out->safe_push (leaf);
+       else
+ 	{
+ 	  long_mul_hint_shared_intermediate (shared_def);
+ 	  return NULL;
+ 	}
+     }
+   if (extra)
+     {
+       gcc_checking_assert (extra->kind != LMK_INVALID);
+       summands.quick_push (*extra);
+     }
+   if (summands.length () < 2
+       || summands.length () > LONG_MUL_MAX_SUMMANDS)
+     return NULL;
+   summands.qsort (long_mul_summand_compare);
+ 
+   const long_mul_row *row
+     = long_mul_classify_match (summands, lhs_type, outer, candidate,
+ 			       out_op0, out_op1);
+   if (!row)
+     long_mul_hint_shared_intermediate (shared_def);
+   return row;
+ }
+ 
+ /* Top-level entry for long-multiply folding.  Walks STMT's outer
+    addition or BIT_IOR chain, classifies the summands, and dispatches
+    to create_mul_high_seq / create_mul_low_seq if the multiset matches
+    a known long-multiply form.  Returns true on success.  */
+ 
+ static bool
+ match_long_mul (gassign *stmt)
+ {
+   tree_code outer = gimple_assign_rhs_code (stmt);
+   if (outer != PLUS_EXPR && outer != BIT_IOR_EXPR)
+     return false;
+ 
+   /* Skip non-candidate adds (signed, pointer, odd-width) before walking the
+      chain.  No legitimate long-mul leaf has a type the atoms would reject.
+      This just avoids the linearize/classify work on every other PLUS/IOR.  */
+   tree lhs_type = TREE_TYPE (gimple_assign_lhs (stmt));
+   if (!INTEGRAL_TYPE_P (lhs_type)
+       || !TYPE_UNSIGNED (lhs_type)
+       || TYPE_PRECISION (lhs_type) % 2 != 0)
+     return false;
+ 
+   /* Only start at the end of a chain: a consumer with the same code
+      linearizes through this statement anyway, so starting here is
+      redundant.  A consumer in another block does not count -- folding
+      at the later use could sink a loop-invariant multiply into a
+      loop.  */
+   use_operand_p use_p;
+   gimple *use_stmt;
+   if (single_imm_use (gimple_assign_lhs (stmt), &use_p, &use_stmt)
+       && is_gimple_assign (use_stmt)
+       && gimple_assign_rhs_code (use_stmt) == outer
+       && gimple_bb (use_stmt) == gimple_bb (stmt))
+     return false;
+ 
+   auto_vec<tree, LONG_MUL_MAX_EXTRAS> extras;
+   tree op0, op1;
+   const long_mul_row *row
+     = long_mul_classify_chain (stmt, outer, lhs_type, stmt, NULL, &extras,
+ 			       &op0, &op1);
+   if (!row)
+     return false;
+ 
+   if (row->part == long_mul_row::HIGH_PART)
+     {
+       create_mul_high_seq (op0, op1, stmt, extras, outer);
+       if (dump_file && (dump_flags & TDF_DETAILS))
+ 	fprintf (dump_file, "Long multiplication high part folded.\n");
+       return true;
+     }
+   create_mul_low_seq (op0, op1, stmt, extras, outer);
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "Long multiplication low part folded.\n");
+   return true;
+ }
+ 
+ /* PHI-driven entry for long-multiply folding.  When PHI's value
+    flattens to base + (carry << N), probe sum to classify the carry
+    kind, linearize base for the remaining high-part summands, and run
+    the long-multiply table.  On a hit, emit a 2N-bit multiply at the
+    top of the join block with PHI_RES as its LHS and remove the PHI.
+    Otherwise leave the IR untouched.  Only HIGH_PART rows are
+    reachable.  LOW_PART rows are BIT_IOR-shaped and never produce a
+    carry PHI.  */
+ 
+ static bool
+ match_long_mul_phi (gphi *phi)
+ {
+   tree phi_res = gimple_phi_result (phi);
+   tree lhs_type = TREE_TYPE (phi_res);
+   if (!INTEGRAL_TYPE_P (lhs_type) || !TYPE_UNSIGNED (lhs_type)
+       || TYPE_PRECISION (lhs_type) % 2 != 0)
+     return false;
+ 
+   tree cca_ops[4];
+   if (!gimple_cond_carry_add (phi_res, cca_ops, NULL))
+     return false;
+   tree cmp_lhs = cca_ops[0];
+   tree sum = cca_ops[1];
+   tree base = cca_ops[2];
+ 
+   /* Classify sum and populate the carry summand directly.  Most
+      specific first, mirroring long_mul_classify_carry's order.  */
+   long_mul_summand carry{};
+   tree sum_ops[LONG_MUL_MAX_CAPTURES];
+   unsigned HOST_WIDE_INT shift_amt
+     = wi::exact_log2 (wi::to_wide (cca_ops[3]));
+   unsigned HOST_WIDE_INT halfwidth = TYPE_PRECISION (lhs_type) / 2;
+   carry.shift = shift_amt;
+ 
+   if (shift_amt == halfwidth
+       && gimple_mul_low_sum (sum, sum_ops, NULL))
+     {
+       /* mul_carry_low_sum's flat form ties the outer lshift amount to
+ 	 the inner mul_hi's INTEGER_CST@0 via match.pd capture re-use;
+ 	 the PHI form has no such tie, so gate on shift_amt explicitly.  */
+       carry.kind = LMK_CARRY_LOW_SUM;
+       carry.op0 = sum_ops[0];
+       carry.op1 = sum_ops[1];
+       carry.hilo[0] = cmp_lhs;
+       carry.hilo[1] = sum_ops[2];
+       carry.hilo[2] = sum_ops[3];
+     }
+   else if (shift_amt == halfwidth
+ 	   && gimple_mul_cross_sum (sum, sum_ops, NULL))
+     {
+       /* mul_cross_sum is just (plus:c @0 @1) with no half-width
+ 	 constraint.  Gate here to mirror mul_carry_cross_sum;
+ 	 a mismatch falls through to the LMK_CARRY_LOW branch.  */
+       carry.kind = LMK_CARRY_CROSS_SUM;
+       carry.hilo[0] = cmp_lhs;
+       carry.hilo[1] = sum_ops[0];
+       carry.hilo[2] = sum_ops[1];
+     }
+   else if (shift_amt == 0 && TREE_CODE (sum) == SSA_NAME)
+     {
+       gimple *def = SSA_NAME_DEF_STMT (sum);
+       if (!is_gimple_assign (def)
+ 	  || gimple_assign_rhs_code (def) != PLUS_EXPR)
+ 	return false;
+       tree p1 = gimple_assign_rhs1 (def);
+       tree p2 = gimple_assign_rhs2 (def);
+       if (p1 != cmp_lhs && p2 != cmp_lhs)
+ 	return false;
+       carry.kind = LMK_CARRY_LOW;
+       carry.carry_a = cmp_lhs;
+       carry.carry_b = p1 == cmp_lhs ? p2 : p1;
+     }
+   else
+     return false;
+ 
+   /* Linearize base, the rest of the high-part chain.  */
+   if (TREE_CODE (base) != SSA_NAME)
+     return false;
+   gimple *base_def = SSA_NAME_DEF_STMT (base);
+   if (!is_gimple_assign (base_def)
+       || gimple_assign_rhs_code (base_def) != PLUS_EXPR)
+     return false;
+ 
+   tree op0, op1;
+   const long_mul_row *row
+     = long_mul_classify_chain (base_def, PLUS_EXPR, lhs_type, phi, &carry,
+ 			       NULL, &op0, &op1);
+   if (!row || row->part != long_mul_row::HIGH_PART)
+     return false;
+ 
+   gimple_seq seq = NULL;
+   build_mul_high_seq (op0, op1, phi_res, gimple_location (phi), &seq);
+   gimple_stmt_iterator gsi = gsi_after_labels (gimple_bb (phi));
+   gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
+   gimple_stmt_iterator psi = gsi_for_stmt (phi);
+   remove_phi_node (&psi, false);
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file,
+ 	     "Long multiplication high part folded (carry PHI).\n");
+   return true;
+ }
  
  /* Determine whether applying the 2 permutations (mask1 then mask2)
     gives back one of the input.  */
*************** simplify_vector_constructor (gimple_stmt
*** 4363,4368 ****
--- 5552,5558 ----
        /* For a real orig[1] (no splat, constant etc.) we might need to
  	 nop-convert it.  Do so here.  */
        if (orig[1] && orig[1] != error_mark_node
+ 	  && !converted_orig1
  	  && !useless_type_conversion_p (perm_type, TREE_TYPE (orig[1]))
  	  && tree_nop_conversion_p (TREE_TYPE (perm_type),
  				    TREE_TYPE (TREE_TYPE (orig[1]))))
*************** pass_forwprop::execute (function *fun)
*** 5389,5402 ****
  	    }
  	}
  
!       /* Record degenerate PHIs in the lattice.  */
!       for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si);
! 	   gsi_next (&si))
  	{
  	  gphi *phi = si.phi ();
  	  tree res = gimple_phi_result (phi);
  	  if (virtual_operand_p (res))
  	    continue;
  
  	  tree first = NULL_TREE;
  	  bool all_same = true;
--- 6579,6597 ----
  	    }
  	}
  
!       /* Fold PHI-form long-multiply carries and record degenerate
! 	 PHIs in the lattice.  Iterator advanced up front so a folded
! 	 PHI can be removed in-flight; a long-mul carry PHI is never
! 	 degenerate, so the two cases are disjoint.  */
!       for (gphi_iterator si = gsi_start_phis (bb); !gsi_end_p (si);)
  	{
  	  gphi *phi = si.phi ();
+ 	  gsi_next (&si);
  	  tree res = gimple_phi_result (phi);
  	  if (virtual_operand_p (res))
  	    continue;
+ 	  if (match_long_mul_phi (phi))
+ 	    continue;
  
  	  tree first = NULL_TREE;
  	  bool all_same = true;
*************** pass_forwprop::execute (function *fun)
*** 5862,5872 ****
  		      }
  		    else if (TREE_CODE_CLASS (code) == tcc_comparison)
  		      changed |= forward_propagate_into_comparison (&gsi);
! 		    else if ((code == PLUS_EXPR
! 			      || code == BIT_IOR_EXPR
! 			      || code == BIT_XOR_EXPR)
! 			     && simplify_rotate (&gsi))
! 		      changed = true;
  		    else if (code == VEC_PERM_EXPR)
  		      changed |= simplify_permutation (&gsi);
  		    else if (code == CONSTRUCTOR
--- 7057,7071 ----
  		      }
  		    else if (TREE_CODE_CLASS (code) == tcc_comparison)
  		      changed |= forward_propagate_into_comparison (&gsi);
! 		    else if ((code == PLUS_EXPR || code == BIT_IOR_EXPR))
! 		      {
! 			bool folded = match_long_mul (as_a <gassign *> (stmt));
! 			if (!folded)
! 			  folded = simplify_rotate (&gsi);
! 			changed |= folded;
! 		      }
! 		    else if (code == BIT_XOR_EXPR)
! 		      changed |= simplify_rotate (&gsi);
  		    else if (code == VEC_PERM_EXPR)
  		      changed |= simplify_permutation (&gsi);
  		    else if (code == CONSTRUCTOR
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-loop-im.cc gcc-17-20260823/gcc/tree-ssa-loop-im.cc
*** gcc-17-20260816/gcc/tree-ssa-loop-im.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-loop-im.cc	Sun Aug 23 22:32:19 2026
*************** movement_possibility_1 (gimple *stmt)
*** 425,431 ****
  	   || code == RROTATE_EXPR)
  	  && (TREE_CODE (gimple_assign_rhs2 (stmt)) != INTEGER_CST
  	      /* We cannot use ranges at 'stmt' here.  */
! 	      || wi::ltu_p (wi::to_wide (gimple_assign_rhs2 (stmt)),
  			    element_precision (type))))
  	ret = MOVE_PRESERVE_EXECUTION;
      }
--- 425,431 ----
  	   || code == RROTATE_EXPR)
  	  && (TREE_CODE (gimple_assign_rhs2 (stmt)) != INTEGER_CST
  	      /* We cannot use ranges at 'stmt' here.  */
! 	      || wi::geu_p (wi::to_wide (gimple_assign_rhs2 (stmt)),
  			    element_precision (type))))
  	ret = MOVE_PRESERVE_EXECUTION;
      }
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-loop-ivopts.cc gcc-17-20260823/gcc/tree-ssa-loop-ivopts.cc
*** gcc-17-20260816/gcc/tree-ssa-loop-ivopts.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-loop-ivopts.cc	Sun Aug 23 22:32:19 2026
*************** create_new_iv (struct ivopts_data *data,
*** 7257,7266 ****
        name_info (data, cand->var_before)->preserve_biv = true;
        name_info (data, cand->var_after)->preserve_biv = true;
  
!       /* Rewrite the increment so that it uses var_before directly.  */
        use = find_interesting_uses_op (data, cand->var_after);
!       group = data->vgroups[use->group_id];
!       group->selected = cand;
        return;
      }
  
--- 7257,7271 ----
        name_info (data, cand->var_before)->preserve_biv = true;
        name_info (data, cand->var_after)->preserve_biv = true;
  
!       /* Rewrite the increment so that it uses var_before directly.  Missed
! 	 optimization can result in a use IV with zero step, avoid
! 	 crashing in that case.  */
        use = find_interesting_uses_op (data, cand->var_after);
!       if (use)
! 	{
! 	  group = data->vgroups[use->group_id];
! 	  group->selected = cand;
! 	}
        return;
      }
  
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-math-opts.cc gcc-17-20260823/gcc/tree-ssa-math-opts.cc
*** gcc-17-20260816/gcc/tree-ssa-math-opts.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-math-opts.cc	Sun Aug 23 22:32:19 2026
*************** optimize_spaceship (gcond *stmt)
*** 6529,6534 ****
--- 6529,7217 ----
  }
  
  
+ /* Long-multiply inverse-lowering helper.
+ 
+    The forwprop long-multiply recognizer canonicalizes a hand-written
+    longhand high-part multiply into a cast+mult+shift+cast chain
+    `(N) ((2N) a * (2N) b) >> N'.  When the target lacks an expansion
+    path for the wide form, `lower_long_mul_high_chain' resynthesizes
+    the longhand at narrow precision via `build_long_mul_partials'.  */
+ 
+ /* Test whether the target supports an (HALF)-by-(HALF)->NARROW unsigned
+    widening multiply.  Returns true on success, with the half-width
+    scalar int mode placed in *HALF_MODE.  */
+ 
+ static bool
+ can_widen_to_narrow_p (scalar_int_mode narrow_mode, unsigned int half_width,
+ 		       scalar_int_mode *half_mode)
+ {
+   if (!int_mode_for_size (half_width, 0).exists (half_mode))
+     return false;
+   return convert_optab_handler (umul_widen_optab, narrow_mode, *half_mode)
+ 	 != CODE_FOR_nothing;
+ }
+ 
+ /* Append to *SEQ the operand split and partial products for an unsigned
+    long multiply of OP1 by OP2 at the precision of TREE_TYPE (OP1).
+    HALF_TYPE is the (N/2)-bit unsigned type; HALF_AMT is the integer-typed
+    shift constant equal to N/2.
+ 
+    Outputs the four partial products via *LOLO, *HILO, *LOHI, *HIHI.
+ 
+    USE_WIDEN selects the partial-product form:
+      true  - cast halves to HALF_TYPE and use WIDEN_MULT_EXPR (needs
+ 	     an (N/2)-by-(N/2)->N widening multiply optab).
+      false - mask/shift halves within the N-bit accumulator and use
+ 	     plain MULT_EXPR; the halves fit in N/2 bits so the N-bit
+ 	     low product is exact.  */
+ 
+ static void
+ build_long_mul_partials (gimple_seq *seq, location_t loc, tree op1, tree op2,
+ 			 tree half_type, tree half_amt,
+ 			 tree *lolo, tree *hilo, tree *lohi, tree *hihi,
+ 			 bool use_widen)
+ {
+   tree acc_type = TREE_TYPE (op1);
+   tree op1_hi = gimple_build (seq, loc, RSHIFT_EXPR, acc_type, op1, half_amt);
+   tree op2_hi = gimple_build (seq, loc, RSHIFT_EXPR, acc_type, op2, half_amt);
+   tree op1_lo, op2_lo;
+   tree_code mul_code;
+ 
+   if (use_widen)
+     {
+       op1_lo = gimple_build (seq, loc, NOP_EXPR, half_type, op1);
+       op2_lo = gimple_build (seq, loc, NOP_EXPR, half_type, op2);
+       op1_hi = gimple_build (seq, loc, NOP_EXPR, half_type, op1_hi);
+       op2_hi = gimple_build (seq, loc, NOP_EXPR, half_type, op2_hi);
+       mul_code = WIDEN_MULT_EXPR;
+     }
+   else
+     {
+       tree mask = wide_int_to_tree (acc_type,
+ 				    wi::mask (TYPE_PRECISION (half_type), false,
+ 					      TYPE_PRECISION (acc_type)));
+       op1_lo = gimple_build (seq, loc, BIT_AND_EXPR, acc_type, op1, mask);
+       op2_lo = gimple_build (seq, loc, BIT_AND_EXPR, acc_type, op2, mask);
+       mul_code = MULT_EXPR;
+     }
+ 
+   *lolo = gimple_build (seq, loc, mul_code, acc_type, op1_lo, op2_lo);
+   *hilo = gimple_build (seq, loc, mul_code, acc_type, op1_hi, op2_lo);
+   *lohi = gimple_build (seq, loc, mul_code, acc_type, op1_lo, op2_hi);
+   *hihi = gimple_build (seq, loc, mul_code, acc_type, op1_hi, op2_hi);
+ }
+ 
+ /* Emit into *SEQ the high N bits of the unsigned product A * B, where A and B
+    are NARROW_TYPE (N-bit) values, as a longhand over (N/2)-bit partials.
+    Returns the high-part SSA.  */
+ 
+ static tree
+ emit_long_mul_highpart (gimple_seq *seq, location_t loc, tree a, tree b,
+ 			tree narrow_type)
+ {
+   scalar_int_mode narrow_mode
+     = as_a <scalar_int_mode> (TYPE_MODE (narrow_type));
+   unsigned int half_width = GET_MODE_PRECISION (narrow_mode) / 2;
+   /* Prefer (N/2)-by-(N/2)->N widening partials; fall back to plain MULT_EXPR
+      when the target lacks the widen optab.  See build_long_mul_partials.  */
+   scalar_int_mode half_mode;
+   bool use_widen = can_widen_to_narrow_p (narrow_mode, half_width, &half_mode);
+   tree half_type = build_nonstandard_integer_type (half_width, 1);
+   tree half_amt = build_int_cst (integer_type_node, half_width);
+   tree half_mask = wide_int_to_tree (narrow_type,
+ 				     wi::mask (half_width, false,
+ 					       TYPE_PRECISION (narrow_type)));
+ 
+   tree lolo, hilo, lohi, hihi;
+   build_long_mul_partials (seq, loc, a, b, half_type, half_amt,
+ 			   &lolo, &hilo, &lohi, &hihi, use_widen);
+   tree cross_sum = gimple_build (seq, loc, PLUS_EXPR, narrow_type, hilo, lohi);
+   tree cross_lt = gimple_build (seq, loc, LT_EXPR, boolean_type_node,
+ 				cross_sum, hilo);
+   tree cross_lt_n = gimple_build (seq, loc, NOP_EXPR, narrow_type, cross_lt);
+   tree cross_carry = gimple_build (seq, loc, LSHIFT_EXPR, narrow_type,
+ 				   cross_lt_n, half_amt);
+   tree lolo_hi = gimple_build (seq, loc, RSHIFT_EXPR, narrow_type,
+ 			       lolo, half_amt);
+   tree cross_lo = gimple_build (seq, loc, BIT_AND_EXPR, narrow_type,
+ 				cross_sum, half_mask);
+   tree low_accum = gimple_build (seq, loc, PLUS_EXPR, narrow_type,
+ 				 lolo_hi, cross_lo);
+   tree low_accum_hi = gimple_build (seq, loc, RSHIFT_EXPR, narrow_type,
+ 				    low_accum, half_amt);
+   tree cross_hi = gimple_build (seq, loc, RSHIFT_EXPR, narrow_type,
+ 				cross_sum, half_amt);
+   tree t1 = gimple_build (seq, loc, PLUS_EXPR, narrow_type, hihi, cross_hi);
+   tree t2 = gimple_build (seq, loc, PLUS_EXPR, narrow_type, t1, low_accum_hi);
+   return gimple_build (seq, loc, PLUS_EXPR, narrow_type, t2, cross_carry);
+ }
+ 
+ /* Emit into *SEQ the high N bits (NARROW_TYPE) of the unsigned product of two
+    2N-bit values given as N-bit halves, x = L1 + H1*2^N and y = L2 + H2*2^N:
+    the high half of x*y is the high N bits of L1*L2, plus H1*L2 and L1*H2, all
+    mod 2^N.  */
+ 
+ static tree
+ combine_long_mul_halves (gimple_seq *seq, location_t loc, tree l1, tree h1,
+ 			 tree l2, tree h2, tree narrow_type)
+ {
+   tree hh = emit_long_mul_highpart (seq, loc, l1, l2, narrow_type);
+   tree c1 = gimple_build (seq, loc, MULT_EXPR, narrow_type, h1, l2);
+   tree c2 = gimple_build (seq, loc, MULT_EXPR, narrow_type, l1, h2);
+   tree s = gimple_build (seq, loc, PLUS_EXPR, narrow_type, hh, c1);
+   return gimple_build (seq, loc, PLUS_EXPR, narrow_type, s, c2);
+ }
+ 
+ /* True when OP fits NARROW_PREC bits as an unsigned value.  Looks
+    through widening casts and PHIs, falling back to `tree_nonzero_bits'
+    otherwise.  PHI_SEEN guards against cycles.  */
+ 
+ static bool
+ long_mul_op_fits_p (tree op, unsigned narrow_prec, bitmap phi_seen)
+ {
+   if (!TYPE_UNSIGNED (TREE_TYPE (op)))
+     return false;
+   if (TYPE_PRECISION (TREE_TYPE (op)) <= narrow_prec)
+     return true;
+   if (TREE_CODE (op) == SSA_NAME)
+     {
+       gimple *def = SSA_NAME_DEF_STMT (op);
+       if (is_gimple_assign (def)
+ 	  && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def)))
+ 	return long_mul_op_fits_p (gimple_assign_rhs1 (def), narrow_prec,
+ 				   phi_seen);
+       if (gphi *phi = dyn_cast <gphi *> (def))
+ 	if (bitmap_set_bit (phi_seen, SSA_NAME_VERSION (op)))
+ 	  {
+ 	    for (unsigned i = 0; i < gimple_phi_num_args (phi); ++i)
+ 	      if (!long_mul_op_fits_p (gimple_phi_arg_def (phi, i),
+ 				       narrow_prec, phi_seen))
+ 		return false;
+ 	    return true;
+ 	  }
+     }
+   return wi::min_precision (tree_nonzero_bits (op), UNSIGNED) <= narrow_prec;
+ }
+ 
+ static bool long_mul_split_operand (gimple_seq *, location_t, tree, tree,
+ 				    tree *, tree *);
+ 
+ struct long_mul_halves
+ {
+   tree lo;
+   tree hi;
+ };
+ 
+ /* Halves recorded for one run of the pass, keyed on the PHI they came from.
+    Several chains can reach one operand PHI, and each that splits it again
+    leaves another redundant pair of half PHIs behind.  */
+ 
+ static hash_map<tree, long_mul_halves> *long_mul_phi_halves;
+ 
+ struct long_mul_arg_split
+ {
+   gimple_seq seq;
+   tree lo;
+   tree hi;
+ };
+ 
+ /* Split the 2N-bit result of PHI into N-bit halves *LO and *HI, by splitting
+    each argument and merging the halves with two new PHIs.  A split goes at
+    the end of its argument's incoming block, where the argument is available,
+    rather than on the edge, which could split a critical edge while the
+    dominator walk is still running.  Returns false, having changed nothing,
+    when an argument cannot be split.  A split that succeeds stands even if
+    the caller then gives up.  */
+ 
+ static bool
+ long_mul_split_phi (gphi *phi, tree narrow_type, tree *lo, tree *hi)
+ {
+   tree res = gimple_phi_result (phi);
+   if (long_mul_halves *prev = long_mul_phi_halves->get (res))
+     {
+       /* Every operand reaching a split has the 2N type, so the width is
+ 	 fixed by the PHI's own type.  */
+       gcc_checking_assert (types_compatible_p (TREE_TYPE (prev->lo),
+ 					       narrow_type));
+       *lo = prev->lo;
+       *hi = prev->hi;
+       return true;
+     }
+ 
+   unsigned int n = gimple_phi_num_args (phi);
+   location_t loc = gimple_location (phi);
+   basic_block bb = gimple_bb (phi);
+   auto_vec<long_mul_arg_split, 4> args;
+ 
+   for (unsigned int i = 0; i < n; i++)
+     {
+       edge e = gimple_phi_arg_edge (phi, i);
+       /* A back edge could lead back to PHI and recurse forever.  The entry
+ 	 block cannot hold a split.  */
+       if (dominated_by_p (CDI_DOMINATORS, e->src, bb)
+ 	  || e->src == ENTRY_BLOCK_PTR_FOR_FN (cfun))
+ 	return false;
+ 
+       long_mul_arg_split arg = {};
+       if (!long_mul_split_operand (&arg.seq, loc, gimple_phi_arg_def (phi, i),
+ 				   narrow_type, &arg.lo, &arg.hi))
+ 	return false;
+ 
+       args.safe_push (arg);
+     }
+ 
+   /* Every argument split, so the rewrite can be committed.  */
+   gphi *lo_phi = create_phi_node (make_ssa_name (narrow_type), bb);
+   gphi *hi_phi = create_phi_node (make_ssa_name (narrow_type), bb);
+   for (unsigned int i = 0; i < n; i++)
+     {
+       edge e = gimple_phi_arg_edge (phi, i);
+       if (args[i].seq)
+ 	{
+ 	  gimple_stmt_iterator gsi = gsi_last_bb (e->src);
+ 	  if (!gsi_end_p (gsi) && stmt_ends_bb_p (gsi_stmt (gsi)))
+ 	    gsi_insert_seq_before (&gsi, args[i].seq, GSI_SAME_STMT);
+ 	  else
+ 	    gsi_insert_seq_after (&gsi, args[i].seq, GSI_CONTINUE_LINKING);
+ 	}
+       add_phi_arg (lo_phi, args[i].lo, e, UNKNOWN_LOCATION);
+       add_phi_arg (hi_phi, args[i].hi, e, UNKNOWN_LOCATION);
+     }
+   *lo = gimple_phi_result (lo_phi);
+   *hi = gimple_phi_result (hi_phi);
+   long_mul_phi_halves->put (res, { *lo, *hi });
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "Split long-multiply operand PHI.\n");
+   return true;
+ }
+ 
+ /* Split the 2N-bit unsigned value OP into its low and high N bits (*LO and
+    *HI, both NARROW_TYPE) using only N-bit operations, as the target has no 2N
+    multiply or shift.  A 2N product recurses on its operands, its high half
+    coming from combine_long_mul_halves.  A value shifted down by N recurses on
+    the shifted value and takes its high half, rather than reading the 2N shift.
+    A widening cast's low half is the truncated source and its high half is what
+    the cast extended with, zero or the source's replicated sign bit.  A value
+    that provably fits N bits has a zero high half.  A PHI is split through its
+    arguments as a last resort.  Returns false otherwise.  */
+ 
+ static bool
+ long_mul_split_operand (gimple_seq *seq, location_t loc, tree op,
+ 			tree narrow_type, tree *lo, tree *hi)
+ {
+   unsigned int narrow_prec = TYPE_PRECISION (narrow_type);
+   if (TREE_CODE (op) == SSA_NAME)
+     {
+       gimple *def = SSA_NAME_DEF_STMT (op);
+       if (is_gimple_assign (def) && gimple_assign_rhs_code (def) == MULT_EXPR)
+ 	{
+ 	  tree a_lo, a_hi, b_lo, b_hi;
+ 	  if (!long_mul_split_operand (seq, loc, gimple_assign_rhs1 (def),
+ 				       narrow_type, &a_lo, &a_hi)
+ 	      || !long_mul_split_operand (seq, loc, gimple_assign_rhs2 (def),
+ 					  narrow_type, &b_lo, &b_hi))
+ 	    return false;
+ 	  *lo = gimple_build (seq, loc, MULT_EXPR, narrow_type, a_lo, b_lo);
+ 	  *hi = combine_long_mul_halves (seq, loc, a_lo, a_hi, b_lo, b_hi,
+ 					 narrow_type);
+ 	  return true;
+ 	}
+       /* A 2N value shifted down by N is its own high half: split the source
+ 	 and use that half.  Reading the shift instead leaves the 2N source
+ 	 live, and the target cannot expand it.  This has to come before the
+ 	 widening-cast case below, which would take such a value as it
+ 	 stands.  */
+       if (is_gimple_assign (def)
+ 	  && gimple_assign_rhs_code (def) == RSHIFT_EXPR
+ 	  && tree_fits_uhwi_p (gimple_assign_rhs2 (def))
+ 	  && tree_to_uhwi (gimple_assign_rhs2 (def)) == narrow_prec)
+ 	{
+ 	  tree src_lo, src_hi;
+ 	  if (!long_mul_split_operand (seq, loc, gimple_assign_rhs1 (def),
+ 				       narrow_type, &src_lo, &src_hi))
+ 	    return false;
+ 	  *lo = src_hi;
+ 	  *hi = build_zero_cst (narrow_type);
+ 	  return true;
+ 	}
+       if (is_gimple_assign (def)
+ 	  && CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (def)))
+ 	{
+ 	  tree src = gimple_assign_rhs1 (def);
+ 	  tree src_type = TREE_TYPE (src);
+ 	  if (INTEGRAL_TYPE_P (src_type)
+ 	      && TYPE_PRECISION (src_type) <= narrow_prec)
+ 	    {
+ 	      *lo = gimple_convert (seq, loc, narrow_type, src);
+ 	      if (TYPE_UNSIGNED (src_type))
+ 		*hi = build_zero_cst (narrow_type);
+ 	      else
+ 		{
+ 		  /* Sign extension: the high N bits replicate the sign bit.  */
+ 		  tree snarrow = signed_type_for (narrow_type);
+ 		  tree s = gimple_convert (seq, loc, snarrow, *lo);
+ 		  tree amt = build_int_cst (integer_type_node, narrow_prec - 1);
+ 		  tree sh = gimple_build (seq, loc, RSHIFT_EXPR, snarrow, s,
+ 					  amt);
+ 		  *hi = gimple_convert (seq, loc, narrow_type, sh);
+ 		}
+ 	      return true;
+ 	    }
+ 	}
+     }
+ 
+   /* A value provably within N bits: its low half is the truncation to N bits
+      (a subreg, not a 2N shift), its high half is zero.  */
+   auto_bitmap phi_seen;
+   if (long_mul_op_fits_p (op, narrow_prec, phi_seen))
+     {
+       *lo = gimple_convert (seq, loc, narrow_type, op);
+       *hi = build_zero_cst (narrow_type);
+       return true;
+     }
+ 
+   /* A PHI that does not fit N bits can still be split through its arguments,
+      which is how a sign-extended value reaches the cast case above.  */
+   if (TREE_CODE (op) == SSA_NAME)
+     if (gphi *phi = dyn_cast <gphi *> (SSA_NAME_DEF_STMT (op)))
+       return long_mul_split_phi (phi, narrow_type, lo, hi);
+   return false;
+ }
+ 
+ /* Collect into HIGH_USES the uses of PROD forming its high half,
+    `PROD >> NARROW_PREC'.  A use reading only the low NARROW_PREC bits is
+    accepted but not collected.  Returns false on any other use.  */
+ 
+ static bool
+ long_mul_high_half_uses (tree prod, unsigned int narrow_prec,
+ 			 vec<gimple *> *high_uses)
+ {
+   imm_use_iterator iui;
+   gimple *use_stmt;
+   FOR_EACH_IMM_USE_STMT (use_stmt, iui, prod)
+     {
+       if (is_gimple_debug (use_stmt))
+ 	continue;
+       if (!is_gimple_assign (use_stmt))
+ 	return false;
+       tree_code code = gimple_assign_rhs_code (use_stmt);
+       if (code == RSHIFT_EXPR
+ 	  && gimple_assign_rhs1 (use_stmt) == prod
+ 	  && tree_fits_uhwi_p (gimple_assign_rhs2 (use_stmt))
+ 	  && tree_to_uhwi (gimple_assign_rhs2 (use_stmt)) == narrow_prec)
+ 	high_uses->safe_push (use_stmt);
+       else if (CONVERT_EXPR_CODE_P (code))
+ 	{
+ 	  tree t = TREE_TYPE (gimple_assign_lhs (use_stmt));
+ 	  if (!INTEGRAL_TYPE_P (t) || TYPE_PRECISION (t) > narrow_prec)
+ 	    return false;
+ 	}
+       else if (code == BIT_AND_EXPR
+ 	       && TREE_CODE (gimple_assign_rhs2 (use_stmt)) == INTEGER_CST)
+ 	{
+ 	  if (wi::min_precision (wi::to_wide (gimple_assign_rhs2 (use_stmt)),
+ 				 UNSIGNED) > narrow_prec)
+ 	    return false;
+ 	}
+       else
+ 	return false;
+     }
+   return true;
+ }
+ 
+ /* True when every use of PROD reads only its low NARROW_PREC bits.  */
+ 
+ static bool
+ long_mul_only_low_half_used_p (tree prod, unsigned int narrow_prec)
+ {
+   auto_vec<gimple *, 4> high_uses;
+   return (long_mul_high_half_uses (prod, narrow_prec, &high_uses)
+ 	  && high_uses.is_empty ());
+ }
+ 
+ /* True when STMT is res = a * b whose unsigned 2N-bit result is in a mode the
+    target cannot multiply, having neither insn nor libcall, so that expand_mult
+    would abort; set *NARROW_TYPE to the N-bit unsigned type its halves are
+    built at.  A mode the target does support is left to convert_mult_to_widen
+    and convert_mult_to_highpart.  */
+ 
+ static bool
+ unexpandable_long_mul_p (gimple *stmt, tree *narrow_type)
+ {
+   if (!is_gimple_assign (stmt) || gimple_assign_rhs_code (stmt) != MULT_EXPR)
+     return false;
+ 
+   tree wide_type = TREE_TYPE (gimple_assign_lhs (stmt));
+   scalar_int_mode wide_mode;
+   if (!INTEGRAL_TYPE_P (wide_type)
+       || !TYPE_UNSIGNED (wide_type)
+       || !is_a <scalar_int_mode> (TYPE_MODE (wide_type), &wide_mode)
+       || targetm.scalar_mode_supported_p (wide_mode))
+     return false;
+ 
+   *narrow_type
+     = build_nonstandard_integer_type (TYPE_PRECISION (wide_type) / 2, 1);
+   return true;
+ }
+ 
+ static bool narrow_long_mul_low_half (gimple_stmt_iterator *);
+ 
+ /* OP1 and OP2 are the operands of a 2N multiply just narrowed or lowered;
+    that rewrite now reads each through an N-bit low-half cast.  An operand
+    defined by another 2N multiply can thereby become low-half-only -- narrow
+    it too, recursing through chained wide products such as (a*b)*c.  */
+ 
+ static void
+ narrow_long_mul_operands (tree op1, tree op2)
+ {
+   for (tree op : { op1, op2 })
+     if (TREE_CODE (op) == SSA_NAME)
+       {
+ 	gimple *def = SSA_NAME_DEF_STMT (op);
+ 	if (is_gimple_assign (def) && gimple_assign_rhs_code (def) == MULT_EXPR)
+ 	  {
+ 	    gimple_stmt_iterator dgsi = gsi_for_stmt (def);
+ 	    narrow_long_mul_low_half (&dgsi);
+ 	  }
+       }
+ }
+ 
+ /* If the statement at *GSI is res = a * b with a 2N-bit unsigned result the
+    target cannot multiply and every use reads only the low N bits, narrow it
+    to res = (2N) ((N) a * (N) b) and return true.  The low N bits of a product
+    depend only on the low N bits of the operands, so this preserves every use;
+    the unused high half becomes zero.  match.pd's shorten rule omits this for
+    MULT_EXPR.  */
+ 
+ static bool
+ narrow_long_mul_low_half (gimple_stmt_iterator *gsi)
+ {
+   gimple *stmt = gsi_stmt (*gsi);
+   tree narrow_type;
+   if (!unexpandable_long_mul_p (stmt, &narrow_type))
+     return false;
+ 
+   tree lhs = gimple_assign_lhs (stmt);
+   if (!long_mul_only_low_half_used_p (lhs, TYPE_PRECISION (narrow_type)))
+     return false;
+ 
+   tree op1 = gimple_assign_rhs1 (stmt);
+   tree op2 = gimple_assign_rhs2 (stmt);
+   location_t loc = gimple_location (stmt);
+   gimple_seq seq = NULL;
+   tree a = gimple_convert (&seq, loc, narrow_type, op1);
+   tree b = gimple_convert (&seq, loc, narrow_type, op2);
+   tree np = gimple_build (&seq, loc, MULT_EXPR, narrow_type, a, b);
+   gsi_insert_seq_before (gsi, seq, GSI_SAME_STMT);
+   gimple *conv = gimple_build_assign (lhs, NOP_EXPR, np);
+   gimple_set_location (conv, loc);
+   gsi_replace (gsi, conv, true);
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "Narrowed low-half-only long multiply.\n");
+ 
+   narrow_long_mul_operands (op1, op2);
+   return true;
+ }
+ 
+ /* The 2N multiply at *GSI has had its high half synthesized elsewhere, so any
+    use left reads only its low half: narrow it in place, or remove it when it
+    has no use at all.  Removing it drops a use of each operand, so a 2N
+    multiply defining one may become low-half-only.  Narrow those operands.  */
+ 
+ static void
+ finish_long_mul_low_half (gimple_stmt_iterator *gsi)
+ {
+   gimple *stmt = gsi_stmt (*gsi);
+ 
+   if (has_zero_uses (gimple_assign_lhs (stmt)))
+     {
+       tree op1 = gimple_assign_rhs1 (stmt);
+       tree op2 = gimple_assign_rhs2 (stmt);
+       gsi_remove (gsi, true);
+       release_defs (stmt);
+       narrow_long_mul_operands (op1, op2);
+       return;
+     }
+ 
+   narrow_long_mul_low_half (gsi);
+ }
+ 
+ /* Rewrite the multiply STMT into the N-bit halves its uses read, when the
+    target can neither multiply at 2N bits nor form an N-bit high part.
+    Returns true on a rewrite, which may remove STMT.
+ 
+    Runs once lower_long_mul_high_chain has been applied to every statement:
+    both rewrite products with a high half, and this one, keyed on the
+    definition rather than on a consumer, would otherwise pre-empt it.  What
+    reaches it is a product that lowering could not retire, its high half also
+    read as an operand of another product, or read alongside the low half.  A
+    product read only for its low half is left to narrow_long_mul_low_half.  */
+ 
+ static bool
+ narrow_long_mul_halves (gimple *stmt)
+ {
+   tree narrow_type;
+   if (!unexpandable_long_mul_p (stmt, &narrow_type))
+     return false;
+ 
+   /* Only worth lowering where the target cannot form the N-bit high part.  */
+   scalar_int_mode narrow_mode;
+   if (!is_a <scalar_int_mode> (TYPE_MODE (narrow_type), &narrow_mode)
+       || can_mult_highpart_p (narrow_mode, true))
+     return false;
+ 
+   tree lhs = gimple_assign_lhs (stmt);
+   auto_vec<gimple *, 4> high_uses;
+   if (!long_mul_high_half_uses (lhs, TYPE_PRECISION (narrow_type), &high_uses)
+       || high_uses.is_empty ())
+     return false;
+ 
+   tree op1 = gimple_assign_rhs1 (stmt);
+   tree op2 = gimple_assign_rhs2 (stmt);
+   location_t loc = gimple_location (stmt);
+   gimple_seq seq = NULL;
+   tree l1, h1, l2, h2;
+   if (!long_mul_split_operand (&seq, loc, op1, narrow_type, &l1, &h1)
+       || !long_mul_split_operand (&seq, loc, op2, narrow_type, &l2, &h2))
+     return false;
+   tree hi = combine_long_mul_halves (&seq, loc, l1, h1, l2, h2, narrow_type);
+   /* The high part is < 2^N, so widening it back to 2N leaves every use of a
+      shift, full width or truncated, reading the same value.  */
+   tree hi_wide = gimple_convert (&seq, loc, TREE_TYPE (lhs), hi);
+   gimple_stmt_iterator gsi = gsi_for_stmt (stmt);
+   gsi_insert_seq_before (&gsi, seq, GSI_SAME_STMT);
+ 
+   unsigned int i;
+   gimple *shift_stmt;
+   FOR_EACH_VEC_ELT (high_uses, i, shift_stmt)
+     {
+       gimple_stmt_iterator sgsi = gsi_for_stmt (shift_stmt);
+       gimple *conv = gimple_build_assign (gimple_assign_lhs (shift_stmt),
+ 					  hi_wide);
+       gimple_set_location (conv, loc);
+       gsi_replace (&sgsi, conv, true);
+     }
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "Narrowed high half of long multiply.\n");
+ 
+   finish_long_mul_low_half (&gsi);
+   return true;
+ }
+ 
+ /* Match.pd recognizer for the long-multiply recognizer's high-part
+    emit chain.  */
+ 
+ extern bool gimple_long_mul_high_chain (tree, tree *, tree (*)(tree));
+ 
+ /* Rewrite the `long_mul_high_chain' whose tail is the statement at GSI
+ 
+      wide_a    = (T_2N) op1
+      wide_b    = (T_2N) op2
+      wide_prod = wide_a * wide_b
+      hi        = wide_prod >> N
+      lhs       = (convert) hi
+ 
+    to a longhand high-part synthesis at T_N precision.  Never materializes
+    T_2N in gimple, so it covers cases where the 2N mode has no expansion path
+    (e.g. the high 128 bits of a 128x128 product where 2N=OImode).  An operand
+    wider than T_N -- a shared wide product or a sign-extended cast -- is split
+    into T_N halves rather than truncated, so no high input bits are dropped.
+    Returns true on a rewrite.  */
+ 
+ static bool
+ lower_long_mul_high_chain (gimple_stmt_iterator *gsi)
+ {
+   gimple *trunc_stmt = gsi_stmt (*gsi);
+   if (!is_gimple_assign (trunc_stmt))
+     return false;
+ 
+   tree narrow_lhs = gimple_assign_lhs (trunc_stmt);
+   tree ops[2];
+   if (!gimple_long_mul_high_chain (narrow_lhs, ops, NULL))
+     return false;
+ 
+   /* Walk the matched chain back to the 2N multiply and take narrow_type at
+      half its precision.  */
+   gimple *shift_stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (trunc_stmt));
+   gimple *mult_stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (shift_stmt));
+   unsigned int narrow_prec
+     = TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (mult_stmt))) / 2;
+   tree narrow_type = build_nonstandard_integer_type (narrow_prec, /*uns=*/1);
+   scalar_int_mode narrow_mode;
+   if (!is_a <scalar_int_mode> (TYPE_MODE (narrow_type), &narrow_mode))
+     return false;
+ 
+   /* Lower only when the target cannot form the N-bit high part itself.  */
+   if (can_mult_highpart_p (narrow_mode, true))
+     return false;
+ 
+   location_t loc = gimple_location (trunc_stmt);
+   gimple_seq seq = NULL;
+ 
+   /* Split each operand into N-bit halves and combine.  An operand that fits
+      N bits yields h == 0, so its cross term folds away; with both fitting
+      the combine is just a plain N-bit high part.  */
+   tree l1, h1, l2, h2;
+   if (!long_mul_split_operand (&seq, loc, gimple_assign_rhs1 (mult_stmt),
+ 			       narrow_type, &l1, &h1)
+       || !long_mul_split_operand (&seq, loc, gimple_assign_rhs2 (mult_stmt),
+ 				  narrow_type, &l2, &h2))
+     return false;
+   tree hi = combine_long_mul_halves (&seq, loc, l1, h1, l2, h2, narrow_type);
+ 
+   /* Merging the chain's truncation with a later user cast can retarget the
+      outer convert to any integral type, so convert the narrow result once
+      here (the high part is < 2^N, so the conversion preserves it).  */
+   gimple *result_stmt;
+   tree lhs_type = TREE_TYPE (narrow_lhs);
+   if (useless_type_conversion_p (lhs_type, narrow_type))
+     result_stmt = gimple_build_assign (narrow_lhs, hi);
+   else
+     result_stmt = gimple_build_assign (narrow_lhs, NOP_EXPR, hi);
+   gimple_set_location (result_stmt, loc);
+   gimple_seq_add_stmt (&seq, result_stmt);
+ 
+   gsi_replace_with_seq (gsi, seq, true);
+ 
+   /* Clean up the shift and the 2N mult now -- LTRANS runs no DCE between
+      widening_mul and expand, and a dead 2N mult would abort expand_mult.
+      Dead upstream (T_2N) casts, if any, are harmless NOP_EXPRs and land
+      with normal DCE.  */
+   if (has_zero_uses (gimple_assign_lhs (shift_stmt)))
+     {
+       gimple_stmt_iterator dgsi = gsi_for_stmt (shift_stmt);
+       gsi_remove (&dgsi, true);
+       release_defs (shift_stmt);
+     }
+ 
+   /* The mult is either dead (low half recomputed elsewhere) or now read only
+      for its low half.  */
+   gimple_stmt_iterator mgsi = gsi_for_stmt (mult_stmt);
+   finish_long_mul_low_half (&mgsi);
+ 
+   if (dump_file && (dump_flags & TDF_DETAILS))
+     fprintf (dump_file, "Lowered long-mul high-part chain.\n");
+   return true;
+ }
+ 
+ /* True when pass_optimize_widening_mul will run.  Shared with the
+    forwprop long-multiply recognizer so its wide-chain emit stays
+    paired with the lowering that rescues an unsupported 2N shape.
+    The -Og pipeline (pass_all_optimizations_g) does not contain
+    pass_optimize_widening_mul at all, so -Og -fexpensive-optimizations
+    must not enable the emit: the unlowered 2N multiply would reach
+    expand as an unexpandable mode (e.g. OImode) and ICE.
+    -fdisable-tree-widening_mul is not observed.  */
+ 
+ bool
+ optimize_widening_mul_active_p (void)
+ {
+   return flag_expensive_optimizations && optimize && !optimize_debug;
+ }
+ 
  /* Find integer multiplications where the operands are extended from
     smaller types, and replace the MULT_EXPR with a WIDEN_MULT_EXPR
     or MULT_HIGHPART_EXPR where appropriate.  */
*************** public:
*** 6558,6564 ****
    /* opt_pass methods: */
    bool gate (function *) final override
      {
!       return flag_expensive_optimizations && optimize;
      }
  
    unsigned int execute (function *) final override;
--- 7241,7247 ----
    /* opt_pass methods: */
    bool gate (function *) final override
      {
!       return optimize_widening_mul_active_p ();
      }
  
    unsigned int execute (function *) final override;
*************** math_opts_dom_walker::after_dom_children
*** 6626,6631 ****
--- 7309,7316 ----
  	  switch (code)
  	    {
  	    case MULT_EXPR:
+ 	      if (narrow_long_mul_low_half (&gsi))
+ 		break;
  	      if (!convert_mult_to_widen (stmt, &gsi)
  		  && !convert_expand_mult_copysign (stmt, &gsi)
  		  && convert_mult_to_fma (stmt,
*************** math_opts_dom_walker::after_dom_children
*** 6692,6697 ****
--- 7377,7392 ----
  	      match_unsigned_saturation_mul (&gsi, as_a<gassign *> (stmt));
  	      match_unsigned_saturation_trunc (&gsi, as_a<gassign *> (stmt));
  	      match_saturation_add_with_assign (&gsi, as_a<gassign *> (stmt));
+ 	      /* fall-through  */
+ 	    case CONVERT_EXPR:
+ 	      /* The long-multiply recognizer's high-part emit ends in an
+ 		 outer convert.  If the trailing cast+mult+shift+cast
+ 		 chain has no expansion strategy at the 2N width, lower
+ 		 the whole chain to a longhand high-part at narrow
+ 		 precision.  */
+ 	      if (gsi_stmt (gsi) == stmt
+ 		  && lower_long_mul_high_chain (&gsi))
+ 		continue;
  	      break;
  
  	    default:;
*************** pass_optimize_widening_mul::execute (fun
*** 6768,6775 ****
--- 7463,7487 ----
    calculate_dominance_info (CDI_DOMINATORS);
    renumber_gimple_stmt_uids (cfun);
  
+   long_mul_phi_halves = new hash_map<tree, long_mul_halves>;
+ 
    math_opts_dom_walker (&cfg_changed).walk (ENTRY_BLOCK_PTR_FOR_FN (cfun));
  
+   /* A 2N multiply the target cannot expand would abort expand_mult.  Every
+      statement has been through the lowerings above, so one left here matched
+      none of them.  */
+   basic_block bb;
+   FOR_EACH_BB_FN (bb, fun)
+     for (gimple_stmt_iterator gsi = gsi_start_bb (bb); !gsi_end_p (gsi);)
+       {
+ 	gimple *stmt = gsi_stmt (gsi);
+ 	gsi_next (&gsi);
+ 	narrow_long_mul_halves (stmt);
+       }
+ 
+   delete long_mul_phi_halves;
+   long_mul_phi_halves = NULL;
+ 
    statistics_counter_event (fun, "widening multiplications inserted",
  			    widen_mul_stats.widen_mults_inserted);
    statistics_counter_event (fun, "widening maccs inserted",
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-math-opts.h gcc-17-20260823/gcc/tree-ssa-math-opts.h
*** gcc-17-20260816/gcc/tree-ssa-math-opts.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-math-opts.h	Sun Aug 23 22:32:19 2026
*************** along with GCC; see the file COPYING3.
*** 23,26 ****
--- 23,28 ----
  extern tree powi_as_mults (gimple_stmt_iterator *, location_t,
  			   tree, HOST_WIDE_INT);
  
+ extern bool optimize_widening_mul_active_p (void);
+ 
  #endif  /* GCC_TREE_SSA_MATH_OPTS_H  */
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-pre.cc gcc-17-20260823/gcc/tree-ssa-pre.cc
*** gcc-17-20260816/gcc/tree-ssa-pre.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-pre.cc	Sun Aug 23 22:32:19 2026
*************** get_or_alloc_expr_for_nary (vn_nary_op_t
*** 431,436 ****
--- 431,438 ----
    unsigned int result_id;
  
    gcc_assert (value_id == 0 || !value_id_constant_p (value_id));
+   gcc_assert (nary->opcode != SSA_NAME
+ 	      && TREE_CODE_CLASS (nary->opcode) != tcc_constant);
  
    expr.kind = NARY;
    expr.id = 0;
*************** phi_translate_1 (bitmap_set_t dest,
*** 1626,1631 ****
--- 1628,1639 ----
  	  {
  	    unsigned int new_val_id;
  
+ 	    vn_nary_op_t saved_newnary
+ 	      = XALLOCAVAR (struct vn_nary_op_s,
+ 			    sizeof_vn_nary_op (newnary->length));
+ 	    memcpy (saved_newnary, newnary,
+ 		    sizeof_vn_nary_op (newnary->length));
+ 
  	    /* Try to simplify the new NARY.  */
  	    tree res = vn_nary_simplify (newnary);
  	    if (res)
*************** phi_translate_1 (bitmap_set_t dest,
*** 1673,1678 ****
--- 1681,1690 ----
  			return constant;
  		      }
  		  }
+ 		/* Restore the unsimplified newnary, it was simplified
+ 		   to a NAME that we do not want (not as NARY anyway).  */
+ 		memcpy (newnary, saved_newnary,
+ 			sizeof_vn_nary_op (saved_newnary->length));
  	      }
  
  	    tree result = vn_nary_op_lookup_pieces (newnary->length,
*************** find_or_generate_expression (basic_block
*** 3023,3029 ****
    gcc_assert (!value_id_constant_p (lookfor));
  
    /* It must be a complex expression, so generate it recursively.  Note
!      that this is only necessary to handle gcc.dg/tree-ssa/ssa-pre28.c
       where the insert algorithm fails to insert a required expression.  */
    bitmap exprset = value_expressions[lookfor];
    bitmap_iterator bi;
--- 3035,3041 ----
    gcc_assert (!value_id_constant_p (lookfor));
  
    /* It must be a complex expression, so generate it recursively.  Note
!      that this is only necessary to handle gcc.dg/tree-ssa/ssa-pre-28.c
       where the insert algorithm fails to insert a required expression.  */
    bitmap exprset = value_expressions[lookfor];
    bitmap_iterator bi;
*************** find_or_generate_expression (basic_block
*** 3036,3043 ****
  	   places.  We can insert NARYs which eventually re-materializes
  	   its operand values.  */
  	if (temp->kind == NARY)
! 	  return create_expression_by_pieces (block, temp, stmts,
! 					      TREE_TYPE (op));
        }
  
    /* Defer.  */
--- 3048,3064 ----
  	   places.  We can insert NARYs which eventually re-materializes
  	   its operand values.  */
  	if (temp->kind == NARY)
! 	  {
! 	    static int depth;
! 	    if (depth > 8)
! 	      return NULL_TREE;
! 
! 	    depth++;
! 	    tree res = create_expression_by_pieces (block, temp, stmts,
! 						    TREE_TYPE (op));
! 	    depth--;
! 	    return res;
! 	  }
        }
  
    /* Defer.  */
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-threadbackward.cc gcc-17-20260823/gcc/tree-ssa-threadbackward.cc
*** gcc-17-20260816/gcc/tree-ssa-threadbackward.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-threadbackward.cc	Sun Aug 23 22:32:19 2026
*************** back_threader::find_paths_to_names (basi
*** 396,401 ****
--- 396,402 ----
    // edge might help here.  Alternatively copying divergent control flow
    // on the way to the backedge could be worthwhile.
    bool large_non_fsm;
+   edge e;
    if (m_path.length () > 1
        && (!profit.possibly_profitable_path_p (m_path, &large_non_fsm)
  	  || (!large_non_fsm
*************** back_threader::find_paths_to_names (basi
*** 405,411 ****
    // The backwards thread copier cannot copy blocks that do not belong
    // to the same loop, so when the new source of the path entry no
    // longer belongs to it we don't need to search further.
!   else if (m_path[0]->loop_father != bb->loop_father)
      ;
  
    // Continue looking for ways to extend the path but limit the
--- 406,415 ----
    // The backwards thread copier cannot copy blocks that do not belong
    // to the same loop, so when the new source of the path entry no
    // longer belongs to it we don't need to search further.
!   else if (m_path[0]->loop_father != bb->loop_father
! 	   && (!(e = loop_exits_from_bb_p (m_path[0]->loop_father,
! 					   m_path[0]))
! 	       || e->dest->loop_father != bb->loop_father))
      ;
  
    // Continue looking for ways to extend the path but limit the
*************** back_threader::find_paths_to_names (basi
*** 481,493 ****
  	  FOR_EACH_EDGE (e, iter, bb->preds)
  	    {
  	      if (e->flags & EDGE_ABNORMAL
! 		  // This is like path_crosses_loops in profitable_path_p but
! 		  // more restrictive to avoid peeling off loop iterations (see
! 		  // tree-ssa/pr14341.c for an example).
! 		  // ???  Note this restriction only applied when visiting an
! 		  // interesting PHI with the former resolve_phi.
! 		  || (!interesting_phis.is_empty ()
! 		      && m_path[0]->loop_father != e->src->loop_father))
  		continue;
  	      for (gphi *phi : interesting_phis)
  		{
--- 485,491 ----
  	  FOR_EACH_EDGE (e, iter, bb->preds)
  	    {
  	      if (e->flags & EDGE_ABNORMAL
! 		  || e->src->index == ENTRY_BLOCK)
  		continue;
  	      for (gphi *phi : interesting_phis)
  		{
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-threadupdate.cc gcc-17-20260823/gcc/tree-ssa-threadupdate.cc
*** gcc-17-20260816/gcc/tree-ssa-threadupdate.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-threadupdate.cc	Sun Aug 23 22:32:19 2026
*************** back_jt_path_registry::adjust_paths_afte
*** 2382,2395 ****
     CURRENT_PATH_NO is an index into the global paths[] table
     specifying the jump-thread path.
  
!    Returns false if it is unable to copy the region, true otherwise.  */
  
  bool
  back_jt_path_registry::duplicate_thread_path (edge entry,
  					      edge exit,
  					      basic_block *region,
  					      unsigned n_region,
! 					      unsigned current_path_no)
  {
    unsigned i;
    class loop *loop = entry->dest->loop_father;
--- 2382,2397 ----
     CURRENT_PATH_NO is an index into the global paths[] table
     specifying the jump-thread path.
  
!    Returns false if it is unable to copy the region, true otherwise.
!    On failure *FAILURE_REASON says why.  */
  
  bool
  back_jt_path_registry::duplicate_thread_path (edge entry,
  					      edge exit,
  					      basic_block *region,
  					      unsigned n_region,
! 					      unsigned current_path_no,
! 					      const char **failure_reason)
  {
    unsigned i;
    class loop *loop = entry->dest->loop_father;
*************** back_jt_path_registry::duplicate_thread_
*** 2398,2404 ****
    profile_count curr_count;
  
    if (!can_copy_bbs_p (region, n_region))
!     return false;
  
    /* Some sanity checking.  Note that we do not check for all possible
       missuses of the functions.  I.e. if you ask to copy something weird,
--- 2400,2409 ----
    profile_count curr_count;
  
    if (!can_copy_bbs_p (region, n_region))
!     {
!       *failure_reason = "Cannot copy the blocks in the path";
!       return false;
!     }
  
    /* Some sanity checking.  Note that we do not check for all possible
       missuses of the functions.  I.e. if you ask to copy something weird,
*************** back_jt_path_registry::duplicate_thread_
*** 2407,2415 ****
    for (i = 0; i < n_region; i++)
      {
        /* We do not handle subloops, i.e. all the blocks must belong to the
! 	 same loop.  */
!       if (region[i]->loop_father != loop)
! 	return false;
      }
  
    initialize_original_copy_tables ();
--- 2412,2430 ----
    for (i = 0; i < n_region; i++)
      {
        /* We do not handle subloops, i.e. all the blocks must belong to the
! 	 same loop.  Unless we thread to the subloop exit and thus the
! 	 path will belong to loop after the threading.  */
!       if ((region[i]->loop_father != loop
! 	   && !(loop_exit_edge_p (region[i]->loop_father, exit)
! 		&& exit->dest->loop_father == loop))
! 	  /* Avoid creating alternate entries into the original loop.  */
! 	  || (loop->header == entry->dest
! 	      && region[i] != exit->src
! 	      && EDGE_COUNT (region[i]->succs) > 1))
! 	{
! 	  *failure_reason = "Path crosses loops";
! 	  return false;
! 	}
      }
  
    initialize_original_copy_tables ();
*************** back_jt_path_registry::update_cfg (bool
*** 2638,2653 ****
        for (unsigned int j = 0; j < len - 1; j++)
  	region[j] = (*path)[j]->e->dest;
  
!       if (duplicate_thread_path (entry, exit, region, len - 1, 0))
  	{
  	  /* We do not update dominance info.  */
  	  free_dominance_info (CDI_DOMINATORS);
  	  visited_starting_edges.add (entry);
  	  retval = true;
  	  m_num_threaded_edges++;
  	}
  
-       path->release ();
        m_paths.unordered_remove (0);
        free (region);
      }
--- 2653,2672 ----
        for (unsigned int j = 0; j < len - 1; j++)
  	region[j] = (*path)[j]->e->dest;
  
!       const char *failure_reason = NULL;
!       if (duplicate_thread_path (entry, exit, region, len - 1, 0,
! 				 &failure_reason))
  	{
  	  /* We do not update dominance info.  */
  	  free_dominance_info (CDI_DOMINATORS);
  	  visited_starting_edges.add (entry);
  	  retval = true;
  	  m_num_threaded_edges++;
+ 	  path->release ();
  	}
+       else
+ 	cancel_thread (path, failure_reason);
  
        m_paths.unordered_remove (0);
        free (region);
      }
*************** jt_path_registry::cancel_invalid_paths (
*** 2812,2817 ****
--- 2831,2843 ----
        && flow_loop_nested_p (exit->dest->loop_father, exit->src->loop_father))
      return false;
  
+   if (seen_latch && entry->dest == loop->header)
+     {
+       cancel_thread (&path, "Threading through latch from loop header "
+ 		     "peels loop");
+       return true;
+     }
+ 
    if (cfun->curr_properties & PROP_loop_opts_done)
      return false;
  
diff -Nrcpad gcc-17-20260816/gcc/tree-ssa-threadupdate.h gcc-17-20260823/gcc/tree-ssa-threadupdate.h
*** gcc-17-20260816/gcc/tree-ssa-threadupdate.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssa-threadupdate.h	Sun Aug 23 22:32:19 2026
*************** private:
*** 116,122 ****
    bool update_cfg (bool peel_loop_headers) override;
    void adjust_paths_after_duplication (unsigned curr_path_num);
    bool duplicate_thread_path (edge entry, edge exit, basic_block *region,
! 			      unsigned n_region, unsigned current_path_no);
    bool rewire_first_differing_edge (unsigned path_num, unsigned edge_num);
  };
  
--- 116,123 ----
    bool update_cfg (bool peel_loop_headers) override;
    void adjust_paths_after_duplication (unsigned curr_path_num);
    bool duplicate_thread_path (edge entry, edge exit, basic_block *region,
! 			      unsigned n_region, unsigned current_path_no,
! 			      const char **failure_reason);
    bool rewire_first_differing_edge (unsigned path_num, unsigned edge_num);
  };
  
diff -Nrcpad gcc-17-20260816/gcc/tree-ssanames.cc gcc-17-20260823/gcc/tree-ssanames.cc
*** gcc-17-20260816/gcc/tree-ssanames.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-ssanames.cc	Sun Aug 23 22:32:19 2026
*************** reset_flow_sensitive_info (tree name)
*** 927,932 ****
--- 927,935 ----
      }
    else
      SSA_NAME_RANGE_INFO (name) = NULL;
+ 
+   // Clear range info in the current range query.
+   get_range_query (cfun)->reset_range_info (name);
  }
  
  /* Clear all flow sensitive data from all statements and PHI definitions
diff -Nrcpad gcc-17-20260816/gcc/tree-vect-patterns.cc gcc-17-20260823/gcc/tree-vect-patterns.cc
*** gcc-17-20260816/gcc/tree-vect-patterns.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-vect-patterns.cc	Sun Aug 23 22:32:19 2026
*************** vect_recog_widen_sum_pattern (vec_info *
*** 2570,2581 ****
  
    vect_pattern_detected ("vect_recog_widen_sum_pattern", last_stmt);
  
!   if (!vect_supportable_conv_optab_p (vinfo, type, WIDEN_SUM_EXPR,
! 				      unprom0.type, type_out))
!     return NULL;
  
    var = vect_recog_temp_ssa_var (type, NULL);
!   pattern_stmt = gimple_build_assign (var, WIDEN_SUM_EXPR, unprom0.op, oprnd1);
  
    return pattern_stmt;
  }
--- 2570,2599 ----
  
    vect_pattern_detected ("vect_recog_widen_sum_pattern", last_stmt);
  
!   /* If the exact input type is not supported, widen it to an intermediate
!      type before adding it to the accumulator.  Start with the narrowest
!      type in order to retain the largest vectorization factor.  */
!   tree input_type = unprom0.type;
!   tree input_vectype = NULL_TREE;
! 
!   while (!vect_supportable_conv_optab_p (vinfo, type, WIDEN_SUM_EXPR,
! 					 input_type, type_out, &input_vectype))
!     {
!       unsigned int precision
! 	= vect_element_precision (TYPE_PRECISION (input_type) + 1);
! 
!       if (precision > TYPE_PRECISION (type) / 2)
! 	return NULL;
! 
!       input_type = build_nonstandard_integer_type
! 	(precision, TYPE_UNSIGNED (unprom0.type));
!     }
! 
!   tree input = vect_convert_input (vinfo, stmt_vinfo, input_type, &unprom0,
! 				   input_vectype);
  
    var = vect_recog_temp_ssa_var (type, NULL);
!   pattern_stmt = gimple_build_assign (var, WIDEN_SUM_EXPR, input, oprnd1);
  
    return pattern_stmt;
  }
*************** vect_recog_divmod_pattern (vec_info *vin
*** 5274,5280 ****
  
        /* Check if the target supports this internal function.  */
        internal_fn ifn = IFN_DIV_POW2;
!       if (direct_internal_fn_supported_p (ifn, vectype, OPTIMIZE_FOR_SPEED))
  	{
  	  tree shift = build_int_cst (itype, tree_log2 (oprnd1));
  
--- 5292,5299 ----
  
        /* Check if the target supports this internal function.  */
        internal_fn ifn = IFN_DIV_POW2;
!       if (!TYPE_UNSIGNED (itype)
! 	  && direct_internal_fn_supported_p (ifn, vectype, OPTIMIZE_FOR_SPEED))
  	{
  	  tree shift = build_int_cst (itype, tree_log2 (oprnd1));
  
*************** vect_recog_divmod_pattern (vec_info *vin
*** 5288,5303 ****
  	      def_stmt
  		= gimple_build_assign (t1, LSHIFT_EXPR, var_div, shift);
  	      append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
! 	      pattern_stmt
! 		= gimple_build_assign (vect_recog_temp_ssa_var (itype, NULL),
! 				       MINUS_EXPR, oprnd0, t1);
  	      if (is_flclrd_moddiv_p)
  		{
  		  append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
  		  pattern_stmt
  		    = add_code_for_floorceilround_divmod (vectype, vinfo,
  							  stmt_vinfo, rhs_code,
! 							  var_div, t1, oprnd0,
  							  oprnd1, itype);
  		  if (pattern_stmt == NULL)
  		    return NULL;
--- 5307,5321 ----
  	      def_stmt
  		= gimple_build_assign (t1, LSHIFT_EXPR, var_div, shift);
  	      append_pattern_def_seq (vinfo, stmt_vinfo, def_stmt);
! 	      tree r = vect_recog_temp_ssa_var (itype, NULL);
! 	      pattern_stmt = gimple_build_assign (r, MINUS_EXPR, oprnd0, t1);
  	      if (is_flclrd_moddiv_p)
  		{
  		  append_pattern_def_seq (vinfo, stmt_vinfo, pattern_stmt);
  		  pattern_stmt
  		    = add_code_for_floorceilround_divmod (vectype, vinfo,
  							  stmt_vinfo, rhs_code,
! 							  var_div, r, oprnd0,
  							  oprnd1, itype);
  		  if (pattern_stmt == NULL)
  		    return NULL;
diff -Nrcpad gcc-17-20260816/gcc/tree-vect-slp-patterns.cc gcc-17-20260823/gcc/tree-vect-slp-patterns.cc
*** gcc-17-20260816/gcc/tree-vect-slp-patterns.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-vect-slp-patterns.cc	Sun Aug 23 22:32:19 2026
*************** vect_build_swap_evenodd_node (slp_tree n
*** 277,283 ****
    SLP_TREE_CHILDREN (vnode).quick_push (node);
    SLP_TREE_REF_COUNT (vnode) = 1;
    SLP_TREE_LANES (vnode) = SLP_TREE_LANES (node);
-   SLP_TREE_REPRESENTATIVE (vnode) = SLP_TREE_REPRESENTATIVE (node);
    SLP_TREE_REF_COUNT (node)++;
    return vnode;
  }
--- 277,282 ----
*************** complex_pattern::build (vec_info *vinfo)
*** 535,541 ****
    FOR_EACH_VEC_ELT (this->m_workset, ix, node)
      {
        /* Calculate the location of the statement in NODE to replace.  */
!       stmt_info = SLP_TREE_REPRESENTATIVE (node);
        gimple* old_stmt = STMT_VINFO_STMT (stmt_info);
        tree lhs_old_stmt = gimple_get_lhs (old_stmt);
        tree type = TREE_TYPE (lhs_old_stmt);
--- 534,540 ----
    FOR_EACH_VEC_ELT (this->m_workset, ix, node)
      {
        /* Calculate the location of the statement in NODE to replace.  */
!       stmt_info = SLP_TREE_SCALAR_STMTS (node)[0];
        gimple* old_stmt = STMT_VINFO_STMT (stmt_info);
        tree lhs_old_stmt = gimple_get_lhs (old_stmt);
        tree type = TREE_TYPE (lhs_old_stmt);
*************** compatible_complex_nodes_p (slp_compat_n
*** 764,833 ****
        return true;
      }
  
!   auto a_stmt = STMT_VINFO_STMT (SLP_TREE_REPRESENTATIVE (a));
!   auto b_stmt = STMT_VINFO_STMT (SLP_TREE_REPRESENTATIVE (b));
! 
!   if (gimple_code (a_stmt) != gimple_code (b_stmt))
!     return false;
! 
!   /* code, children, type, externals, loads, constants  */
!   if (gimple_num_args (a_stmt) != gimple_num_args (b_stmt))
!     return false;
! 
!   /* At this point, a and b are known to be the same gimple operations.  */
!   if (is_gimple_call (a_stmt))
!     {
! 	if (!compatible_calls_p (dyn_cast <gcall *> (a_stmt),
! 				 dyn_cast <gcall *> (b_stmt), false))
! 	  return false;
!     }
!   else if (!is_gimple_assign (a_stmt))
      return false;
    else
      {
!       tree_code acode = gimple_assign_rhs_code (a_stmt);
!       tree_code bcode = gimple_assign_rhs_code (b_stmt);
!       if ((acode == REALPART_EXPR || acode == IMAGPART_EXPR)
! 	  && (bcode == REALPART_EXPR || bcode == IMAGPART_EXPR)
! 	  && operand_equal_p (TREE_OPERAND (gimple_assign_rhs1 (a_stmt), 0),
! 			      TREE_OPERAND (gimple_assign_rhs1 (b_stmt), 0)))
! 	return true;
  
!       if (acode != bcode)
  	return false;
-     }
  
!   if (!STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (a))
!       || !STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (b)))
!     {
!       for (unsigned i = 0; i < gimple_num_args (a_stmt); i++)
  	{
! 	  tree t1 = gimple_arg (a_stmt, i);
! 	  tree t2 = gimple_arg (b_stmt, i);
! 	  if (TREE_CODE (t1) != TREE_CODE (t2))
  	    return false;
  
! 	  /* If SSA name then we will need to inspect the children
! 	     so we can punt here.  */
! 	  if (TREE_CODE (t1) == SSA_NAME)
! 	    continue;
  
! 	  if (!operand_equal_p (t1, t2, 0))
  	    return false;
  	}
      }
-   else
-     {
-       auto dr1 = STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (a));
-       auto dr2 = STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (b));
-       /* Don't check the last dimension as that's checked by the lineary
- 	 checks.  This check is also much stricter than what we need
- 	 because it doesn't consider loading from adjacent elements
- 	 in the same struct as loading from the same base object.
- 	 But for now, I'll play it safe.  */
-       if (!same_data_refs (dr1, dr2, 1))
- 	return false;
-     }
  
    for (unsigned i = 0; i < SLP_TREE_CHILDREN (a).length (); i++)
      {
--- 763,839 ----
        return true;
      }
  
!   if (SLP_TREE_PERMUTE_P (a) != SLP_TREE_PERMUTE_P (b))
      return false;
+   else if (SLP_TREE_PERMUTE_P (a))
+     ;
    else
      {
!       auto a_stmt = STMT_VINFO_STMT (SLP_TREE_REPRESENTATIVE (a));
!       auto b_stmt = STMT_VINFO_STMT (SLP_TREE_REPRESENTATIVE (b));
  
!       if (gimple_code (a_stmt) != gimple_code (b_stmt))
  	return false;
  
!       /* code, children, type, externals, loads, constants  */
!       if (gimple_num_args (a_stmt) != gimple_num_args (b_stmt))
! 	return false;
! 
!       /* At this point, a and b are known to be the same gimple operations.  */
!       if (is_gimple_call (a_stmt))
  	{
! 	  if (!compatible_calls_p (dyn_cast <gcall *> (a_stmt),
! 				   dyn_cast <gcall *> (b_stmt), false))
! 	    return false;
! 	}
!       else if (!is_gimple_assign (a_stmt))
! 	return false;
!       else
! 	{
! 	  tree_code acode = gimple_assign_rhs_code (a_stmt);
! 	  tree_code bcode = gimple_assign_rhs_code (b_stmt);
! 	  if ((acode == REALPART_EXPR || acode == IMAGPART_EXPR)
! 	      && (bcode == REALPART_EXPR || bcode == IMAGPART_EXPR)
! 	      && operand_equal_p (TREE_OPERAND (gimple_assign_rhs1 (a_stmt), 0),
! 				  TREE_OPERAND (gimple_assign_rhs1 (b_stmt), 0)))
! 	    return true;
! 
! 	  if (acode != bcode)
  	    return false;
+ 	}
  
!       if (!STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (a))
! 	  || !STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (b)))
! 	{
! 	  for (unsigned i = 0; i < gimple_num_args (a_stmt); i++)
! 	    {
! 	      tree t1 = gimple_arg (a_stmt, i);
! 	      tree t2 = gimple_arg (b_stmt, i);
! 	      if (TREE_CODE (t1) != TREE_CODE (t2))
! 		return false;
  
! 	      /* If SSA name then we will need to inspect the children
! 		 so we can punt here.  */
! 	      if (TREE_CODE (t1) == SSA_NAME)
! 		continue;
! 
! 	      if (!operand_equal_p (t1, t2, 0))
! 		return false;
! 	    }
! 	}
!       else
! 	{
! 	  auto dr1 = STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (a));
! 	  auto dr2 = STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (b));
! 	  /* Don't check the last dimension as that's checked by the lineary
! 	     checks.  This check is also much stricter than what we need
! 	     because it doesn't consider loading from adjacent elements
! 	     in the same struct as loading from the same base object.
! 	     But for now, I'll play it safe.  */
! 	  if (!same_data_refs (dr1, dr2, 1))
  	    return false;
  	}
      }
  
    for (unsigned i = 0; i < SLP_TREE_CHILDREN (a).length (); i++)
      {
*************** vect_build_combine_node (slp_tree even,
*** 1006,1015 ****
  
    SLP_TREE_LANES (vnode) = SLP_TREE_LANES (rep);
    gcc_assert (perm.length () == SLP_TREE_LANES (vnode));
-   /* Representation is set to that of the current node as the vectorizer
-      can't deal with VEC_PERMs with no representation, as would be the
-      case with invariants.  */
-   SLP_TREE_REPRESENTATIVE (vnode) = SLP_TREE_REPRESENTATIVE (rep);
    SLP_TREE_VECTYPE (vnode) = SLP_TREE_VECTYPE (rep);
    return vnode;
  }
--- 1012,1017 ----
diff -Nrcpad gcc-17-20260816/gcc/tree-vect-slp.cc gcc-17-20260823/gcc/tree-vect-slp.cc
*** gcc-17-20260816/gcc/tree-vect-slp.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-vect-slp.cc	Sun Aug 23 22:32:19 2026
*************** _slp_tree::_slp_tree ()
*** 131,137 ****
    this->cycle_info.reduc_idx = -1;
    SLP_TREE_REF_COUNT (this) = 1;
    this->failed = NULL;
-   this->max_nunits = 1;
    this->lanes = 0;
    SLP_TREE_TYPE (this) = undef_vec_info_type;
    this->data = NULL;
--- 131,136 ----
*************** vect_free_oprnd_info (vec<slp_oprnd_info
*** 346,355 ****
     a "more important" node when optimizing for speed).  */
  
  static sreal
! vect_slp_node_weight (slp_tree node)
  {
!   stmt_vec_info stmt_info = vect_orig_stmt (SLP_TREE_REPRESENTATIVE (node));
!   basic_block bb = gimple_bb (stmt_info->stmt);
    return bb->count.to_sreal_scale (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count);
  }
  
--- 345,360 ----
     a "more important" node when optimizing for speed).  */
  
  static sreal
! vect_slp_node_weight (vec_info *vinfo, slp_tree node)
  {
!   stmt_vec_info stmt_info = SLP_TREE_REPRESENTATIVE (node);
!   basic_block bb;
!   /* ???  This is imprecise, VEC_PERM nodes do not have a representative
!      but are laid out close to their children.  */
!   if (!stmt_info)
!     bb = vinfo->bbs[0];
!   else
!     bb = gimple_bb (vect_orig_stmt (stmt_info)->stmt);
    return bb->count.to_sreal_scale (ENTRY_BLOCK_PTR_FOR_FN (cfun)->count);
  }
  
*************** compatible_calls_p (gcall *call1, gcall
*** 1095,1108 ****
  /* A subroutine of vect_build_slp_tree for checking VECTYPE, which is the
     caller's attempt to find the vector type in STMT_INFO with the narrowest
     element type.  Return true if VECTYPE is nonnull and if it is valid
!    for STMT_INFO.  When returning true, update MAX_NUNITS to reflect the
!    number of units in VECTYPE.  GROUP_SIZE and MAX_NUNITS are as for
!    vect_build_slp_tree.  */
  
  static bool
! vect_record_max_nunits (vec_info *vinfo, stmt_vec_info stmt_info,
! 			unsigned int group_size,
! 			tree vectype, poly_uint64 *max_nunits)
  {
    if (!vectype)
      {
--- 1100,1110 ----
  /* A subroutine of vect_build_slp_tree for checking VECTYPE, which is the
     caller's attempt to find the vector type in STMT_INFO with the narrowest
     element type.  Return true if VECTYPE is nonnull and if it is valid
!    for STMT_INFO.  GROUP_SIZE is as for vect_build_slp_tree.  */
  
  static bool
! vect_record_vectype (vec_info *vinfo, stmt_vec_info stmt_info,
! 		     unsigned int group_size, tree vectype)
  {
    if (!vectype)
      {
*************** vect_record_max_nunits (vec_info *vinfo,
*** 1115,1121 ****
      }
  
    /* If populating the vector type requires unrolling then fail
!      before adjusting *max_nunits for basic-block vectorization.  */
    if (is_a <bb_vec_info> (vinfo)
        && !multiple_p (group_size, TYPE_VECTOR_SUBPARTS (vectype)))
      {
--- 1117,1123 ----
      }
  
    /* If populating the vector type requires unrolling then fail
!      for basic-block vectorization.  */
    if (is_a <bb_vec_info> (vinfo)
        && !multiple_p (group_size, TYPE_VECTOR_SUBPARTS (vectype)))
      {
*************** vect_record_max_nunits (vec_info *vinfo,
*** 1127,1134 ****
        return false;
      }
  
-   /* In case of multiple types we need to detect the smallest type.  */
-   vect_update_max_nunits (max_nunits, vectype);
    return true;
  }
  
--- 1129,1134 ----
*************** vect_record_max_nunits (vec_info *vinfo,
*** 1148,1155 ****
  
  static bool
  vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap,
! 		       vec<stmt_vec_info> stmts,
! 		       poly_uint64 *max_nunits, bool *matches,
  		       bool *two_operators, tree *node_vectype)
  {
    unsigned int group_size = stmts.length ();
--- 1148,1154 ----
  
  static bool
  vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap,
! 		       vec<stmt_vec_info> stmts, bool *matches,
  		       bool *two_operators, tree *node_vectype)
  {
    unsigned int group_size = stmts.length ();
*************** vect_build_slp_tree_1 (vec_info *vinfo,
*** 1190,1197 ****
       as if nunits was not an issue.  This allows splitting of groups
       to happen.  */
    if (nunits_vectype
!       && !vect_record_max_nunits (vinfo, first_stmt_info, group_size,
! 				  nunits_vectype, max_nunits))
      {
        gcc_assert (is_a <bb_vec_info> (vinfo));
        maybe_soft_fail = true;
--- 1189,1196 ----
       as if nunits was not an issue.  This allows splitting of groups
       to happen.  */
    if (nunits_vectype
!       && !vect_record_vectype (vinfo, first_stmt_info, group_size,
! 			       nunits_vectype))
      {
        gcc_assert (is_a <bb_vec_info> (vinfo));
        maybe_soft_fail = true;
*************** static unsigned least_upthread_swappable
*** 1895,1908 ****
  static slp_tree
  vect_build_slp_tree_2 (vec_info *vinfo, slp_tree node,
  		       vec<stmt_vec_info> stmts,
- 		       poly_uint64 *max_nunits,
  		       bool *matches, unsigned *limit, unsigned *tree_size,
  		       scalar_stmts_to_slp_tree_map_t *bst_map);
  
  static slp_tree
  vect_build_slp_tree (vec_info *vinfo,
  		     vec<stmt_vec_info> stmts,
- 		     poly_uint64 *max_nunits,
  		     bool *matches, unsigned *limit, unsigned *tree_size,
  		     scalar_stmts_to_slp_tree_map_t *bst_map)
  {
--- 1894,1905 ----
*************** vect_build_slp_tree (vec_info *vinfo,
*** 1916,1922 ****
        if (!(*leader)->failed)
  	{
  	  SLP_TREE_REF_COUNT (*leader)++;
- 	  vect_update_max_nunits (max_nunits, (*leader)->max_nunits);
  	  stmts.release ();
  	  return *leader;
  	}
--- 1913,1918 ----
*************** vect_build_slp_tree (vec_info *vinfo,
*** 1950,1958 ****
      dump_printf_loc (MSG_NOTE, vect_location,
  		     "starting SLP discovery for node %p\n", (void *) res);
  
-   poly_uint64 this_max_nunits = 1;
    slp_tree res_ = vect_build_slp_tree_2 (vinfo, res, stmts,
- 					&this_max_nunits,
  					matches, limit, tree_size, bst_map);
    if (!res_)
      {
--- 1946,1952 ----
*************** vect_build_slp_tree (vec_info *vinfo,
*** 1981,1988 ****
  			 "SLP discovery for node %p succeeded\n",
  			 (void *) res);
        gcc_assert (res_ == res);
-       res->max_nunits = this_max_nunits;
-       vect_update_max_nunits (max_nunits, this_max_nunits);
        /* Keep a reference for the bst_map use.  */
        SLP_TREE_REF_COUNT (res)++;
      }
--- 1975,1980 ----
*************** vect_slp_build_two_operator_nodes (slp_t
*** 2023,2030 ****
    SLP_TREE_CODE (perm) = VEC_PERM_EXPR;
    SLP_TREE_VECTYPE (perm) = vectype;
    SLP_TREE_LANES (perm) = group_size;
!   /* ???  We should set this NULL but that's not expected.  */
!   SLP_TREE_REPRESENTATIVE (perm) = oper1;
    SLP_TREE_LANE_PERMUTATION (perm) = lperm;
    SLP_TREE_CHILDREN (perm).quick_push (child1);
    SLP_TREE_CHILDREN (perm).quick_push (child2);
--- 2015,2021 ----
    SLP_TREE_CODE (perm) = VEC_PERM_EXPR;
    SLP_TREE_VECTYPE (perm) = vectype;
    SLP_TREE_LANES (perm) = group_size;
!   SLP_TREE_REPRESENTATIVE (perm) = NULL;
    SLP_TREE_LANE_PERMUTATION (perm) = lperm;
    SLP_TREE_CHILDREN (perm).quick_push (child1);
    SLP_TREE_CHILDREN (perm).quick_push (child2);
*************** vect_slp_build_two_operator_nodes (slp_t
*** 2040,2052 ****
  static slp_tree
  vect_build_slp_tree_2 (vec_info *vinfo, slp_tree node,
  		       vec<stmt_vec_info> stmts,
- 		       poly_uint64 *max_nunits,
  		       bool *matches, unsigned *limit, unsigned *tree_size,
  		       scalar_stmts_to_slp_tree_map_t *bst_map)
  {
    unsigned int group_size = stmts.length ();
    unsigned nops, i, this_tree_size = 0;
-   poly_uint64 this_max_nunits = *max_nunits;
  
    matches[0] = false;
  
--- 2031,2041 ----
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2070,2077 ****
  	tree scalar_type = TREE_TYPE (PHI_RESULT (stmt));
  	tree vectype = get_vectype_for_scalar_type (vinfo, scalar_type,
  						    group_size);
! 	if (!vect_record_max_nunits (vinfo, stmt_info, group_size, vectype,
! 				     max_nunits))
  	  return NULL;
  
  	vect_def_type def_type = STMT_VINFO_DEF_TYPE (stmt_info);
--- 2059,2065 ----
  	tree scalar_type = TREE_TYPE (PHI_RESULT (stmt));
  	tree vectype = get_vectype_for_scalar_type (vinfo, scalar_type,
  						    group_size);
! 	if (!vect_record_vectype (vinfo, stmt_info, group_size, vectype))
  	  return NULL;
  
  	vect_def_type def_type = STMT_VINFO_DEF_TYPE (stmt_info);
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2123,2130 ****
    bool two_operators = false;
    unsigned char *swap = XALLOCAVEC (unsigned char, group_size);
    tree vectype = NULL_TREE;
!   if (!vect_build_slp_tree_1 (vinfo, swap, stmts,
! 			      &this_max_nunits, matches, &two_operators,
  			      &vectype))
      return NULL;
  
--- 2111,2117 ----
    bool two_operators = false;
    unsigned char *swap = XALLOCAVEC (unsigned char, group_size);
    tree vectype = NULL_TREE;
!   if (!vect_build_slp_tree_1 (vinfo, swap, stmts, matches, &two_operators,
  			      &vectype))
      return NULL;
  
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2136,2142 ****
  	gcc_assert (DR_IS_READ (STMT_VINFO_DATA_REF (stmt_info)));
        else
  	{
- 	  *max_nunits = this_max_nunits;
  	  (*tree_size)++;
  	  node = vect_create_new_slp_node (node, stmts, 0);
  	  SLP_TREE_VECTYPE (node) = vectype;
--- 2123,2128 ----
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2220,2227 ****
  		    }
  		  bool *matches2 = XALLOCAVEC (bool, dr_group_size);
  		  slp_tree unperm_load
! 		    = vect_build_slp_tree (vinfo, stmts2,
! 					   &this_max_nunits, matches2, limit,
  					   &this_tree_size, bst_map);
  		  /* When we are able to do the full masked load emit that
  		     followed by 'node' being the desired final permutation.  */
--- 2206,2212 ----
  		    }
  		  bool *matches2 = XALLOCAVEC (bool, dr_group_size);
  		  slp_tree unperm_load
! 		    = vect_build_slp_tree (vinfo, stmts2, matches2, limit,
  					   &this_tree_size, bst_map);
  		  /* When we are able to do the full masked load emit that
  		     followed by 'node' being the desired final permutation.  */
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2237,2242 ****
--- 2222,2228 ----
  		      SLP_TREE_CODE (node) = VEC_PERM_EXPR;
  		      SLP_TREE_CHILDREN (node).safe_push (unperm_load);
  		      SLP_TREE_LANE_PERMUTATION (node) = lperm;
+ 		      SLP_TREE_REPRESENTATIVE (node) = NULL;
  		      load_permutation.release ();
  		      return node;
  		    }
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2314,2319 ****
--- 2300,2306 ----
        SLP_TREE_LANE_PERMUTATION (node) = lperm;
        SLP_TREE_VECTYPE (node) = vectype;
        SLP_TREE_CHILDREN (node).quick_push (vnode);
+       SLP_TREE_REPRESENTATIVE (node) = NULL;
        return node;
      }
    /* When discovery reaches an associatable operation see whether we can
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2524,2530 ****
  			else
  			  op_stmts.quick_push (NULL);
  		      child = vect_build_slp_tree (vinfo, op_stmts,
- 						   &this_max_nunits,
  						   matches, limit,
  						   &this_tree_size, bst_map);
  		      /* ???  We're likely getting too many fatal mismatches
--- 2511,2516 ----
*************** vect_build_slp_tree_2 (vec_info *vinfo,
*** 2680,2686 ****
  	      children[i] = child;
  	    }
  	  *tree_size += this_tree_size + 1;
- 	  *max_nunits = this_max_nunits;
  	  while (!chains.is_empty ())
  	    chains.pop ().release ();
  	  return node;
--- 2666,2671 ----
*************** out:
*** 2963,2969 ****
  	  def_stmts2.create (1);
  	  def_stmts2.quick_push (oprnd_info->def_stmts[0]);
  	  child = vect_build_slp_tree (vinfo, def_stmts2,
- 				       &this_max_nunits,
  				       matches, limit,
  				       &this_tree_size, bst_map);
  	  if (child)
--- 2948,2953 ----
*************** out:
*** 2981,2987 ****
  		    .quick_push (std::make_pair (0u, 0u));
  		}
  	      SLP_TREE_CHILDREN (pnode).quick_push (child);
- 	      pnode->max_nunits = child->max_nunits;
  	      children.safe_push (pnode);
  	      oprnd_info->def_stmts = vNULL;
  	      continue;
--- 2965,2970 ----
*************** out:
*** 3036,3042 ****
        else if (least_upthread_swappable_op_distance != -1U)
  	least_upthread_swappable_op_distance++;
        child = vect_build_slp_tree (vinfo, oprnd_info->def_stmts,
- 				   &this_max_nunits,
  				   matches, limit,
  				   &this_tree_size, bst_map);
        least_upthread_swappable_op_distance = old_swap_distance;
--- 3019,3024 ----
*************** out:
*** 3098,3104 ****
  	  /* And try again with scratch 'matches' ... */
  	  bool *tem = XALLOCAVEC (bool, group_size);
  	  if ((child = vect_build_slp_tree (vinfo, oprnd_info->def_stmts,
- 					    &this_max_nunits,
  					    tem, limit,
  					    &this_tree_size, bst_map)) != NULL)
  	    {
--- 3080,3085 ----
*************** fail:
*** 3210,3216 ****
      }
  
    *tree_size += this_tree_size + 1;
-   *max_nunits = this_max_nunits;
  
    if (two_operators)
      {
--- 3191,3196 ----
*************** fail:
*** 3232,3237 ****
--- 3212,3218 ----
  	      SLP_TREE_VECTYPE (pnode) = vectype;
  	      SLP_TREE_CHILDREN (pnode).quick_push (child);
  	      SLP_TREE_CHILDREN (pnode).quick_push (child);
+ 	      SLP_TREE_REPRESENTATIVE (pnode) = NULL;
  	      lane_permutation_t& perm = SLP_TREE_LANE_PERMUTATION (pnode);
  	      children.safe_push (pnode);
  
*************** fail:
*** 3261,3266 ****
--- 3242,3248 ----
        SLP_TREE_CODE (node) = VEC_PERM_EXPR;
        SLP_TREE_CHILDREN (node).quick_push (one);
        SLP_TREE_CHILDREN (node).quick_push (two);
+       SLP_TREE_REPRESENTATIVE (node) = NULL;
        enum tree_code code0 = ERROR_MARK;
        enum tree_code ocode = ERROR_MARK;
        if (gassign *stmt = dyn_cast <gassign *> (stmts[0]->stmt))
*************** vect_print_slp_tree (dump_flags_t dump_k
*** 3357,3371 ****
    dump_metadata_t metadata (dump_kind, loc.get_impl_location ());
    dump_user_location_t user_loc = loc.get_user_location ();
    dump_printf_loc (metadata, user_loc,
! 		   "node%s %p (max_nunits=" HOST_WIDE_INT_PRINT_UNSIGNED
! 		   ", refcnt=%u)",
  		   SLP_TREE_DEF_TYPE (node) == vect_external_def
  		   ? " (external)"
  		   : (SLP_TREE_DEF_TYPE (node) == vect_constant_def
  		      ? " (constant)"
  		      : ""), (void *) node,
! 		   estimated_poly_value (node->max_nunits),
! 					 SLP_TREE_REF_COUNT (node));
    if (SLP_TREE_VECTYPE (node))
      dump_printf (metadata, " %T", SLP_TREE_VECTYPE (node));
    dump_printf (metadata, "%s",
--- 3339,3351 ----
    dump_metadata_t metadata (dump_kind, loc.get_impl_location ());
    dump_user_location_t user_loc = loc.get_user_location ();
    dump_printf_loc (metadata, user_loc,
! 		   "node%s %p (refcnt=%u)",
  		   SLP_TREE_DEF_TYPE (node) == vect_external_def
  		   ? " (external)"
  		   : (SLP_TREE_DEF_TYPE (node) == vect_constant_def
  		      ? " (constant)"
  		      : ""), (void *) node,
! 		   SLP_TREE_REF_COUNT (node));
    if (SLP_TREE_VECTYPE (node))
      dump_printf (metadata, " %T", SLP_TREE_VECTYPE (node));
    dump_printf (metadata, "%s",
*************** vect_print_slp_tree (dump_flags_t dump_k
*** 3373,3379 ****
    if (node->cycle_info.id != -1 || node->cycle_info.reduc_idx != -1)
      dump_printf (metadata, " cycle %d, link %d", node->cycle_info.id,
  		 node->cycle_info.reduc_idx);
!   dump_printf (metadata, "\n");
    if (SLP_TREE_DEF_TYPE (node) == vect_internal_def)
      {
        if (SLP_TREE_PERMUTE_P (node))
--- 3353,3362 ----
    if (node->cycle_info.id != -1 || node->cycle_info.reduc_idx != -1)
      dump_printf (metadata, " cycle %d, link %d", node->cycle_info.id,
  		 node->cycle_info.reduc_idx);
!   if (node->si)
!     dump_printf (metadata, " @%G", node->si);
!   else
!     dump_printf (metadata, "\n");
    if (SLP_TREE_DEF_TYPE (node) == vect_internal_def)
      {
        if (SLP_TREE_PERMUTE_P (node))
*************** optimize_load_redistribution_1 (scalar_s
*** 3820,3828 ****
  			 (void *) root);
  
        bool *matches = XALLOCAVEC (bool, group_size);
-       poly_uint64 max_nunits = 1;
        unsigned tree_size = 0, limit = 1;
!       node = vect_build_slp_tree (vinfo, stmts, &max_nunits,
  				  matches, &limit, &tree_size, bst_map);
        if (!node)
  	stmts.release ();
--- 3803,3810 ----
  			 (void *) root);
  
        bool *matches = XALLOCAVEC (bool, group_size);
        unsigned tree_size = 0, limit = 1;
!       node = vect_build_slp_tree (vinfo, stmts,
  				  matches, &limit, &tree_size, bst_map);
        if (!node)
  	stmts.release ();
*************** vect_analyze_slp_instance (vec_info *vin
*** 4004,4018 ****
  
  static slp_tree
  vect_build_slp_store_interleaving (vec<slp_tree> &rhs_nodes,
! 				   vec<stmt_vec_info> &scalar_stmts,
! 				   poly_uint64 max_nunits)
  {
    unsigned int group_size = scalar_stmts.length ();
    slp_tree node = vect_create_new_slp_node (scalar_stmts,
  					    SLP_TREE_CHILDREN
  					      (rhs_nodes[0]).length ());
    SLP_TREE_VECTYPE (node) = SLP_TREE_VECTYPE (rhs_nodes[0]);
-   node->max_nunits = max_nunits;
    for (unsigned l = 0;
         l < SLP_TREE_CHILDREN (rhs_nodes[0]).length (); ++l)
      {
--- 3986,3998 ----
  
  static slp_tree
  vect_build_slp_store_interleaving (vec<slp_tree> &rhs_nodes,
! 				   vec<stmt_vec_info> &scalar_stmts)
  {
    unsigned int group_size = scalar_stmts.length ();
    slp_tree node = vect_create_new_slp_node (scalar_stmts,
  					    SLP_TREE_CHILDREN
  					      (rhs_nodes[0]).length ());
    SLP_TREE_VECTYPE (node) = SLP_TREE_VECTYPE (rhs_nodes[0]);
    for (unsigned l = 0;
         l < SLP_TREE_CHILDREN (rhs_nodes[0]).length (); ++l)
      {
*************** vect_build_slp_store_interleaving (vec<s
*** 4022,4032 ****
        SLP_TREE_CHILDREN (node).quick_push (perm);
        SLP_TREE_LANE_PERMUTATION (perm).create (group_size);
        SLP_TREE_VECTYPE (perm) = SLP_TREE_VECTYPE (node);
-       perm->max_nunits = max_nunits;
        SLP_TREE_LANES (perm) = group_size;
!       /* ???  We should set this NULL but that's not expected.  */
!       SLP_TREE_REPRESENTATIVE (perm)
! 	= SLP_TREE_REPRESENTATIVE (SLP_TREE_CHILDREN (rhs_nodes[0])[l]);
        for (unsigned j = 0; j < rhs_nodes.length (); ++j)
  	{
  	  SLP_TREE_CHILDREN (perm)
--- 4002,4009 ----
        SLP_TREE_CHILDREN (node).quick_push (perm);
        SLP_TREE_LANE_PERMUTATION (perm).create (group_size);
        SLP_TREE_VECTYPE (perm) = SLP_TREE_VECTYPE (node);
        SLP_TREE_LANES (perm) = group_size;
!       SLP_TREE_REPRESENTATIVE (perm) = NULL;
        for (unsigned j = 0; j < rhs_nodes.length (); ++j)
  	{
  	  SLP_TREE_CHILDREN (perm)
*************** vect_build_slp_store_interleaving (vec<s
*** 4078,4084 ****
  	      SLP_TREE_LANES (permab) = n;
  	      SLP_TREE_LANE_PERMUTATION (permab).create (n);
  	      SLP_TREE_VECTYPE (permab) = SLP_TREE_VECTYPE (perm);
- 	      permab->max_nunits = max_nunits;
  	      /* ???  Should be NULL but that's not expected.  */
  	      SLP_TREE_REPRESENTATIVE (permab) = SLP_TREE_REPRESENTATIVE (perm);
  	      SLP_TREE_CHILDREN (permab).quick_push (a);
--- 4055,4060 ----
*************** vect_build_slp_store_interleaving (vec<s
*** 4149,4155 ****
  	  SLP_TREE_LANES (permab) = n;
  	  SLP_TREE_LANE_PERMUTATION (permab).create (n);
  	  SLP_TREE_VECTYPE (permab) = SLP_TREE_VECTYPE (perm);
- 	  permab->max_nunits = max_nunits;
  	  /* ???  Should be NULL but that's not expected.  */
  	  SLP_TREE_REPRESENTATIVE (permab) = SLP_TREE_REPRESENTATIVE (perm);
  	  SLP_TREE_CHILDREN (permab).quick_push (a);
--- 4125,4130 ----
*************** vect_build_slp_instance (vec_info *vinfo
*** 4241,4247 ****
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
-   poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
  
    slp_tree node = NULL;
--- 4216,4221 ----
*************** vect_build_slp_instance (vec_info *vinfo
*** 4251,4330 ****
        matches[1] = false;
      }
    else
!     node = vect_build_slp_tree (vinfo, scalar_stmts,
! 				&max_nunits, matches, limit,
  				&tree_size, bst_map);
    if (node != NULL)
      {
!       /* Calculate the unrolling factor based on the smallest type.  */
!       poly_uint64 unrolling_factor
! 	= calculate_unrolling_factor (max_nunits, group_size);
! 
!       if (maybe_ne (unrolling_factor, 1U)
! 	  && is_a <bb_vec_info> (vinfo))
! 	{
! 	  unsigned HOST_WIDE_INT const_max_nunits;
! 	  if (!max_nunits.is_constant (&const_max_nunits)
! 	      || const_max_nunits > group_size)
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "Build SLP failed: store group "
! 				 "size not a multiple of the vector size "
! 				 "in basic block SLP\n");
! 	      vect_free_slp_tree (node);
! 	      return false;
! 	    }
! 	  /* Fatal mismatch.  */
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP discovery succeeded but node needs "
! 			     "splitting\n");
! 	  memset (matches, true, group_size);
! 	  matches[group_size / const_max_nunits * const_max_nunits] = false;
! 	  vect_free_slp_tree (node);
! 	}
!       else
! 	{
! 	  /* Create a new SLP instance.  */
! 	  slp_instance new_instance = XNEW (class _slp_instance);
! 	  SLP_INSTANCE_TREE (new_instance) = node;
! 	  SLP_INSTANCE_LOADS (new_instance) = vNULL;
! 	  SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
! 	  SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
! 	  SLP_INSTANCE_KIND (new_instance) = kind;
! 	  new_instance->reduc_phis = NULL;
! 	  new_instance->cost_vec = vNULL;
! 	  new_instance->subgraph_entries = vNULL;
! 
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP size %u vs. limit %u.\n",
! 			     tree_size, max_tree_size);
  
! 	  vinfo->slp_instances.safe_push (new_instance);
  
! 	  /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	     the number of SLP lanes of the root in a few places.
! 	     Verify that assumption holds.  */
! 	  gcc_assert (SLP_TREE_LANES (SLP_INSTANCE_TREE (new_instance))
! 		       == group_size);
  
! 	  if (dump_enabled_p ())
! 	    {
! 	      if (kind == slp_inst_kind_reduc_group)
! 		dump_printf_loc (MSG_NOTE, vect_location,
! 				 "SLP discovery of size %d reduction group "
! 				 "succeeded\n", group_size);
! 	      dump_printf_loc (MSG_NOTE, vect_location,
! 			       "Final SLP tree for instance %p:\n",
! 			       (void *) new_instance);
! 	      vect_print_slp_graph (MSG_NOTE, vect_location,
! 				    SLP_INSTANCE_TREE (new_instance));
! 	    }
  
! 	  return true;
  	}
      }
    /* Failed to SLP.  */
  
--- 4225,4272 ----
        matches[1] = false;
      }
    else
!     node = vect_build_slp_tree (vinfo, scalar_stmts, matches, limit,
  				&tree_size, bst_map);
    if (node != NULL)
      {
!       /* Create a new SLP instance.  */
!       slp_instance new_instance = XNEW (class _slp_instance);
!       SLP_INSTANCE_TREE (new_instance) = node;
!       SLP_INSTANCE_LOADS (new_instance) = vNULL;
!       SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
!       SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
!       SLP_INSTANCE_KIND (new_instance) = kind;
!       new_instance->reduc_phis = NULL;
!       new_instance->cost_vec = vNULL;
!       new_instance->subgraph_entries = vNULL;
  
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "SLP size %u vs. limit %u.\n",
! 			 tree_size, max_tree_size);
  
!       vinfo->slp_instances.safe_push (new_instance);
  
!       /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	 the number of SLP lanes of the root in a few places.
! 	 Verify that assumption holds.  */
!       gcc_assert (SLP_TREE_LANES (SLP_INSTANCE_TREE (new_instance))
! 		  == group_size);
  
!       if (dump_enabled_p ())
! 	{
! 	  if (kind == slp_inst_kind_reduc_group)
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP discovery of size %d reduction group "
! 			     "succeeded\n", group_size);
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "Final SLP tree for instance %p:\n",
! 			   (void *) new_instance);
! 	  vect_print_slp_graph (MSG_NOTE, vect_location,
! 				SLP_INSTANCE_TREE (new_instance));
  	}
+ 
+       return true;
      }
    /* Failed to SLP.  */
  
*************** vect_analyze_slp_reduc_chain (loop_vec_i
*** 4569,4578 ****
  
        unsigned int group_size = scalar_stmts.length ();
        bool *matches = XALLOCAVEC (bool, group_size);
-       poly_uint64 max_nunits = 1;
        unsigned tree_size = 0;
!       slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts,
! 					   &max_nunits, matches, limit,
  					   &tree_size, bst_map);
        if (!node)
  	{
--- 4511,4518 ----
  
        unsigned int group_size = scalar_stmts.length ();
        bool *matches = XALLOCAVEC (bool, group_size);
        unsigned tree_size = 0;
!       slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, matches, limit,
  					   &tree_size, bst_map);
        if (!node)
  	{
*************** vect_analyze_slp_reduc_chain (loop_vec_i
*** 4712,4726 ****
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
-   poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
  
    /* ???  We need this only for SLP discovery.  */
    for (unsigned i = 0; i < scalar_stmts.length (); ++i)
      REDUC_GROUP_FIRST_ELEMENT (scalar_stmts[i]) = scalar_stmts[0];
  
!   slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts,
! 				       &max_nunits, matches, limit,
  				       &tree_size, bst_map);
  
    for (unsigned i = 0; i < scalar_stmts.length (); ++i)
--- 4652,4664 ----
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
    unsigned tree_size = 0;
  
    /* ???  We need this only for SLP discovery.  */
    for (unsigned i = 0; i < scalar_stmts.length (); ++i)
      REDUC_GROUP_FIRST_ELEMENT (scalar_stmts[i]) = scalar_stmts[0];
  
!   slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, matches, limit,
  				       &tree_size, bst_map);
  
    for (unsigned i = 0; i < scalar_stmts.length (); ++i)
*************** vect_analyze_slp_reduction (loop_vec_inf
*** 4860,4870 ****
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
-   poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
  
!   slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts,
! 				       &max_nunits, matches, limit,
  				       &tree_size, bst_map);
    if (node != NULL)
      {
--- 4798,4806 ----
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
    unsigned tree_size = 0;
  
!   slp_tree node = vect_build_slp_tree (vinfo, scalar_stmts, matches, limit,
  				       &tree_size, bst_map);
    if (node != NULL)
      {
*************** vect_analyze_slp_reduction_group (loop_v
*** 4932,4941 ****
      return false;
    if (!matches)
      matches = XALLOCAVEC (bool, group_size);
-   poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
!   slp_tree node = vect_build_slp_tree (loop_vinfo, scalar_stmts,
! 				       &max_nunits, matches, limit,
  				       &tree_size, bst_map);
    if (!node)
      return false;
--- 4868,4875 ----
      return false;
    if (!matches)
      matches = XALLOCAVEC (bool, group_size);
    unsigned tree_size = 0;
!   slp_tree node = vect_build_slp_tree (loop_vinfo, scalar_stmts, matches, limit,
  				       &tree_size, bst_map);
    if (!node)
      return false;
*************** vect_analyze_slp_instance (vec_info *vin
*** 5150,5156 ****
    /* Build the tree for the SLP instance.  */
    unsigned int group_size = scalar_stmts.length ();
    bool *matches = XALLOCAVEC (bool, group_size);
-   poly_uint64 max_nunits = 1;
    unsigned tree_size = 0;
    unsigned i;
  
--- 5084,5089 ----
*************** vect_analyze_slp_instance (vec_info *vin
*** 5161,5236 ****
        matches[1] = false;
      }
    else
!     node = vect_build_slp_tree (vinfo, scalar_stmts,
! 				&max_nunits, matches, limit,
  				&tree_size, bst_map);
    if (node != NULL)
      {
!       /* Calculate the unrolling factor based on the smallest type.  */
!       poly_uint64 unrolling_factor
! 	= calculate_unrolling_factor (max_nunits, group_size);
! 
!       if (maybe_ne (unrolling_factor, 1U)
! 	  && is_a <bb_vec_info> (vinfo))
! 	{
! 	  unsigned HOST_WIDE_INT const_max_nunits;
! 	  if (!max_nunits.is_constant (&const_max_nunits)
! 	      || const_max_nunits > group_size)
! 	    {
! 	      if (dump_enabled_p ())
! 		dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
! 				 "Build SLP failed: store group "
! 				 "size not a multiple of the vector size "
! 				 "in basic block SLP\n");
! 	      vect_free_slp_tree (node);
! 	      return false;
! 	    }
! 	  /* Fatal mismatch.  */
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP discovery succeeded but node needs "
! 			     "splitting\n");
! 	  memset (matches, true, group_size);
! 	  matches[group_size / const_max_nunits * const_max_nunits] = false;
! 	  vect_free_slp_tree (node);
! 	}
!       else
! 	{
! 	  /* Create a new SLP instance.  */
! 	  slp_instance new_instance = XNEW (class _slp_instance);
! 	  SLP_INSTANCE_TREE (new_instance) = node;
! 	  SLP_INSTANCE_LOADS (new_instance) = vNULL;
! 	  SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
! 	  SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
! 	  SLP_INSTANCE_KIND (new_instance) = kind;
! 	  new_instance->reduc_phis = NULL;
! 	  new_instance->cost_vec = vNULL;
! 	  new_instance->subgraph_entries = vNULL;
! 
! 	  if (dump_enabled_p ())
! 	    dump_printf_loc (MSG_NOTE, vect_location,
! 			     "SLP size %u vs. limit %u.\n",
! 			     tree_size, max_tree_size);
  
! 	  vinfo->slp_instances.safe_push (new_instance);
  
! 	  /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	     the number of SLP lanes of the root in a few places.
! 	     Verify that assumption holds.  */
! 	  gcc_assert (SLP_TREE_LANES (SLP_INSTANCE_TREE (new_instance))
! 		      == group_size);
  
! 	  if (dump_enabled_p ())
! 	    {
! 	      dump_printf_loc (MSG_NOTE, vect_location,
! 			       "Final SLP tree for instance %p:\n",
! 			       (void *) new_instance);
! 	      vect_print_slp_graph (MSG_NOTE, vect_location,
! 				    SLP_INSTANCE_TREE (new_instance));
! 	    }
  
! 	  return true;
  	}
      }
    /* Failed to SLP.  */
  
--- 5094,5136 ----
        matches[1] = false;
      }
    else
!     node = vect_build_slp_tree (vinfo, scalar_stmts, matches, limit,
  				&tree_size, bst_map);
    if (node != NULL)
      {
!       /* Create a new SLP instance.  */
!       slp_instance new_instance = XNEW (class _slp_instance);
!       SLP_INSTANCE_TREE (new_instance) = node;
!       SLP_INSTANCE_LOADS (new_instance) = vNULL;
!       SLP_INSTANCE_ROOT_STMTS (new_instance) = root_stmt_infos;
!       SLP_INSTANCE_REMAIN_DEFS (new_instance) = remain;
!       SLP_INSTANCE_KIND (new_instance) = kind;
!       new_instance->reduc_phis = NULL;
!       new_instance->cost_vec = vNULL;
!       new_instance->subgraph_entries = vNULL;
  
!       if (dump_enabled_p ())
! 	dump_printf_loc (MSG_NOTE, vect_location,
! 			 "SLP size %u vs. limit %u.\n",
! 			 tree_size, max_tree_size);
  
!       vinfo->slp_instances.safe_push (new_instance);
  
!       /* ???  We've replaced the old SLP_INSTANCE_GROUP_SIZE with
! 	 the number of SLP lanes of the root in a few places.
! 	 Verify that assumption holds.  */
!       gcc_assert (SLP_TREE_LANES (SLP_INSTANCE_TREE (new_instance))
! 		  == group_size);
  
!       if (dump_enabled_p ())
! 	{
! 	  dump_printf_loc (MSG_NOTE, vect_location,
! 			   "Final SLP tree for instance %p:\n",
! 			   (void *) new_instance);
! 	  vect_print_slp_graph (MSG_NOTE, vect_location,
! 				SLP_INSTANCE_TREE (new_instance));
  	}
+       return true;
      }
    /* Failed to SLP.  */
  
*************** vect_analyze_slp_instance (vec_info *vin
*** 5338,5344 ****
  	  /* Analyze the stored values and pinch them together with
  	     a permute node so we can preserve the whole store group.  */
  	  auto_vec<slp_tree> rhs_nodes;
- 	  poly_uint64 max_nunits = 1;
  
  	  unsigned int rhs_common_nlanes = 0;
  	  unsigned int start = 0, end = i;
--- 5238,5243 ----
*************** vect_analyze_slp_instance (vec_info *vin
*** 5349,5362 ****
  	      substmts.create (end - start);
  	      for (unsigned j = start; j < end; ++j)
  		substmts.quick_push (scalar_stmts[j]);
- 	      max_nunits = 1;
  	      node = vect_build_slp_tree (vinfo, substmts,
- 					  &max_nunits,
  					  matches, limit, &tree_size, bst_map);
  	      if (node)
  		{
  		  rhs_nodes.safe_push (node);
- 		  vect_update_max_nunits (&max_nunits, node->max_nunits);
  		  if (start == 0)
  		    rhs_common_nlanes = SLP_TREE_LANES (node);
  		  else if (rhs_common_nlanes != SLP_TREE_LANES (node))
--- 5248,5258 ----
*************** vect_analyze_slp_instance (vec_info *vin
*** 5420,5426 ****
  					       SLP_TREE_CHILDREN
  						 (rhs_nodes[0]).length ());
  	      SLP_TREE_VECTYPE (node) = SLP_TREE_VECTYPE (rhs_nodes[0]);
- 	      node->max_nunits = max_nunits;
  	      node->ldst_lanes = true;
  	      SLP_TREE_CHILDREN (node)
  		.reserve_exact (SLP_TREE_CHILDREN (rhs_nodes[0]).length ()
--- 5316,5321 ----
*************** vect_analyze_slp_instance (vec_info *vin
*** 5437,5444 ****
  		child->refcnt++;
  	    }
  	  else
! 	    node = vect_build_slp_store_interleaving (rhs_nodes, scalar_stmts,
! 						      max_nunits);
  
  	  while (!rhs_nodes.is_empty ())
  	    vect_free_slp_tree (rhs_nodes.pop ());
--- 5332,5338 ----
  		child->refcnt++;
  	    }
  	  else
! 	    node = vect_build_slp_store_interleaving (rhs_nodes, scalar_stmts);
  
  	  while (!rhs_nodes.is_empty ())
  	    vect_free_slp_tree (rhs_nodes.pop ());
*************** vect_lower_load_permutations (loop_vec_i
*** 5718,5729 ****
  	}
        for (unsigned i = 0; i < DR_GROUP_GAP (first); ++i)
  	stmts.quick_push (NULL);
-       poly_uint64 max_nunits = 1;
        bool *matches = XALLOCAVEC (bool, group_lanes);
        unsigned limit = 1;
        unsigned tree_size = 0;
!       slp_tree l0 = vect_build_slp_tree (loop_vinfo, stmts,
! 					 &max_nunits, matches, &limit,
  					 &tree_size, bst_map);
        gcc_assert (!SLP_TREE_LOAD_PERMUTATION (l0).exists ());
  
--- 5612,5621 ----
  	}
        for (unsigned i = 0; i < DR_GROUP_GAP (first); ++i)
  	stmts.quick_push (NULL);
        bool *matches = XALLOCAVEC (bool, group_lanes);
        unsigned limit = 1;
        unsigned tree_size = 0;
!       slp_tree l0 = vect_build_slp_tree (loop_vinfo, stmts, matches, &limit,
  					 &tree_size, bst_map);
        gcc_assert (!SLP_TREE_LOAD_PERMUTATION (l0).exists ());
  
*************** vect_lower_load_permutations (loop_vec_i
*** 5834,5840 ****
  	  SLP_TREE_LANE_PERMUTATION (p) = perm;
  	  SLP_TREE_VECTYPE (p) = SLP_TREE_VECTYPE (load);
  	  SLP_TREE_LANES (p) = perm.length ();
- 	  SLP_TREE_REPRESENTATIVE (p) = SLP_TREE_REPRESENTATIVE (load);
  	  /* ???  As we have scalar stmts for this intermediate permute we
  	     could CSE it via bst_map but we do not want to pick up
  	     another SLP node with a load permutation.  We instead should
--- 5726,5731 ----
*************** vect_lower_load_permutations (loop_vec_i
*** 5853,5858 ****
--- 5744,5750 ----
        SLP_TREE_LANE_PERMUTATION (load) = final_perm;
        SLP_TREE_CHILDREN (load).create (1);
        SLP_TREE_CHILDREN (load).quick_push (l0);
+       SLP_TREE_REPRESENTATIVE (load) = NULL;
      }
  }
  
*************** struct loop *
*** 6817,6824 ****
  vect_optimize_slp_pass::containing_loop (slp_tree node)
  {
    stmt_vec_info rep = SLP_TREE_REPRESENTATIVE (node);
    if (!rep)
!     return ENTRY_BLOCK_PTR_FOR_FN (cfun)->loop_father;
    return gimple_bb (vect_orig_stmt (rep)->stmt)->loop_father;
  }
  
--- 6709,6718 ----
  vect_optimize_slp_pass::containing_loop (slp_tree node)
  {
    stmt_vec_info rep = SLP_TREE_REPRESENTATIVE (node);
+   /* ???  This is imprecise, VEC_PERM nodes do not have a representative
+      but are laid out close to their children.  */
    if (!rep)
!     return m_vinfo->bbs[0]->loop_father;
    return gimple_bb (vect_orig_stmt (rep)->stmt)->loop_father;
  }
  
*************** vect_optimize_slp_pass::start_choosing_l
*** 7440,7449 ****
        auto &partition = m_partitions[vertex.partition];
        slp_tree node = vertex.node;
  
        if (stmt_vec_info rep = SLP_TREE_REPRESENTATIVE (node))
  	{
- 	  vertex.weight = vect_slp_node_weight (node);
- 
  	  /* We do not handle stores with a permutation, so all
  	     incoming permutations must have been materialized.
  
--- 7334,7343 ----
        auto &partition = m_partitions[vertex.partition];
        slp_tree node = vertex.node;
  
+       vertex.weight = vect_slp_node_weight (m_vinfo, node);
+ 
        if (stmt_vec_info rep = SLP_TREE_REPRESENTATIVE (node))
  	{
  	  /* We do not handle stores with a permutation, so all
  	     incoming permutations must have been materialized.
  
*************** vect_optimize_slp_pass::get_result_with_
*** 7993,7999 ****
  	  if (to_layout_i != 0)
  	    vect_slp_permute (m_perms[to_layout_i], stmts, true);
  	}
-       SLP_TREE_REPRESENTATIVE (result) = SLP_TREE_REPRESENTATIVE (node);
        SLP_TREE_LANES (result) = num_lanes;
        SLP_TREE_VECTYPE (result) = SLP_TREE_VECTYPE (node);
        result->vertex = -1;
--- 7887,7892 ----
*************** vect_cse_slp_node_parts (hash_set<slp_tr
*** 8575,8581 ****
        && SLP_TREE_SCALAR_STMTS (node)[0]
        /* Avoid touching loads which need care with load permutations
  	 and specialities like load-lane representations.  */
!       && !STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (node)))
      for (slp_tree cand
  	 : part_starts[gimple_uid (SLP_TREE_SCALAR_STMTS (node)[0]->stmt)])
        /* ???  There is a possible ordering/optimality problem in that
--- 8468,8475 ----
        && SLP_TREE_SCALAR_STMTS (node)[0]
        /* Avoid touching loads which need care with load permutations
  	 and specialities like load-lane representations.  */
!       && (SLP_TREE_PERMUTE_P (node)
! 	  || !STMT_VINFO_DATA_REF (SLP_TREE_REPRESENTATIVE (node))))
      for (slp_tree cand
  	 : part_starts[gimple_uid (SLP_TREE_SCALAR_STMTS (node)[0]->stmt)])
        /* ???  There is a possible ordering/optimality problem in that
*************** vect_update_slp_vf_for_node (slp_tree no
*** 8721,8736 ****
      vect_update_slp_vf_for_node (child, vf, visited);
  
    /* We do not visit SLP nodes for constants or externals - those neither
!      have a vector type set yet (vectorizable_* does this) nor do they
!      have max_nunits set.  Instead we rely on internal nodes max_nunit
!      to cover constant/external operands.
       Note that when we stop using fixed size vectors externs and constants
       shouldn't influence the (minimum) vectorization factor, instead
       vectorizable_* should honor the vectorization factor when trying to
       assign vector types to constants and externals and cause iteration
       to a higher vectorization factor when required.  */
    poly_uint64 node_vf
!     = calculate_unrolling_factor (node->max_nunits, SLP_TREE_LANES (node));
    vf = force_common_multiple (vf, node_vf);
  
    /* For permute nodes that are fed from externs or constants we have to
--- 8615,8633 ----
      vect_update_slp_vf_for_node (child, vf, visited);
  
    /* We do not visit SLP nodes for constants or externals - those neither
!      have a vector type set yet (vectorizable_* does this).
       Note that when we stop using fixed size vectors externs and constants
       shouldn't influence the (minimum) vectorization factor, instead
       vectorizable_* should honor the vectorization factor when trying to
       assign vector types to constants and externals and cause iteration
       to a higher vectorization factor when required.  */
+   tree vectype = SLP_TREE_VECTYPE (node);
+   if (!vectype)
+     /* OMP SIMD calls w/o LHS have no SLP_TREE_VECTYPE set.  */
+     return;
    poly_uint64 node_vf
!     = calculate_unrolling_factor (TYPE_VECTOR_SUBPARTS (vectype),
! 				  SLP_TREE_LANES (node));
    vf = force_common_multiple (vf, node_vf);
  
    /* For permute nodes that are fed from externs or constants we have to
*************** vect_update_slp_vf_for_node (slp_tree no
*** 8740,8746 ****
        if (SLP_TREE_DEF_TYPE (child) != vect_internal_def)
  	{
  	  poly_uint64 child_vf
! 	    = calculate_unrolling_factor (node->max_nunits,
  					  SLP_TREE_LANES (child));
  	  vf = force_common_multiple (vf, child_vf);
  	}
--- 8637,8643 ----
        if (SLP_TREE_DEF_TYPE (child) != vect_internal_def)
  	{
  	  poly_uint64 child_vf
! 	    = calculate_unrolling_factor (TYPE_VECTOR_SUBPARTS (vectype),
  					  SLP_TREE_LANES (child));
  	  vf = force_common_multiple (vf, child_vf);
  	}
*************** vect_slp_analyze_node_operations_1 (vec_
*** 8876,8881 ****
--- 8773,8779 ----
    /* Handle purely internal nodes.  */
    if (SLP_TREE_PERMUTE_P (node))
      {
+       gcc_checking_assert (!SLP_TREE_REPRESENTATIVE (node));
        if (!vectorizable_slp_permutation (vinfo, NULL, node, cost_vec))
  	return false;
  
*************** vect_scalar_ops_slice_hash::equal (const
*** 9036,9046 ****
    return true;
  }
  
  /* Compute the prologue cost for invariant or constant operands represented
     by NODE.  */
  
  static void
! vect_prologue_cost_for_slp (vec_info *vinfo, slp_tree node,
  			    stmt_vector_for_cost *cost_vec)
  {
    /* There's a special case of an existing vector, that costs nothing.  */
--- 8934,8966 ----
    return true;
  }
  
+ /* Like vect_get_num_copies but N copies of the vector might have
+    excess elements in the last vector.  Returns false if *NVECTORS
+    cannot be computed.  */
+ 
+ static bool
+ vect_get_num_copies_for_invariant (vec_info *vinfo, slp_tree node,
+ 				   unsigned *nvectors)
+ {
+   poly_uint64 vf;
+ 
+   if (loop_vec_info loop_vinfo = dyn_cast <loop_vec_info> (vinfo))
+     vf = LOOP_VINFO_VECT_FACTOR (loop_vinfo);
+   else
+     vf = 1;
+   vf *= SLP_TREE_LANES (node);
+ 
+   tree vectype = SLP_TREE_VECTYPE (node);
+   bool res = can_div_away_from_zero_p (vf, TYPE_VECTOR_SUBPARTS (vectype),
+ 				       nvectors);
+   return res;
+ }
+ 
  /* Compute the prologue cost for invariant or constant operands represented
     by NODE.  */
  
  static void
! vect_prologue_cost_for_slp (slp_tree node, unsigned nvectors,
  			    stmt_vector_for_cost *cost_vec)
  {
    /* There's a special case of an existing vector, that costs nothing.  */
*************** vect_prologue_cost_for_slp (vec_info *vi
*** 9054,9060 ****
    unsigned group_size = SLP_TREE_LANES (node);
    unsigned HOST_WIDE_INT const_nunits;
    unsigned nelt_limit;
-   unsigned nvectors = vect_get_num_copies (vinfo, node);
    auto ops = &SLP_TREE_SCALAR_OPS (node);
    auto_vec<unsigned int> starts (nvectors);
    if (TYPE_VECTOR_SUBPARTS (vectype).is_constant (&const_nunits)
--- 8974,8979 ----
*************** vect_slp_analyze_node_operations (vec_in
*** 9113,9119 ****
    int i, j;
    slp_tree child;
  
!   /* Assume we can code-generate all invariants.  */
    if (!node
        || SLP_TREE_DEF_TYPE (node) == vect_constant_def
        || SLP_TREE_DEF_TYPE (node) == vect_external_def)
--- 9032,9038 ----
    int i, j;
    slp_tree child;
  
!   /* Costing and analysis of invariants is delayed.  */
    if (!node
        || SLP_TREE_DEF_TYPE (node) == vect_constant_def
        || SLP_TREE_DEF_TYPE (node) == vect_external_def)
*************** vect_slp_analyze_node_operations (vec_in
*** 9216,9223 ****
  	      continue;
  	    }
  
! 	  /* And cost them.  */
! 	  vect_prologue_cost_for_slp (vinfo, child, cost_vec);
  	}
  
    /* If this node or any of its children can't be vectorized, try pruning
--- 9135,9145 ----
  	      continue;
  	    }
  
! 	  /* Make sure we can generate them and then cost them.  */
! 	  unsigned nvectors;
! 	  if (!vect_get_num_copies_for_invariant (vinfo, node, &nvectors))
! 	    return false;
! 	  vect_prologue_cost_for_slp (child, nvectors, cost_vec);
  	}
  
    /* If this node or any of its children can't be vectorized, try pruning
*************** vect_bb_slp_mark_live_stmts (bb_vec_info
*** 9314,9320 ****
  				       gimple_bb (last_stmt)))
  		    can_insert = false;
  		}
! 	      else if (!vect_stmt_dominates_stmt_p (last_stmt, use_stmt))
  		can_insert = false;
  	      if (!can_insert)
  		{
--- 9236,9245 ----
  				       gimple_bb (last_stmt)))
  		    can_insert = false;
  		}
! 	      /* As we instert after last_stmt it may not be the use_stmt
! 		 itself.  */
! 	      else if (last_stmt == use_stmt
! 		       || !vect_stmt_dominates_stmt_p (last_stmt, use_stmt))
  		can_insert = false;
  	      if (!can_insert)
  		{
*************** vect_create_constant_vectors (vec_info *
*** 10981,10987 ****
    /* We always want SLP_TREE_VECTYPE (op_node) here correctly set.  */
    vector_type = SLP_TREE_VECTYPE (op_node);
  
!   unsigned int number_of_vectors = vect_get_num_copies (vinfo, op_node);
    SLP_TREE_VEC_DEFS (op_node).create (number_of_vectors);
    auto_vec<tree> voprnds (number_of_vectors);
  
--- 10906,10915 ----
    /* We always want SLP_TREE_VECTYPE (op_node) here correctly set.  */
    vector_type = SLP_TREE_VECTYPE (op_node);
  
!   unsigned int number_of_vectors;
!   bool res = vect_get_num_copies_for_invariant (vinfo, op_node,
! 						&number_of_vectors);
!   gcc_assert (res);
    SLP_TREE_VEC_DEFS (op_node).create (number_of_vectors);
    auto_vec<tree> voprnds (number_of_vectors);
  
*************** vect_remove_slp_scalar_calls (vec_info *
*** 12471,12489 ****
  void
  vectorize_slp_instance_root_stmt (vec_info *vinfo, slp_tree node, slp_instance instance)
  {
-   gassign *rstmt = NULL;
- 
    if (instance->kind == slp_inst_kind_ctor)
      {
        if (SLP_TREE_VEC_DEFS (node).length () == 1)
  	{
! 	  tree vect_lhs = SLP_TREE_VEC_DEFS (node)[0];
  	  tree root_lhs = gimple_get_lhs (instance->root_stmts[0]->stmt);
  	  if (!useless_type_conversion_p (TREE_TYPE (root_lhs),
! 					  TREE_TYPE (vect_lhs)))
! 	    vect_lhs = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (root_lhs),
! 			       vect_lhs);
! 	  rstmt = gimple_build_assign (root_lhs, vect_lhs);
  	}
        else
  	{
--- 12399,12415 ----
  void
  vectorize_slp_instance_root_stmt (vec_info *vinfo, slp_tree node, slp_instance instance)
  {
    if (instance->kind == slp_inst_kind_ctor)
      {
+       tree new_def;
        if (SLP_TREE_VEC_DEFS (node).length () == 1)
  	{
! 	  new_def = SLP_TREE_VEC_DEFS (node)[0];
  	  tree root_lhs = gimple_get_lhs (instance->root_stmts[0]->stmt);
  	  if (!useless_type_conversion_p (TREE_TYPE (root_lhs),
! 					  TREE_TYPE (new_def)))
! 	    new_def = build1 (VIEW_CONVERT_EXPR, TREE_TYPE (root_lhs),
! 			       new_def);
  	}
        else
  	{
*************** vectorize_slp_instance_root_stmt (vec_in
*** 12498,12509 ****
  	     do not match.  */
  	  FOR_EACH_VEC_ELT (SLP_TREE_VEC_DEFS (node), j, child_def)
  	    CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, child_def);
- 	  tree lhs = gimple_get_lhs (instance->root_stmts[0]->stmt);
  	  tree rtype
  	    = TREE_TYPE (gimple_assign_rhs1 (instance->root_stmts[0]->stmt));
! 	  tree r_constructor = build_constructor (rtype, v);
! 	  rstmt = gimple_build_assign (lhs, r_constructor);
  	}
      }
    else if (instance->kind == slp_inst_kind_bb_reduc)
      {
--- 12424,12438 ----
  	     do not match.  */
  	  FOR_EACH_VEC_ELT (SLP_TREE_VEC_DEFS (node), j, child_def)
  	    CONSTRUCTOR_APPEND_ELT (v, NULL_TREE, child_def);
  	  tree rtype
  	    = TREE_TYPE (gimple_assign_rhs1 (instance->root_stmts[0]->stmt));
! 	  new_def = build_constructor (rtype, v);
  	}
+ 
+       gimple_stmt_iterator rgsi = gsi_for_stmt (instance->root_stmts[0]->stmt);
+       gimple_assign_set_rhs_from_tree (&rgsi, new_def);
+       update_stmt (gsi_stmt (rgsi));
+       return;
      }
    else if (instance->kind == slp_inst_kind_bb_reduc)
      {
*************** vectorize_slp_instance_root_stmt (vec_in
*** 12606,12616 ****
      }
    else
      gcc_unreachable ();
- 
-   gcc_assert (rstmt);
- 
-   gimple_stmt_iterator rgsi = gsi_for_stmt (instance->root_stmts[0]->stmt);
-   gsi_replace (&rgsi, rstmt, true);
  }
  
  struct slp_scc_info
--- 12535,12540 ----
*************** vect_schedule_slp (vec_info *vinfo, vec<
*** 12842,12849 ****
  	  if (place_only)
  	    {
  	      gimple *root_stmt = instance->root_stmts[0]->stmt;
! 	      res &= (!node->si || vect_stmt_dominates_stmt_p (node->si,
! 							       root_stmt));
  	    }
  	  else
  	    vectorize_slp_instance_root_stmt (vinfo, node, instance);
--- 12766,12776 ----
  	  if (place_only)
  	    {
  	      gimple *root_stmt = instance->root_stmts[0]->stmt;
! 	      res &= (!node->si
! 		      /* As we instert after node->si it may not be the
! 			 root_stmt itself.  */
! 		      || (node->si != root_stmt
! 			  && vect_stmt_dominates_stmt_p (node->si, root_stmt)));
  	    }
  	  else
  	    vectorize_slp_instance_root_stmt (vinfo, node, instance);
diff -Nrcpad gcc-17-20260816/gcc/tree-vect-stmts.cc gcc-17-20260823/gcc/tree-vect-stmts.cc
*** gcc-17-20260816/gcc/tree-vect-stmts.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-vect-stmts.cc	Sun Aug 23 22:32:19 2026
*************** vect_create_vectorized_demotion_stmts (v
*** 5160,5166 ****
  /* Create vectorized promotion statements for vector operands from VEC_OPRNDS0
     and VEC_OPRNDS1, for a binary operation associated with scalar statement
     STMT_INFO.  For multi-step conversions store the resulting vectors and
!    call the function recursively.  */
  
  static void
  vect_create_vectorized_promotion_stmts (vec_info *vinfo,
--- 5160,5167 ----
  /* Create vectorized promotion statements for vector operands from VEC_OPRNDS0
     and VEC_OPRNDS1, for a binary operation associated with scalar statement
     STMT_INFO.  For multi-step conversions store the resulting vectors and
!    call the function recursively.  When HALF is true only generate half
!    of the result.  */
  
  static void
  vect_create_vectorized_promotion_stmts (vec_info *vinfo,
*************** vect_create_vectorized_promotion_stmts (
*** 5169,5182 ****
  					stmt_vec_info stmt_info, tree vec_dest,
  					gimple_stmt_iterator *gsi,
  					code_helper ch1,
! 					code_helper ch2, int op_type)
  {
    int i;
    tree vop0, vop1, new_tmp1, new_tmp2;
    gimple *new_stmt1, *new_stmt2;
    vec<tree> vec_tmp = vNULL;
  
!   vec_tmp.create (vec_oprnds0->length () * 2);
    FOR_EACH_VEC_ELT (*vec_oprnds0, i, vop0)
      {
        if (op_type == binary_op)
--- 5170,5184 ----
  					stmt_vec_info stmt_info, tree vec_dest,
  					gimple_stmt_iterator *gsi,
  					code_helper ch1,
! 					code_helper ch2, int op_type,
! 					bool half)
  {
    int i;
    tree vop0, vop1, new_tmp1, new_tmp2;
    gimple *new_stmt1, *new_stmt2;
    vec<tree> vec_tmp = vNULL;
  
!   vec_tmp.create ((half ? 1 : 2) * vec_oprnds0->length ());
    FOR_EACH_VEC_ELT (*vec_oprnds0, i, vop0)
      {
        if (op_type == binary_op)
*************** vect_create_vectorized_promotion_stmts (
*** 5188,5210 ****
        new_stmt1 = vect_gen_widened_results_half (vinfo, ch1, vop0, vop1,
  						 op_type, vec_dest, gsi,
  						 stmt_info);
!       new_stmt2 = vect_gen_widened_results_half (vinfo, ch2, vop0, vop1,
! 						 op_type, vec_dest, gsi,
! 						 stmt_info);
!       if (is_gimple_call (new_stmt1))
! 	{
! 	  new_tmp1 = gimple_call_lhs (new_stmt1);
! 	  new_tmp2 = gimple_call_lhs (new_stmt2);
! 	}
!       else
  	{
! 	  new_tmp1 = gimple_assign_lhs (new_stmt1);
! 	  new_tmp2 = gimple_assign_lhs (new_stmt2);
  	}
  
!       /* Store the results for the next step.  */
!       vec_tmp.quick_push (new_tmp1);
!       vec_tmp.quick_push (new_tmp2);
      }
  
    vec_oprnds0->release ();
--- 5190,5209 ----
        new_stmt1 = vect_gen_widened_results_half (vinfo, ch1, vop0, vop1,
  						 op_type, vec_dest, gsi,
  						 stmt_info);
!       new_tmp1 = gimple_get_lhs (new_stmt1);
!       vec_tmp.quick_push (new_tmp1);
! 
!       if (vec_tmp.space (1))
  	{
! 	  new_stmt2 = vect_gen_widened_results_half (vinfo, ch2, vop0, vop1,
! 						     op_type, vec_dest, gsi,
! 						     stmt_info);
! 	  new_tmp2 = gimple_get_lhs (new_stmt2);
! 	  vec_tmp.quick_push (new_tmp2);
  	}
  
!       if (!vec_tmp.space (1))
! 	break;
      }
  
    vec_oprnds0->release ();
*************** vectorizable_conversion (vec_info *vinfo
*** 5475,5481 ****
  	{
  	  gcc_assert (converts.length () <= 2);
  	  if (converts.length () == 1)
! 	    code1 = converts[0].second;
  	  else
  	    {
  	      cvt_type = NULL_TREE;
--- 5474,5487 ----
  	{
  	  gcc_assert (converts.length () <= 2);
  	  if (converts.length () == 1)
! 	    {
! 	      code1 = converts[0].second;
! 	      if (CONVERT_EXPR_CODE_P (code)
! 		  && tree_nop_conversion_p (TREE_TYPE (vectype_out),
! 					    TREE_TYPE (vectype_in)))
! 		/* NOP conversions are handled by vectorizable_assignment.  */
! 		return false;
! 	    }
  	  else
  	    {
  	      cvt_type = NULL_TREE;
*************** vectorizable_conversion (vec_info *vinfo
*** 5753,5758 ****
--- 5759,5765 ----
  					    widen_or_narrow_float_p
  					    ? vectype_out : cvt_type);
  
+   unsigned num_vectors = vect_get_num_copies (vinfo, slp_node);
    switch (modifier)
      {
      case NONE:
*************** vectorizable_conversion (vec_info *vinfo
*** 5836,5845 ****
  					     stmt_info, this_dest, gsi, c1,
  					     op_type);
  	  else
  	    vect_create_vectorized_promotion_stmts (vinfo, &vec_oprnds0,
  						    &vec_oprnds1, stmt_info,
  						    this_dest, gsi,
! 						    c1, c2, op_type);
  	}
  
        FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
--- 5843,5859 ----
  					     stmt_info, this_dest, gsi, c1,
  					     op_type);
  	  else
+ 	    /* ???  For constant/external inputs we can end up with
+ 	       excess lanes.  When the number of inputs already match
+ 	       the number of required outputs request half of the
+ 	       lanes (gcc.dg/vect/O3-vect-pr32243.c).  Low coverage
+ 	       makes this likely incomplete.  */
  	    vect_create_vectorized_promotion_stmts (vinfo, &vec_oprnds0,
  						    &vec_oprnds1, stmt_info,
  						    this_dest, gsi,
! 						    c1, c2, op_type,
! 						    vec_oprnds0.length ()
! 						    == num_vectors);
  	}
  
        FOR_EACH_VEC_ELT (vec_oprnds0, i, vop0)
diff -Nrcpad gcc-17-20260816/gcc/tree-vectorizer.h gcc-17-20260823/gcc/tree-vectorizer.h
*** gcc-17-20260816/gcc/tree-vectorizer.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree-vectorizer.h	Sun Aug 23 22:32:19 2026
*************** struct _slp_tree {
*** 328,343 ****
    /* Nodes that contain def-stmts of this node statements operands.  */
    vec<slp_tree> children;
  
!   /* A group of scalar stmts to be vectorized together.  */
    vec<stmt_vec_info> stmts;
!   /* A group of scalar operands to be vectorized together.  */
    vec<tree> ops;
    /* A set of lane indices that are live and to be code-generated from
       this SLP node.  */
    vec<unsigned> live_lanes;
  
    /* The representative that should be used for analysis and
!      code generation.  */
    stmt_vec_info representative;
  
    struct {
--- 328,345 ----
    /* Nodes that contain def-stmts of this node statements operands.  */
    vec<slp_tree> children;
  
!   /* A group of scalar stmts to be vectorized together.  Unused when
!      def_type is vect_external_def or vect_costant_def.  */
    vec<stmt_vec_info> stmts;
!   /* A group of scalar operands to be vectorized together.  Unused
!      unless def_type is vect_external_def or vect_constant_def.  */
    vec<tree> ops;
    /* A set of lane indices that are live and to be code-generated from
       this SLP node.  */
    vec<unsigned> live_lanes;
  
    /* The representative that should be used for analysis and
!      code generation.  NULL when code is VEC_PERM_EXPR.  */
    stmt_vec_info representative;
  
    struct {
*************** struct _slp_tree {
*** 347,358 ****
        int reduc_idx;
    } cycle_info;
  
!   /* Load permutation relative to the stores, NULL if there is no
!      permutation.  */
    load_permutation_t load_permutation;
    /* Lane permutation of the operands scalar lanes encoded as pairs
       of { operand number, lane number }.  The number of elements
!      denotes the number of output lanes.  */
    lane_permutation_t lane_permutation;
  
    tree vectype;
--- 349,362 ----
        int reduc_idx;
    } cycle_info;
  
!   /* Load permutation mapping outgoing vector lanes to lanes of
!      the single DR group the load accesses.  NULL if there is no
!      permutation.  Unused when this is not a load.  */
    load_permutation_t load_permutation;
    /* Lane permutation of the operands scalar lanes encoded as pairs
       of { operand number, lane number }.  The number of elements
!      denotes the number of output lanes.  Unused unless code is
!      VEC_PERM_EXPR.  */
    lane_permutation_t lane_permutation;
  
    tree vectype;
*************** struct _slp_tree {
*** 364,377 ****
  
    /* Reference count in the SLP graph.  */
    unsigned int refcnt;
-   /* The maximum number of vector elements for the subtree rooted
-      at this node.  */
-   poly_uint64 max_nunits;
    /* The DEF type of this node.  */
    enum vect_def_type def_type;
    /* The number of scalar lanes produced by this node.  */
    unsigned int lanes;
!   /* The operation of this node.  */
    enum tree_code code;
    /* For gather/scatter memory operations the scale each offset element
       should be multiplied by before being added to the base.  */
--- 368,378 ----
  
    /* Reference count in the SLP graph.  */
    unsigned int refcnt;
    /* The DEF type of this node.  */
    enum vect_def_type def_type;
    /* The number of scalar lanes produced by this node.  */
    unsigned int lanes;
!   /* The operation of this node.  Either VEC_PERM_EXPR or ERROR_MARK.  */
    enum tree_code code;
    /* For gather/scatter memory operations the scale each offset element
       should be multiplied by before being added to the base.  */
*************** struct _slp_tree {
*** 385,390 ****
--- 386,392 ----
       as to avoid STLF fails because of related stores.  */
    bool avoid_stlf_fail;
  
+   /* The vertex index of this node when a full graph is built.  */
    int vertex;
  
    /* The kind of operation as determined by analysis and optional
*************** vect_get_num_copies (vec_info *vinfo, sl
*** 2359,2386 ****
    return vect_get_num_vectors (vf, vectype);
  }
  
- /* Update maximum unit count *MAX_NUNITS so that it accounts for
-    NUNITS.  *MAX_NUNITS can be 1 if we haven't yet recorded anything.  */
- 
- inline void
- vect_update_max_nunits (poly_uint64 *max_nunits, poly_uint64 nunits)
- {
-   /* All unit counts have the form vec_info::vector_size * X for some
-      rational X, so two unit sizes must have a common multiple.
-      Everything is a multiple of the initial value of 1.  */
-   *max_nunits = force_common_multiple (*max_nunits, nunits);
- }
- 
- /* Update maximum unit count *MAX_NUNITS so that it accounts for
-    the number of units in vector type VECTYPE.  *MAX_NUNITS can be 1
-    if we haven't yet recorded any vector types.  */
- 
- inline void
- vect_update_max_nunits (poly_uint64 *max_nunits, tree vectype)
- {
-   vect_update_max_nunits (max_nunits, TYPE_VECTOR_SUBPARTS (vectype));
- }
- 
  /* Return the vectorization factor that should be used for costing
     purposes while vectorizing the loop described by LOOP_VINFO.
     Pick a reasonable estimate if the vectorization factor isn't
--- 2361,2366 ----
diff -Nrcpad gcc-17-20260816/gcc/tree.cc gcc-17-20260823/gcc/tree.cc
*** gcc-17-20260816/gcc/tree.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree.cc	Sun Aug 23 22:32:19 2026
*************** real_zerop (const_tree expr)
*** 3326,3331 ****
--- 3326,3354 ----
      }
  }
  
+ /* Return true if EXPR is the real constant negative zero.  */
+ 
+ bool
+ real_negzerop (const_tree expr)
+ {
+   STRIP_ANY_LOCATION_WRAPPER (expr);
+ 
+   if (TREE_CODE (expr) == VECTOR_CST)
+     {
+       expr = uniform_vector_p (expr);
+       if (!expr)
+ 	return false;
+     }
+ 
+   if (TREE_CODE (expr) == COMPLEX_CST)
+     return real_negzerop (TREE_REALPART (expr))
+ 	   && real_negzerop (TREE_IMAGPART (expr));
+ 
+   return TREE_CODE (expr) == REAL_CST
+ 	  && REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (expr))
+ 	  && !(DECIMAL_FLOAT_MODE_P (TYPE_MODE (TREE_TYPE (expr))));
+ }
+ 
  /* Return true if EXPR is the real constant one in real or complex form.
     Trailing zeroes matter for decimal float constants, so don't return
     true for them.
*************** tree_nop_conversion_p (const_tree outer_
*** 12462,12467 ****
--- 12485,12503 ----
  	  || TREE_CODE (inner_type) == OFFSET_TYPE))
      return TYPE_PRECISION (outer_type) == TYPE_PRECISION (inner_type);
  
+   if (TYPE_MODE (outer_type) == BLKmode
+       && TYPE_MODE (inner_type) == BLKmode)
+     {
+       if (VECTOR_TYPE_P (outer_type)
+ 	  && VECTOR_TYPE_P (inner_type)
+ 	  && known_eq (TYPE_VECTOR_SUBPARTS (outer_type),
+ 		       TYPE_VECTOR_SUBPARTS (inner_type))
+ 	  && (TYPE_MODE (TREE_TYPE (outer_type))
+ 	      == TYPE_MODE (TREE_TYPE (inner_type))))
+ 	return true;
+       return false;
+     }
+ 
    /* Otherwise fall back on comparing machine modes (e.g. for
       aggregate types, floats).  */
    return TYPE_MODE (outer_type) == TYPE_MODE (inner_type);
diff -Nrcpad gcc-17-20260816/gcc/tree.h gcc-17-20260823/gcc/tree.h
*** gcc-17-20260816/gcc/tree.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/tree.h	Sun Aug 23 22:32:19 2026
*************** extern void omp_clause_range_check_faile
*** 1005,1011 ****
  
  /* True if an overflow is to be preserved for sanitization.  */
  #define TYPE_OVERFLOW_SANITIZED(TYPE)			\
!   (INTEGRAL_TYPE_P (TYPE)				\
     && !TYPE_OVERFLOW_WRAPS (TYPE)			\
     && (flag_sanitize & SANITIZE_SI_OVERFLOW))
  
--- 1005,1011 ----
  
  /* True if an overflow is to be preserved for sanitization.  */
  #define TYPE_OVERFLOW_SANITIZED(TYPE)			\
!   (ANY_INTEGRAL_TYPE_P (TYPE)				\
     && !TYPE_OVERFLOW_WRAPS (TYPE)			\
     && (flag_sanitize & SANITIZE_SI_OVERFLOW))
  
*************** extern tree decl_type_context (const_tre
*** 5693,5698 ****
--- 5693,5701 ----
  /* Return true if EXPR is the real constant zero.  */
  extern bool real_zerop (const_tree);
  
+ /* Return true if EXPR is the real constant negative zero.  */
+ extern bool real_negzerop (const_tree);
+ 
  /* Initialize the iterator I with arguments from function FNDECL  */
  
  inline void
diff -Nrcpad gcc-17-20260816/gcc/value-query.cc gcc-17-20260823/gcc/value-query.cc
*** gcc-17-20260816/gcc/value-query.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/value-query.cc	Sun Aug 23 22:32:19 2026
*************** along with GCC; see the file COPYING3.
*** 27,37 ****
--- 27,39 ----
  #include "gimple.h"
  #include "ssa.h"
  #include "tree-pretty-print.h"
+ #include "tree-ssanames.h"
  #include "fold-const.h"
  #include "value-query.h"
  #include "alloc-pool.h"
  #include "gimple-range.h"
  #include "value-range-storage.h"
+ #include "target.h"
  
  // range_query default methods.
  
*************** range_query::update_range_info (tree, co
*** 78,83 ****
--- 80,96 ----
  {
  }
  
+ // Default for resetting range info for NAME is to clear the oracles.
+ 
+ void
+ range_query::reset_range_info (tree name)
+ {
+   relation ().clear (name);
+   if (gori_ssa ())
+     gori_ssa ()->clear (name);
+   infer_oracle ().clear (name);
+ }
+ 
  // If the range of expr EXPR at STMT is a single value, return it.
  // Otherwise return NULL_TREE.
  
*************** range_query::get_tree_range (vrange &r,
*** 404,411 ****
        if (POLY_INT_CST_P (expr))
  	{
  	  unsigned int precision = TYPE_PRECISION (type);
! 	  r.set_varying (type);
! 	  r.update_bitmask ({ wi::zero (precision), get_nonzero_bits (expr) });
  	  return true;
  	}
        break;
--- 417,510 ----
        if (POLY_INT_CST_P (expr))
  	{
  	  unsigned int precision = TYPE_PRECISION (type);
! 	  signop sign = TYPE_SIGN (type);
! 	  bool have_poly_bound = targetm.poly_int_indeterminate_bound;
! 	  poly_uint64 indeterminate_bound;
! 
! 	  if (have_poly_bound)
! 	    indeterminate_bound = targetm.poly_int_indeterminate_bound ();
! 
! 	  auto val = wi::to_poly_wide (expr);
! 	  auto type_min = wi::to_wide (TYPE_MIN_VALUE (type));
! 	  auto type_max = wi::to_wide (TYPE_MAX_VALUE (type));
! 
! 	  /* Start with the invariant part of the poly-int, then account
! 	     for each coefficient below.
! 
! 	     The target hook gives a per-coefficient upper bound for the
! 	     indeterminate.  Since those indeterminates are unsigned and
! 	     nonnegative, a positive coefficient can only increase the upper
! 	     bound and a negative coefficient can only decrease the lower
! 	     bound.  The opposite bound is unaffected by that coefficient:
! 
! 		[A, +C] with C >= 0  => max += C * bound
! 		[A, -C] with C >= 0  => min -= C * bound.  */
! 	  wide_int bounds[2] = { val.coeffs[0], val.coeffs[0] };
! 	  bool ovf[2] = { false, false };
! 
! 	  for (unsigned int i = 1; i < NUM_POLY_INT_COEFFS; ++i)
! 	    {
! 	      const auto &coeff = val.coeffs[i];
! 	      if (wi::eq_p (coeff, 0))
! 		continue;
! 
! 	      /* Select the only bound affected by this coefficient.  A
! 		 negative coefficient contributes to the minimum and a positive
! 		 coefficient contributes to the maximum.  */
! 	      bool coeff_neg = wi::neg_p (coeff, sign);
! 	      wide_int &bound = bounds[coeff_neg ? 0 : 1];
! 	      bool &bound_ovf = ovf[coeff_neg ? 0 : 1];
! 
! 	      if (bound_ovf)
! 		continue;
! 
! 	      /* A missing hook, or a -1 bound for this coefficient, means the
! 		 indeterminate has no finite target-specific limit.  Treat that
! 		 like an overflow of the affected bound.  */
! 	      if (!have_poly_bound
! 		  || indeterminate_bound.coeffs[i] == HOST_WIDE_INT_M1U)
! 		bound_ovf = true;
! 	      else
! 		{
! 		  auto indeterminate
! 		    = wi::uhwi (indeterminate_bound.coeffs[i], precision);
! 		  wi::overflow_type mul_ovf = wi::OVF_NONE;
! 		  auto term = wi::mul (coeff, indeterminate, sign, &mul_ovf);
! 		  wi::overflow_type add_ovf = wi::OVF_NONE;
! 		  bound = wi::add (bound, term, sign, &add_ovf);
! 		  bound_ovf = (mul_ovf != wi::OVF_NONE
! 			       || add_ovf != wi::OVF_NONE);
! 		}
! 
! 	      if (TYPE_OVERFLOW_WRAPS (type) && bound_ovf)
! 		{
! 		  r.set_varying (type);
! 		  r.update_bitmask (irange_bitmask (wi::zero (precision),
! 						    get_nonzero_bits (expr)));
! 		  return true;
! 		}
! 
! 	      if (bound_ovf)
! 		{
! 		  if (coeff_neg)
! 		    bounds[0] = type_min;
! 		  else
! 		    bounds[1] = type_max;
! 		}
! 	    }
! 
! 	  /* Check that the target filled in sensible bounds information.  */
! 	  gcc_assert (wi::le_p (bounds[0], bounds[1], sign));
! 
! 	  irange &ir = as_a <irange> (r);
! 	  ir.set (type, bounds[0], bounds[1]);
! 
! 	  /* Preserve alignment/step information that is not visible in the
! 	     intervals.  For example, a poly-int like [8, 8] can
! 	     only produce multiples of 8, but the interval range might be
! 	     [8, 136], which also contains values with low bits set.  */
! 	  ir.update_bitmask (irange_bitmask (wi::zero (precision),
! 					     get_nonzero_bits (expr)));
  	  return true;
  	}
        break;
diff -Nrcpad gcc-17-20260816/gcc/value-query.h gcc-17-20260823/gcc/value-query.h
*** gcc-17-20260816/gcc/value-query.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/value-query.h	Sun Aug 23 22:32:19 2026
*************** public:
*** 79,84 ****
--- 79,86 ----
    virtual void update_range_info (tree name);
    // Provide a specific range update to NAME.
    virtual void update_range_info (tree name, const vrange &r);
+   // Reset range information for NAME.
+   virtual void reset_range_info (tree name);
  
    inline class relation_oracle &relation () const  { return *m_relation; }
    void create_relation_oracle (bool do_trans_p = true);
diff -Nrcpad gcc-17-20260816/gcc/value-relation.cc gcc-17-20260823/gcc/value-relation.cc
*** gcc-17-20260816/gcc/value-relation.cc	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/value-relation.cc	Sun Aug 23 22:32:19 2026
*************** equiv_oracle::equiv_oracle ()
*** 317,324 ****
    m_equiv_set = BITMAP_ALLOC (&m_bitmaps);
    bitmap_tree_view (m_equiv_set);
    obstack_init (&m_chain_obstack);
!   m_self_equiv.create (0);
!   m_self_equiv.safe_grow_cleared (num_ssa_names + 1);
    m_partial.create (0);
    m_partial.safe_grow_cleared (num_ssa_names + 1);
    // Create a bitmap to avoid registering multiple equivalences from a LHS.
--- 317,324 ----
    m_equiv_set = BITMAP_ALLOC (&m_bitmaps);
    bitmap_tree_view (m_equiv_set);
    obstack_init (&m_chain_obstack);
!   m_name_info.create (0);
!   m_name_info.safe_grow_cleared (num_ssa_names + 1);
    m_partial.create (0);
    m_partial.safe_grow_cleared (num_ssa_names + 1);
    // Create a bitmap to avoid registering multiple equivalences from a LHS.
*************** equiv_oracle::equiv_oracle ()
*** 332,338 ****
  equiv_oracle::~equiv_oracle ()
  {
    m_partial.release ();
!   m_self_equiv.release ();
    obstack_free (&m_chain_obstack, NULL);
    m_equiv.release ();
    bitmap_obstack_release (&m_bitmaps);
--- 332,338 ----
  equiv_oracle::~equiv_oracle ()
  {
    m_partial.release ();
!   m_name_info.release ();
    obstack_free (&m_chain_obstack, NULL);
    m_equiv.release ();
    bitmap_obstack_release (&m_bitmaps);
*************** equiv_oracle::partial_equiv (tree ssa1,
*** 451,456 ****
--- 451,477 ----
    return VREL_VARYING;
  }
  
+ void
+ equiv_oracle::register_equiv_block (unsigned v, unsigned bbi)
+ {
+   if (v >= m_name_info.length ())
+     m_name_info.safe_grow_cleared (num_ssa_names + 1);
+ 
+   if (!m_name_info[v].m_block_list)
+     m_name_info[v].m_block_list = BITMAP_ALLOC (&m_bitmaps);
+ 
+   bitmap_set_bit (m_name_info[v].m_block_list, bbi);
+ }
+ 
+ void
+ equiv_oracle::register_equiv_block (const_bitmap names, basic_block bb)
+ {
+   bitmap_iterator bi;
+   unsigned v;
+ 
+   EXECUTE_IF_SET_IN_BITMAP (names, 0, v, bi)
+     register_equiv_block (v, bb->index);
+ }
  
  // Find and return the equivalency set for SSA along the dominators of BB.
  // This is the external API.
*************** equiv_oracle::equiv_set (tree ssa, basic
*** 465,479 ****
  
    // Otherwise return a cached equiv set containing just this SSA.
    unsigned v = SSA_NAME_VERSION (ssa);
!   if (v >= m_self_equiv.length ())
!     m_self_equiv.safe_grow_cleared (num_ssa_names + 1);
  
!   if (!m_self_equiv[v])
      {
!       m_self_equiv[v] = BITMAP_ALLOC (&m_bitmaps);
!       bitmap_set_bit (m_self_equiv[v], v);
      }
!   return m_self_equiv[v];
  }
  
  // Query if there is a relation (equivalence) between 2 SSA_NAMEs.
--- 486,500 ----
  
    // Otherwise return a cached equiv set containing just this SSA.
    unsigned v = SSA_NAME_VERSION (ssa);
!   if (v >= m_name_info.length ())
!     m_name_info.safe_grow_cleared (num_ssa_names + 1);
  
!   if (!m_name_info[v].m_self_equiv)
      {
!       m_name_info[v].m_self_equiv = BITMAP_ALLOC (&m_bitmaps);
!       bitmap_set_bit (m_name_info[v].m_self_equiv, v);
      }
!   return m_name_info[v].m_self_equiv;
  }
  
  // Query if there is a relation (equivalence) between 2 SSA_NAMEs.
*************** equiv_oracle::register_equiv (basic_bloc
*** 549,554 ****
--- 570,577 ----
      {
        bitmap_set_bit (equiv->m_names, v);
        bitmap_set_bit (m_equiv[bb->index]->m_names, v);
+       // Add BB to V.
+       register_equiv_block (v, bb->index);
        return NULL;
      }
  
*************** equiv_oracle::register_equiv (basic_bloc
*** 557,562 ****
--- 580,587 ----
    bitmap b = BITMAP_ALLOC (&m_bitmaps);
    valid_equivs (b, equiv->m_names, bb);
    bitmap_set_bit (b, v);
+   // Add BB to the all the equiv names.
+   register_equiv_block (b, bb);
    return b;
  }
  
*************** equiv_oracle::register_equiv (basic_bloc
*** 578,585 ****
        if (equiv_2->m_bb == bb)
  	bitmap_clear (equiv_2->m_names);
        else
! 	// Ensure the new names are in the summary for BB.
! 	bitmap_ior_into (m_equiv[bb->index]->m_names, equiv_1->m_names);
        return NULL;
      }
    // If equiv_2 is in BB, use it for the combined set.
--- 603,614 ----
        if (equiv_2->m_bb == bb)
  	bitmap_clear (equiv_2->m_names);
        else
! 	{
! 	  // Ensure the new names are in the summary for BB.
! 	  bitmap_ior_into (m_equiv[bb->index]->m_names, equiv_1->m_names);
! 	  // Add BB to the names in equiv2.
! 	  register_equiv_block (equiv_2->m_names, bb);
! 	}
        return NULL;
      }
    // If equiv_2 is in BB, use it for the combined set.
*************** equiv_oracle::register_equiv (basic_bloc
*** 588,593 ****
--- 617,624 ----
        valid_equivs (equiv_2->m_names, equiv_1->m_names, bb);
        // Ensure the new names are in the summary.
        bitmap_ior_into (m_equiv[bb->index]->m_names, equiv_2->m_names);
+       // Add BB to the names in equiv1.
+       register_equiv_block (equiv_1->m_names, bb);
        return NULL;
      }
  
*************** equiv_oracle::register_equiv (basic_bloc
*** 595,600 ****
--- 626,633 ----
    bitmap b = BITMAP_ALLOC (&m_bitmaps);
    valid_equivs (b, equiv_1->m_names, bb);
    valid_equivs (b, equiv_2->m_names, bb);
+   // Add BB to the all the equiv names.
+   register_equiv_block (b, bb);
    return b;
  }
  
*************** equiv_oracle::register_initial_def (tree
*** 621,626 ****
--- 654,694 ----
    add_equiv_to_block (bb, equiv_set);
  }
  
+ // Clear the equivalence lists and partial equivalencs for NAME.
+ 
+ void
+ equiv_oracle::clear (tree name)
+ {
+   unsigned v = SSA_NAME_VERSION (name);
+   // Remove NAME from any blocks it is an equivalence in.
+   if (bitmap_bit_p (m_equiv_set, v))
+     {
+       gcc_checking_assert (m_name_info[v].m_block_list);
+       bitmap_iterator bi;
+       unsigned bbi;
+ 
+       EXECUTE_IF_SET_IN_BITMAP (m_name_info[v].m_block_list, 0, bbi, bi)
+ 	{
+ 	  if (bbi >= m_equiv.length ())
+ 	    break;
+ 	  if (!m_equiv[bbi])
+ 	    continue;
+ 	  equiv_chain *ptr = m_equiv[bbi]->find (v);
+ 	  if (ptr)
+ 	    {
+ 	      bitmap_clear_bit (ptr->m_names, v);
+ 	      bitmap_clear_bit (m_equiv[bbi]->m_names, v);
+ 	    }
+ 	}
+       bitmap_clear_bit (m_equiv_set, v);
+       bitmap_clear (m_name_info[v].m_block_list);
+     }
+   // Eliminate any partial equivs.
+   if (v < m_partial.length ())
+     m_partial[v].members = NULL;
+ }
+ 
+ 
  // Register an equivalence between SSA1 and SSA2 in block BB.
  // The equivalence oracle maintains a vector of equivalencies indexed by basic
  // block. When an equivalence between SSA1 and SSA2 is registered in block BB,
*************** equiv_oracle::add_equiv_to_block (basic_
*** 715,720 ****
--- 783,790 ----
    ptr->m_next = m_equiv[bb->index]->m_next;
    m_equiv[bb->index]->m_next = ptr;
    bitmap_ior_into (m_equiv[bb->index]->m_names, equiv_set);
+   // Add BB to the equiv set.
+   register_equiv_block (equiv_set, bb);
  }
  
  // Make sure the BB vector is big enough and grow it if needed.
*************** dom_oracle::dom_oracle (bool do_trans_p)
*** 1067,1072 ****
--- 1137,1144 ----
    m_relations.create (0);
    m_relations.safe_grow_cleared (last_basic_block_for_fn (cfun) + 1);
    m_relation_set = BITMAP_ALLOC (&m_bitmaps);
+   m_block_list.create (0);
+   m_block_list.safe_grow_cleared (num_ssa_names + 1);
    m_tmp = BITMAP_ALLOC (&m_bitmaps);
    m_tmp2 = BITMAP_ALLOC (&m_bitmaps);
  }
*************** dom_oracle::dom_oracle (bool do_trans_p)
*** 1075,1083 ****
--- 1147,1211 ----
  
  dom_oracle::~dom_oracle ()
  {
+   m_block_list.release ();
    m_relations.release ();
  }
  
+ // Remove any relations with NAME from this list.
+ 
+ void
+ relation_chain_head::clear (tree name)
+ {
+   unsigned v = SSA_NAME_VERSION (name);
+   if (!m_names || !bitmap_bit_p (m_names, v))
+     return;
+ 
+   relation_chain *ptr, *last = NULL;;
+ 
+   for (ptr = m_head; ptr; ptr = ptr->m_next)
+     {
+       tree op1 = ptr->op1 ();
+       tree op2 = ptr->op2 ();
+       // Delink any elements with NAME.
+       if (op1 == name || op2 == name)
+ 	{
+ 	  if (!last)
+ 	    m_head = ptr->m_next;
+ 	  else
+ 	    last->m_next = ptr->m_next;
+ 	  m_num_relations--;
+ 	}
+       else
+ 	last = ptr;
+     }
+   // And remove name from the possible relations in this block bitfield.
+   bitmap_clear_bit (m_names, v);
+ }
+ 
+ // Remove any relations involving NAME from the DOM oracle
+ 
+ void
+ dom_oracle::clear (tree name)
+ {
+   equiv_oracle::clear (name);
+   unsigned v = SSA_NAME_VERSION (name);
+   if (bitmap_bit_p (m_relation_set, v))
+     {
+       gcc_checking_assert (m_block_list[v]);
+       bitmap_iterator bi;
+       unsigned bbi;
+ 
+       EXECUTE_IF_SET_IN_BITMAP (m_block_list[v], 0, bbi, bi)
+ 	{
+ 	  if (bbi >= m_relations.length())
+ 	    break;
+ 	  m_relations[bbi].clear (name);
+ 	}
+       bitmap_clear_bit (m_relation_set, v);
+       bitmap_clear (m_block_list[v]);
+     }
+ }
+ 
  // Register relation K between ssa_name OP1 and OP2 on STMT.
  // Return false if no new relation is added.
  
*************** dom_oracle::record (basic_block bb, rela
*** 1184,1189 ****
--- 1312,1329 ----
      }
  }
  
+ void
+ dom_oracle::record_relation_block (unsigned v, unsigned bbi)
+ {
+   if (v>= m_block_list.length ())
+     m_block_list.safe_grow_cleared (num_ssa_names + 1);
+ 
+   if (!m_block_list[v])
+     m_block_list[v] = BITMAP_ALLOC (&m_bitmaps);
+ 
+   bitmap_set_bit (m_block_list[v], bbi);
+ }
+ 
  // Register relation K between OP1 and OP2 in block BB by creating a new
  // record.  It is an error for there to be an existing record.
  // Return the record, or NULL if no record was created.
*************** dom_oracle::create_relation_in_bb (basic
*** 1221,1226 ****
--- 1361,1368 ----
    bitmap_set_bit (bm, v2);
    bitmap_set_bit (m_relation_set, v1);
    bitmap_set_bit (m_relation_set, v2);
+   record_relation_block (v1, bbi);
+   record_relation_block (v2, bbi);
  
    ptr = (relation_chain *) obstack_alloc (&m_chain_obstack,
  					  sizeof (relation_chain));
*************** path_oracle::~path_oracle ()
*** 1728,1733 ****
--- 1870,1891 ----
    bitmap_obstack_release (&m_bitmaps);
  }
  
+ // Clear any range info and relations associated with NAME.
+ 
+ void
+ path_oracle::clear (tree name)
+ {
+   if (m_root)
+     m_root->clear (name);
+ 
+   m_relations.clear (name);
+ 
+   unsigned v = SSA_NAME_VERSION (name);
+   equiv_chain *ptr = m_equiv.find (v);
+   if (ptr)
+     bitmap_clear_bit (ptr->m_names, v);
+ }
+ 
  // Return the equiv set for SSA, and if there isn't one, check for equivs
  // starting in block BB.
  
diff -Nrcpad gcc-17-20260816/gcc/value-relation.h gcc-17-20260823/gcc/value-relation.h
*** gcc-17-20260816/gcc/value-relation.h	Sun Aug 16 22:32:14 2026
--- gcc-17-20260823/gcc/value-relation.h	Sun Aug 23 22:32:19 2026
*************** public:
*** 110,115 ****
--- 110,118 ----
    relation_kind query (edge e, tree ssa1, tree ssa2);
    virtual relation_kind query (basic_block, tree, tree) { return VREL_VARYING; }
  
+   // Remove relations for an SSA_NAME
+   virtual void clear (tree) { }
+ 
    virtual void dump (FILE *, basic_block) const { }
    virtual void dump (FILE *) const  { }
    void debug () const;
*************** public:
*** 174,179 ****
--- 177,184 ----
    relation_kind partial_equiv (tree ssa1, tree ssa2, tree *base = NULL) const;
    relation_kind query (basic_block, tree, tree) override;
    relation_kind query (basic_block, const_bitmap, const_bitmap) override;
+ 
+   virtual void clear (tree name);
    void dump (FILE *f, basic_block bb) const override;
    void dump (FILE *f) const override;
  
*************** protected:
*** 186,192 ****
  private:
    bitmap m_equiv_set;	// Index by ssa-name. true if an equivalence exists.
    vec <equiv_chain *> m_equiv;	// Index by BB.  list of equivalences.
!   vec <bitmap> m_self_equiv;  // Index by ssa-name, self equivalency set.
    vec <pe_slice> m_partial;  // Partial equivalencies.
  
    void limit_check (basic_block bb = NULL);
--- 191,203 ----
  private:
    bitmap m_equiv_set;	// Index by ssa-name. true if an equivalence exists.
    vec <equiv_chain *> m_equiv;	// Index by BB.  list of equivalences.
!   class name_info
!   {
!   public:
!     bitmap m_self_equiv;	// Self equivalency set.
!     bitmap m_block_list;	// BB's name occurs in equivalencies.
!   };
!   vec <name_info> m_name_info;	// Index by ssa-name.
    vec <pe_slice> m_partial;  // Partial equivalencies.
  
    void limit_check (basic_block bb = NULL);
*************** private:
*** 196,201 ****
--- 207,216 ----
    bitmap register_equiv (basic_block bb, unsigned v, equiv_chain *equiv_1);
    bitmap register_equiv (basic_block bb, equiv_chain *equiv_1,
  			 equiv_chain *equiv_2);
+ 
+   void register_equiv_block (unsigned v, unsigned bbi);
+   void register_equiv_block (const_bitmap equiv, basic_block bb);
+ 
    void register_initial_def (tree ssa);
    void add_equiv_to_block (basic_block bb, bitmap equiv);
  };
*************** public:
*** 209,214 ****
--- 224,230 ----
    class relation_chain *m_head; // List of relations in block.
    int m_num_relations;		// Number of relations in block.
    relation_kind find_relation (const_bitmap b1, const_bitmap b2) const;
+   void clear (tree name);
  };
  
  // A relation oracle maintains a set of relations between ssa_names using the
*************** public:
*** 234,239 ****
--- 250,257 ----
    relation_kind query (basic_block bb, const_bitmap b1, const_bitmap b2)
      final override;
  
+   virtual void clear (tree name);
+ 
    void dump (FILE *f, basic_block bb) const final override;
    void dump (FILE *f) const final override;
  protected:
*************** protected:
*** 243,248 ****
--- 261,267 ----
    bitmap m_tmp, m_tmp2;
    bitmap m_relation_set;  // Index by ssa-name. True if a relation exists
    vec <relation_chain_head> m_relations;  // Index by BB, list of relations.
+   vec <bitmap> m_block_list;	// Index by ssa-name.  Blocks with relations.
    relation_kind find_relation_block (unsigned bb, const_bitmap b1,
  				     const_bitmap b2) const;
    relation_kind find_relation_block (int bb, tree ssa1, tree ssa2,
*************** protected:
*** 252,257 ****
--- 271,277 ----
  					 tree op1, tree op2);
    relation_chain *search_and_merge_relation (basic_block bb, relation_kind k,
  					     tree op1, tree op2);
+   void record_relation_block (unsigned v, unsigned bbi);
    void register_transitives (basic_block, const class value_relation &);
    relation_kind recomputed_relation (basic_block, edge, tree, tree) const;
  };
*************** public:
*** 284,289 ****
--- 304,312 ----
    relation_kind query (basic_block, const_bitmap, const_bitmap) final override;
    void reset_path (relation_oracle *oracle = NULL);
    void set_root_oracle (relation_oracle *oracle) { m_root = oracle; }
+ 
+   virtual void clear (tree name);
+ 
    void dump (FILE *, basic_block) const final override;
    void dump (FILE *) const final override;
  private:
diff -Nrcpad gcc-17-20260816/libcpp/ChangeLog gcc-17-20260823/libcpp/ChangeLog
*** gcc-17-20260816/libcpp/ChangeLog	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libcpp/ChangeLog	Sun Aug 23 22:32:19 2026
***************
*** 1,3 ****
--- 1,18 ----
+ 2026-08-21  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* lex.cc (search_line_neon): New optimized AdvSIMD implementation.
+ 
+ 2026-08-20  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* lex.cc (search_line_sve): Improve.
+ 
+ 2026-08-19  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	PR target/126935
+ 	* lex.cc (HWCAP_SVE): Define if not already defined.
+ 	(init_vectorized_lexer): Require HWCAP_SVE as well as
+ 	HWCAP2_SVE2.
+ 
  2026-08-13  Kyrylo Tkachov  <ktkachov@nvidia.com>
  
  	* configure.ac: Test whether the AArch64 SVE2 lexer can be built.
diff -Nrcpad gcc-17-20260816/libcpp/lex.cc gcc-17-20260823/libcpp/lex.cc
*** gcc-17-20260816/libcpp/lex.cc	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libcpp/lex.cc	Sun Aug 23 22:32:19 2026
*************** search_line_fast (const uchar *s, const
*** 644,745 ****
  #elif defined (__ARM_NEON) && defined (__ARM_64BIT_STATE)
  #include "arm_neon.h"
  
! /* This doesn't have to be the exact page size, but no system may use
!    a size smaller than this.  ARMv8 requires a minimum page size of
!    4k.  The impact of being conservative here is a small number of
!    cases will take the slightly slower entry path into the main
!    loop.  */
  
! #define AARCH64_MIN_PAGE_SIZE 4096
  
! static const uchar *
! search_line_neon (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
! {
!   const uint8x16_t repl_nl = vdupq_n_u8 ('\n');
!   const uint8x16_t repl_cr = vdupq_n_u8 ('\r');
!   const uint8x16_t repl_bs = vdupq_n_u8 ('\\');
!   const uint8x16_t repl_qm = vdupq_n_u8 ('?');
!   const uint8x16_t xmask = (uint8x16_t) vdupq_n_u64 (0x8040201008040201ULL);
  
! #ifdef __ARM_BIG_ENDIAN
!   const int16x8_t shift = {8, 8, 8, 8, 0, 0, 0, 0};
! #else
!   const int16x8_t shift = {0, 0, 0, 0, 8, 8, 8, 8};
! #endif
  
!   unsigned int found;
!   const uint8_t *p;
!   uint8x16_t data;
!   uint8x16_t t;
!   uint16x8_t m;
!   uint8x16_t u, v, w;
  
!   /* Align the source pointer.  */
!   p = (const uint8_t *)((uintptr_t)s & -16);
  
!   /* Assuming random string start positions, with a 4k page size we'll take
!      the slow path about 0.37% of the time.  */
!   if (__builtin_expect ((AARCH64_MIN_PAGE_SIZE
! 			 - (((uintptr_t) s) & (AARCH64_MIN_PAGE_SIZE - 1)))
! 			< 16, 0))
!     {
!       /* Slow path: the string starts near a possible page boundary.  */
!       uint32_t misalign, mask;
  
!       misalign = (uintptr_t)s & 15;
!       mask = (-1u << misalign) & 0xffff;
!       data = vld1q_u8 (p);
!       t = vceqq_u8 (data, repl_nl);
!       u = vceqq_u8 (data, repl_cr);
!       v = vorrq_u8 (t, vceqq_u8 (data, repl_bs));
!       w = vorrq_u8 (u, vceqq_u8 (data, repl_qm));
!       t = vorrq_u8 (v, w);
!       t = vandq_u8 (t, xmask);
!       m = vpaddlq_u8 (t);
!       m = vshlq_u16 (m, shift);
!       found = vaddvq_u16 (m);
!       found &= mask;
!       if (found)
! 	return (const uchar*)p + __builtin_ctz (found);
!     }
!   else
      {
!       data = vld1q_u8 ((const uint8_t *) s);
!       t = vceqq_u8 (data, repl_nl);
!       u = vceqq_u8 (data, repl_cr);
!       v = vorrq_u8 (t, vceqq_u8 (data, repl_bs));
!       w = vorrq_u8 (u, vceqq_u8 (data, repl_qm));
!       t = vorrq_u8 (v, w);
!       if (__builtin_expect (vpaddd_u64 ((uint64x2_t)t) != 0, 0))
! 	goto done;
      }
- 
-   do
-     {
-       p += 16;
-       data = vld1q_u8 (p);
-       t = vceqq_u8 (data, repl_nl);
-       u = vceqq_u8 (data, repl_cr);
-       v = vorrq_u8 (t, vceqq_u8 (data, repl_bs));
-       w = vorrq_u8 (u, vceqq_u8 (data, repl_qm));
-       t = vorrq_u8 (v, w);
-     } while (!vpaddd_u64 ((uint64x2_t)t));
- 
- done:
-   /* Now that we've found the terminating substring, work out precisely where
-      we need to stop.  */
-   t = vandq_u8 (t, xmask);
-   m = vpaddlq_u8 (t);
-   m = vshlq_u16 (m, shift);
-   found = vaddvq_u16 (m);
-   return (((((uintptr_t) p) < (uintptr_t) s) ? s : (const uchar *)p)
- 	  + __builtin_ctz (found));
  }
  
  #ifdef HAVE_SVE2
  #include <arm_sve.h>
  #include <sys/auxv.h>
  
  #ifndef HWCAP2_SVE2
  #define HWCAP2_SVE2 (1 << 1)
  #endif
--- 644,707 ----
  #elif defined (__ARM_NEON) && defined (__ARM_64BIT_STATE)
  #include "arm_neon.h"
  
! /* A fast AdvSIMD scanner implementation using table lookup.
  
!    Lookup the low 4 bits of each character using TBL and compare the
!    result with the original input.  The lookup table contains the 4
!    search characters at entries MOD 16, so a match results in the same
!    character.  This works because the low 4 bits of the search
!    characters are unique.
  
!    Typical statistics for number of characters till a match:
!     1-15: 30.9%
!    16-31: 22.2%
!    32-47: 18.3%
!    48-63: 14.1%
!    64-79: 13.0%
!    80-95:  1.1%
!      >96:  0.3%
  
!    To get good performance, what matters is to quickly get the match result
!    for the first few vectors with minimal initialization overhead.
!    We simply loop until a match is found even if the input pointer is
!    unaligned or close to the end.  Since this may overread, it relies on
!    *end containing a match and CPP_BUFFER_PADDING >= 16.  */
  
! static_assert (CPP_BUFFER_PADDING >= 16, "");
  
! /* TBL lookup with each search char at (ch % 16).  Avoid matching NUL by
!    setting the first entry to 1.  */
! static const uint8_t table[16] =
!   { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, '\n', 0, '\\', '\r', 0, '?' };
  
! static const uchar *
! search_line_neon (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
! {
!   uint8x16_t d, tab, m;
!   uint16x8_t t;
!   uint64_t mask;
!   m = vdupq_n_u8 (0xf);
!   tab = vld1q_u8 (table);
!   d = vld1q_u8 (s);
  
!   while (1)
      {
!       t = (uint16x8_t) vceqq_u8 (vqtbl1q_u8 (tab, vandq_u8 (d, m)), d);
!       mask = vget_lane_u64 ((uint64x1_t)vaddhn_u16 (t, t), 0);
!       if (mask != 0)
! 	return s + (__builtin_ctzl (mask & 0x1111111111111111UL) >> 2);
!       s += 16;
!       d = vld1q_u8 (s);
      }
  }
  
  #ifdef HAVE_SVE2
  #include <arm_sve.h>
  #include <sys/auxv.h>
  
+ #ifndef HWCAP_SVE
+ #define HWCAP_SVE (1 << 22)
+ #endif
  #ifndef HWCAP2_SVE2
  #define HWCAP2_SVE2 (1 << 1)
  #endif
*************** done:
*** 755,772 ****
     into a byte index, in place of the bitmask the Neon version has to
     build and move to a general register.
  
!    Unlike the Neon version this one needs neither alignment nor a
!    page-crossing test.  Full-vector loads run while S is at or below
!    END rounded down to a vector boundary, so they may extend a little
!    past *END into the tail padding; a single predicated vector then
!    covers any remainder.  The newline that _cpp_convert_input forces
!    at *END still terminates the scan.
  
     The loop consumes svcntb () bytes per iteration, so it scales with the
     implemented vector length.  */
  
  static const uchar * __attribute__ ((target ("+sve2")))
! search_line_sve2 (const uchar *s, const uchar *end)
  {
    /* Order within a segment is irrelevant to MATCH, which tests set
       membership, so this needs no adjustment for big-endian.  */
--- 717,735 ----
     into a byte index, in place of the bitmask the Neon version has to
     build and move to a general register.
  
!    Loop until a match is found even if the input pointer is unaligned
!    or close to the end.  Since this may overread, it relies on *end
!    containing a match and CPP_BUFFER_PADDING >= 256 (maximum SVE vector
!    length).
  
     The loop consumes svcntb () bytes per iteration, so it scales with the
     implemented vector length.  */
  
+ /* Unaligned loads, potentially using padding after the final newline.  */
+ static_assert (CPP_BUFFER_PADDING >= 256, "");
+ 
  static const uchar * __attribute__ ((target ("+sve2")))
! search_line_sve2 (const uchar *s, const uchar *end ATTRIBUTE_UNUSED)
  {
    /* Order within a segment is irrelevant to MATCH, which tests set
       membership, so this needs no adjustment for big-endian.  */
*************** search_line_sve2 (const uchar *s, const
*** 774,807 ****
  			  | ((uint32_t) '\\' << 16) | ((uint32_t) '?' << 24));
    const svuint8_t needles = svreinterpret_u8_u32 (svdup_n_u32 (chars));
    const svbool_t all = svptrue_b8 ();
-   const uint64_t vl = svcntb ();
-   svuint8_t data;
-   svbool_t match;
-   uintptr_t limit;
- 
-   /* Unaligned loads, potentially using padding after the final newline.  */
-   static_assert (CPP_BUFFER_PADDING >= 256, "");
  
!   /* Align END down to a vector boundary so the loop can consume on
!      average half a vector more near the end.  */
!   limit = (uintptr_t) end & -vl;
  
!   while ((uintptr_t) s <= limit)
      {
        data = svld1_u8 (all, s);
        match = svmatch_u8 (all, data, needles);
!       if (svptest_any (all, match))
  	return s + svcntp_b8 (all, svbrkb_b_z (all, match));
-       s += vl;
      }
- 
-   /* What is left, up to and including *END, which _cpp_convert_input
-      forces to a newline.  That guarantees a match, so no further test is
-      needed.  */
-   svbool_t pg = svwhilele_b8_u64 ((uintptr_t) s, (uintptr_t) end);
-   data = svld1_u8 (pg, s);
-   match = svmatch_u8 (pg, data, needles);
-   return s + svcntp_b8 (pg, svbrkb_b_z (pg, match));
  }
  
  static bool lexer_has_sve2;
--- 737,756 ----
  			  | ((uint32_t) '\\' << 16) | ((uint32_t) '?' << 24));
    const svuint8_t needles = svreinterpret_u8_u32 (svdup_n_u32 (chars));
    const svbool_t all = svptrue_b8 ();
  
!   svuint8_t data = svld1_u8 (all, s);
!   svbool_t match = svmatch_u8 (all, data, needles);
!   if (__builtin_expect (svptest_any (all, match), 1))
!     return s + svcntp_b8 (all, svbrkb_b_z (all, match));
  
!   while (1)
      {
+       s += svcntb ();
        data = svld1_u8 (all, s);
        match = svmatch_u8 (all, data, needles);
!       if (__builtin_expect (svptest_any (all, match), 1))
  	return s + svcntp_b8 (all, svbrkb_b_z (all, match));
      }
  }
  
  static bool lexer_has_sve2;
*************** static bool lexer_has_sve2;
*** 810,816 ****
  static inline void
  init_vectorized_lexer (void)
  {
!   lexer_has_sve2 = (getauxval (AT_HWCAP2) & HWCAP2_SVE2) != 0;
  }
  
  #endif
--- 759,769 ----
  static inline void
  init_vectorized_lexer (void)
  {
!   /* MATCH aside, the scanner is built from base SVE instructions, so both
!      features have to be present.  Some virtual machines advertise SVE2
!      without SVE, and there even the leading CNTB traps.  */
!   lexer_has_sve2 = ((getauxval (AT_HWCAP) & HWCAP_SVE) != 0
! 		    && (getauxval (AT_HWCAP2) & HWCAP2_SVE2) != 0);
  }
  
  #endif
diff -Nrcpad gcc-17-20260816/libgcc/ChangeLog gcc-17-20260823/libgcc/ChangeLog
*** gcc-17-20260816/libgcc/ChangeLog	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libgcc/ChangeLog	Sun Aug 23 22:32:19 2026
***************
*** 1,3 ****
--- 1,7 ----
+ 2026-08-16  Georg-Johann Lay  <avr@gjlay.de>
+ 
+ 	* config/avr/lib1funcs.S: Fix typo in comment.
+ 
  2026-08-12  Georg-Johann Lay  <avr@gjlay.de>
  
  	* config/avr/t-avr (LIB1ASMFUNCS): Add _usshift_1, _usshift_2,
diff -Nrcpad gcc-17-20260816/libgcobol/ChangeLog gcc-17-20260823/libgcobol/ChangeLog
*** gcc-17-20260816/libgcobol/ChangeLog	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libgcobol/ChangeLog	Sun Aug 23 22:32:19 2026
***************
*** 1,3 ****
--- 1,10 ----
+ 2026-08-19  Robert Dubner  <rdubner@symas.com>
+ 	    James K. Lowden  <jklowden@cobolworx.com>
+ 
+ 	* posix/README.md: Updated documentation.
+ 	* posix/shim/open.cc (posix_open): Remove O_LARGEFILE from POSIX
+ 	mode flags.
+ 
  2026-08-12  Robert Dubner  <rdubner@symas.com>
  
  	* charmaps.h (ascii_at): New define for '@',
diff -Nrcpad gcc-17-20260816/libgcobol/posix/README.md gcc-17-20260823/libgcobol/posix/README.md
*** gcc-17-20260816/libgcobol/posix/README.md	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libgcobol/posix/README.md	Sun Aug 23 22:32:19 2026
*************** the OS, each in their own way. GnuCOBOL
*** 103,105 ****
--- 103,146 ----
  
  The UDF produced by `udf-gen` is pure ISO COBOL.  The code should be
  compilable by any ISO COBOL compiler.
+ 
+ # TODO
+ 
+ In the real world we know GnuCOBOL applications use:
+ 
+ - clock_gettime
+ - getgrnam
+ - getpgid
+ - getpid
+ - getppid
+ - getpwnam
+ - getpwuid
+ - getuid
+ - gmtime_r
+ - kill
+ - localtime
+ - localtime_r
+ - MD5Final
+ - MD5Init
+ - MD5Update
+ - memcpy
+ - mktime
+ - msgctl
+ - msgget
+ - msgrcv
+ - msgsnd
+ - nanosleep
+ - rename
+ - semctl
+ - semget
+ - semop
+ - semtimedop
+ - setsid
+ - shmat
+ - shmctl
+ - shmdt
+ - shmget
+ - strftime
+ - system
+ 
+ - 
diff -Nrcpad gcc-17-20260816/libgcobol/posix/shim/open.cc gcc-17-20260823/libgcobol/posix/shim/open.cc
*** gcc-17-20260816/libgcobol/posix/shim/open.cc	Sun Aug 16 22:32:15 2026
--- gcc-17-20260823/libgcobol/posix/shim/open.cc	Sun Aug 23 22:32:19 2026
*************** posix_open(const char *pathname, int cbl
*** 35,41 ****
      { cbl::PSX_O_APPEND, O_APPEND },
      { cbl::PSX_O_NONBLOCK, O_NONBLOCK },
      { cbl::PSX_O_DSYNC, O_DSYNC },
-     { cbl::PSX_O_LARGEFILE, O_LARGEFILE }, 
      { cbl::PSX_O_SYNC, O_SYNC }, 
      /*
       * The O_CLOEXEC, O_DIRECTORY, and O_NOFOLLOW flags are not specified in
--- 35,40 ----
*************** posix_open(const char *pathname, int cbl
*** 56,66 ****
--- 55,67 ----
       */
  #if defined(_GNU_SOURCE)
      { cbl::PSX_O_DIRECT, O_DIRECT }, 
+     { cbl::PSX_O_LARGEFILE, O_LARGEFILE }, 
      { cbl::PSX_O_NOATIME, O_NOATIME }, 
      { cbl::PSX_O_PATH, O_PATH }, 
      { cbl::PSX_O_TMPFILE, O_TMPFILE }, 
  #else
      { cbl::PSX_O_DIRECT, 0 }, 
+     { cbl::PSX_O_LARGEFILE, 0 }, 
      { cbl::PSX_O_NOATIME, 0 }, 
      { cbl::PSX_O_PATH, 0 }, 
      { cbl::PSX_O_TMPFILE, 0 }, 
diff -Nrcpad gcc-17-20260816/libgomp/ChangeLog gcc-17-20260823/libgomp/ChangeLog
*** gcc-17-20260816/libgomp/ChangeLog	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/ChangeLog	Sun Aug 23 22:32:20 2026
***************
*** 1,3 ****
--- 1,20 ----
+ 2026-08-20  Paul-Antoine Arras  <parras@baylibre.com>
+ 
+ 	* config/gcn/teams.c (GOMP_distribute_static_worksharing_start):
+ 	Update comment.
+ 	* config/nvptx/teams.c (GOMP_distribute_static_worksharing_start):
+ 	Likewise.
+ 	* loop.c (GOMP_loop_static_worksharing_start): Likewise.
+ 	* teams.c (GOMP_distribute_static_worksharing_start): Likewise.
+ 	* testsuite/libgomp.c-c++-common/for-static-3.c: Use
+ 	-fopenmp-ompt=extended instead of -fopenmp-ompt-detailed.
+ 
+ 2026-08-17  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+ 
+ 	PR fortran/53800
+ 	* testsuite/libgomp.oacc-fortran/host_data-5.F90: Update the
+ 	privatization notes for the packing of a TARGET dummy.
+ 
  2026-08-14  Thomas Schwinge  <tschwinge@baylibre.com>
  
  	PR libgomp/41418
diff -Nrcpad gcc-17-20260816/libgomp/config/gcn/teams.c gcc-17-20260823/libgomp/config/gcn/teams.c
*** gcc-17-20260816/libgomp/config/gcn/teams.c	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/config/gcn/teams.c	Sun Aug 23 22:32:20 2026
*************** GOMP_distribute_static_worksharing_start
*** 64,70 ****
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt-detailed. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
--- 64,70 ----
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt=extended. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
diff -Nrcpad gcc-17-20260816/libgomp/config/nvptx/teams.c gcc-17-20260823/libgomp/config/nvptx/teams.c
*** gcc-17-20260816/libgomp/config/nvptx/teams.c	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/config/nvptx/teams.c	Sun Aug 23 22:32:20 2026
*************** GOMP_distribute_static_worksharing_start
*** 65,71 ****
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt-detailed. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
--- 65,71 ----
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt=extended. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
diff -Nrcpad gcc-17-20260816/libgomp/loop.c gcc-17-20260823/libgomp/loop.c
*** gcc-17-20260816/libgomp/loop.c	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/loop.c	Sun Aug 23 22:32:20 2026
*************** GOMP_loop_static_worksharing_start (unsi
*** 1214,1220 ****
    return nthreads + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt-detailed. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
--- 1214,1220 ----
    return nthreads + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt=extended. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
diff -Nrcpad gcc-17-20260816/libgomp/teams.c gcc-17-20260823/libgomp/teams.c
*** gcc-17-20260816/libgomp/teams.c	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/teams.c	Sun Aug 23 22:32:20 2026
*************** GOMP_distribute_static_worksharing_start
*** 84,90 ****
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt-detailed. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
--- 84,90 ----
    return nteams + tid * 1I;
  }
  
! /* Stub for OMPT callback enabled by -fopenmp-ompt=extended. START is the
     starting index of the chunk in the logical iteration space. ITERATIONS is the
     number of iterations in the chunk.  */
  
diff -Nrcpad gcc-17-20260816/libgomp/testsuite/libgomp.c-c++-common/for-static-3.c gcc-17-20260823/libgomp/testsuite/libgomp.c-c++-common/for-static-3.c
*** gcc-17-20260816/libgomp/testsuite/libgomp.c-c++-common/for-static-3.c	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/testsuite/libgomp.c-c++-common/for-static-3.c	Sun Aug 23 22:32:20 2026
***************
*** 1,7 ****
  /* { dg-do link { target offload_target_any } } */
! /* { dg-additional-options "-O0 -foffload=-fdump-tree-optimized -fopenmp-ompt-detailed" } */
  
! /* Check that, with -fopenmp-ompt-detailed, _dispatch builtins are called along
     with the _start and _end variants.  */
  
  #include "for-static.h"
--- 1,7 ----
  /* { dg-do link { target offload_target_any } } */
! /* { dg-additional-options "-O0 -foffload=-fdump-tree-optimized -fopenmp-ompt=extended" } */
  
! /* Check that, with -fopenmp-ompt=extended, _dispatch builtins are called along
     with the _start and _end variants.  */
  
  #include "for-static.h"
diff -Nrcpad gcc-17-20260816/libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90 gcc-17-20260823/libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
*** gcc-17-20260816/libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90	Sun Aug 23 22:32:20 2026
*************** subroutine foo (p2, parr, host_p, host_p
*** 74,83 ****
      ! { dg-note {variable 'host_p\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-5 }
      ! { dg-note {variable 'host_parr\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-6 }
      ! { dg-note {variable 'C\.[0-9]+' declared in block potentially has improper OpenACC privatization level: 'const_decl'} "TODO" { target *-*-* } .-7 }
!     ! { dg-note {variable 'parm\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: artificial} "" { target *-*-* } .-8 }
!     ! { dg-note {variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: artificial} "" { target *-*-* } .-9 }
!     ! { dg-note {variable 'transfer\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: artificial} "" { target *-*-* } .-10 }
!     ! { dg-note {variable 'parm\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-11 }
        if (.not. acc_is_present(p, c_sizeof(p))) stop 11
        if (.not. acc_is_present(parr, 1)) stop 12
        ! Not inside a host_data construct, so still the host pointer.
--- 74,90 ----
      ! { dg-note {variable 'host_p\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-5 }
      ! { dg-note {variable 'host_parr\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-6 }
      ! { dg-note {variable 'C\.[0-9]+' declared in block potentially has improper OpenACC privatization level: 'const_decl'} "TODO" { target *-*-* } .-7 }
!     ! { dg-note {variable 'D\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: artificial} "" { target *-*-* } .-8 }
!     ! { dg-note {variable 'transfer\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: artificial} "" { target *-*-* } .-9 }
!     ! { dg-note {variable 'parm\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-10 }
!     ! The TARGET dummy 'parr' is addressed by the span of its descriptor, so
!     ! passing it to a dummy without a descriptor packs it when it is not
!     ! contiguous.
!     ! { dg-note {variable 'iftmp\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-14 }
!     ! { dg-note {variable 'atmp\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-15 }
!     ! { dg-note {variable 'arg_ptr\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-16 }
!     ! { dg-note {variable 'contiguous\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-17 }
!     ! { dg-note {variable 'S\.[0-9]+' declared in block isn't candidate for adjusting OpenACC privatization level: not addressable} "" { target *-*-* } .-18 }
        if (.not. acc_is_present(p, c_sizeof(p))) stop 11
        if (.not. acc_is_present(parr, 1)) stop 12
        ! Not inside a host_data construct, so still the host pointer.
diff -Nrcpad gcc-17-20260816/libstdc++-v3/ChangeLog gcc-17-20260823/libstdc++-v3/ChangeLog
*** gcc-17-20260816/libstdc++-v3/ChangeLog	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libstdc++-v3/ChangeLog	Sun Aug 23 22:32:21 2026
***************
*** 1,3 ****
--- 1,208 ----
+ 2026-08-21  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* testsuite/std/time/clock/utc/leap_second_info-2.cc: Create
+ 	empty ./tzdata.zi file.
+ 
+ 2026-08-21  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* scripts/check_performance: Remove gnu++11 flag.
+ 	* testsuite/util/native_type/native_hash_map.hpp: Adjust rebind
+ 	usage.
+ 	* testsuite/util/native_type/native_hash_multimap.hpp: Ditto.
+ 	* testsuite/util/native_type/native_hash_set.hpp: Ditto.
+ 	* testsuite/util/native_type/native_map.hpp: Ditto.
+ 	* testsuite/util/native_type/native_multimap.hpp: Ditto.
+ 	* testsuite/util/native_type/native_set.hpp: Ditto.
+ 
+ 2026-08-20  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	PR libstdc++/126731
+ 	* include/std/format (std::formatter<_Float16, _CharT>)
+ 	(std::formatter<__format::__bflt16_t, _CharT>): Remove
+ 	partial specializations.
+ 	* testsuite/std/format/formatter/ext_float.cc: Test output
+ 	for closest value to 1/10.
+ 
+ 2026-08-19  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/stl_stack.h (std::stack): Declare members as
+ 	_GLIBCXX26_CONSTEXPR.
+ 	(std::operator==, std::operator!=, std::operator<, std::operator>)
+ 	(std::operator<=, std::operator>=, std::operator<=>, std::swap):
+ 	Declare as _GLIBCXX26_CONSTEXPR.
+ 	* include/bits/version.def (constexpr_stack): Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/std/stack (__cpp_lib_constexpr_stack): Define.
+ 	* (formatter<stack<....>, _CharT>::format)
+ 	[__glibcxx_constexpr_format]: Declare as constexpr.
+ 	* testsuite/23_containers/headers/stack/synopsis.cc:
+ 	Update declarations.
+ 	* testsuite/std/format/ranges/adaptors.cc: Expand test to stack.
+ 	* testsuite/23_containers/stack/constexpr.cc: New test derived
+ 	from 23_containers/queue/constexpr.cc.
+ 
+ 2026-08-19  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/print.h (_File_sink::_File::_M_init_write_buf):
+ 	Fix whitespace and pass errno directly to __throw_system_error.
+ 
+ 2026-08-19  Anlai Lu  <agicy@qq.com>
+ 	    Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/print.h (_File_sink::_File::_File)
+ 	[_GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT]:
+ 	Move __overflow call to separate member function.
+ 	(_File_sink::_File::_M_init_write_buf)
+ 	[_GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT]:
+ 	Extracted from constructor, call __overflow for null
+ 	_M_file->_IO_write_ptr.
+ 	(_File_sink::_File_sink)
+ 	[_GLIBCXX_USE_STDIO_LOCKING && _GLIBCXX_USE_GLIBC_STDIO_EXT]:
+ 	Call _M_init_write_buf instead of _M_write_buf.
+ 	* testsuite/27_io/print/1.cc: Add test_print_setvbuf.
+ 
+ 2026-08-19  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/bits/random.h (std::__rotr, std::__rotl, std::__bit_ceil):
+ 	[__cplusplus >= 201103L]: Define as _GLIBCXX14_CONSTEXPR.
+ 	(std::__countl_zero, std::__countr_zero, std::__popcount)
+ 	[__cplusplus >= 201103L]: Split implementation using generic
+ 	builtin, define other as _GLIBCXX14_CONSTEXPR.
+ 	(std::__bit_width, std::__bit_floor) [__cplusplus >= 201103L]:
+ 	Modify to use single return statement.
+ 	* include/bits/random.tcc (std::__countl_zero, std::__countr_zero)
+ 	(std::__popcount, std::__bit_width): Define explicit specializations
+ 	for __detail::__rand_uint128.
+ 	* include/std/bit (std::__generate_canonical_pow2)
+ 	(std::__generate_canonical_any): Replace builtins call with
+ 	<bit> function calls.
+ 
+ 2026-08-19  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 	    Thor Preimesberger  <tcpreimesberger@gmail.com>
+ 
+ 	* include/bits/deque.tcc (deque): Declare out of line member
+ 	defintions as _GLIBCXX26_CONSTEXPR.
+ 	(std::__fill_a1, std::__copy_move_dit, std::__copy_move_a1)
+ 	(std::__copy_move_a2, std::__copy_n_a)
+ 	(std::__copy_move_backward_dit, std::__copy_move_backward_a1)
+ 	(std::__equal_dit, std::__equal_aux1, std::__lex_cmp_dit)
+ 	(std::__lexicographical_compare_aux1, std::__uninitialized_copy_a)
+ 	(std::__uninitialized_move_a): Declare as _GLIBCXX26_CONSTEXPR.
+ 	* include/bits/stl_algobase.h (std::__fill_a1, std::__copy_n_a)
+ 	(std::__copy_move_a1, std::__copy_move_backward_a1)
+ 	(std::__equal_aux1, __lexicographical_compare_aux1): Declare
+ 	overloads accepting _Deque_iterator as _GLIBCXX26_CONSTEXPR.
+ 	* include/bits/stl_deque.h (std::_Deque_iterator, std::_Deque_base)
+ 	(std::deque): Declare members as _GLIBCXX26_CONSTEXPR.
+ 	(std::operator==, std::operator<=>, std::swap): Declare as
+ 	_GLIBCXX26_CONSTEXPR.
+ 	* include/bits/stl_queue.h (std::queue): Declare members as
+ 	_GLIBCXX26_CONSTEXPR.
+ 	(std::priority_queue): Make _GLIBCXX26_CONSTEXPR placement
+ 	consistient.
+ 	(std::operator==, std::operator!=, std::operator<, std::operator>)
+ 	(std::operator<=, std::operator>=, std::operator<=>, std::swap):
+ 	Declare as _GLIBCXX26_CONSTEXPR.
+ 	* include/bits/stl_uninitialized.h (std::__uninitialized_copy_a):
+ 	Declare overloads accepting _Deque_iterator as _GLIBCXX26_CONSTEXPR.
+ 	(std::__uninitialized_default_a): Declare as _GLIBCXX20_CONSTEXPR.
+ 	* include/bits/version.def (constexpr_deque, constexpr_queue):
+ 	Define.
+ 	* include/bits/version.h: Regenerate.
+ 	* include/debug/deque (__debug::deque): Declare members as
+ 	_GLIBCXX26_CONSTEXPR.
+ 	(__debug::operator==, __debug::operator<=>, __debug::swap)
+ 	(__debug::erase, __debug::__erase_if): Declare as
+ 	_GLIBCXX26_CONSTEXPR.
+ 	* include/std/deque (__cpp_lib_constexpr_deque): Define.
+ 	(std::erase, std::erase_if): Declare as _GLIBCXX26_CONSTEXPR.
+ 	* include/std/queue (__cpp_lib_constexpr_queue): Define.
+ 	(_GLIBCXX_CONSTEXPR_FORMAT): Define locally.
+ 	(std::formatter<priority_queue<...>, _CharT>::format)
+ 	(std::formatter<queue<...>, _CharT>::format): Declare as
+ 	_GLIBCXX_CONSTEXPR_FORMAT.
+ 	* testsuite/23_containers/deque/constexpr.cc: New test.
+ 	* testsuite/23_containers/headers/deque/synopsis.cc: Update
+ 	declarations.
+ 	* testsuite/23_containers/headers/queue/synopsis.cc: Likewise.
+ 	* testsuite/23_containers/queue/constexpr.cc: New test.
+ 	* testsuite/23_containers/priority_queue/constexpr.cc: Replace
+ 	existing test with expanded suite.
+ 	* testsuite/std/format/ranges/adaptors.cc: Test at compile
+ 	time.
+ 
+ 2026-08-19  Yuao Ma  <c8ef@outlook.com>
+ 
+ 	* include/bits/stl_algo.h (__for_each): Add segemented
+ 	iterators logic. Split out naive for-loop from ...
+ 	(for_each): ... here.
+ 	* testsuite/performance/25_algorithms/for_each.cc: New test.
+ 
+ 2026-08-19  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	* include/bits/simd_vec.h (_M_elements_shifted_to_front): Remove
+ 	x86-specific implementation.
+ 	* testsuite/std/simd/traits_impl.cc: Fix incorrect macro name.
+ 
+ 2026-08-18  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/126786
+ 	* src/c++23/Makefile.am (empty.cc): New target.
+ 	(std.lo, std.o, std.compat.lo, std.compat.o): Use empty.cc as
+ 	fallback instead of overwriting original sources.
+ 	* src/c++23/Makefile.in: Regenerate.
+ 
+ 2026-08-18  Francisco Muniz  <munizfco@gmail.com>
+ 
+ 	* include/std/chrono (year::is_leap): Use Hueffner leap-year
+ 	test after biasing the year by a multiple of 400.
+ 
+ 2026-08-18  Matthias Kretz  <m.kretz@gsi.de>
+ 
+ 	PR libstdc++/122981
+ 	* include/experimental/bits/simd.h (__int_for_sizeof): Return
+ 	int32_t, int8_t, int16_t, and int64_t, rather than int, signed
+ 	char, short, long, and long long.
+ 	* include/experimental/bits/simd_neon.h (_S_popcount): Cast
+ 	elements to int8_t, int16_t, int32_t, or int64_t, rather than
+ 	signed char, short, int, or long.
+ 
+ 2026-08-18  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* testsuite/23_containers/mdspan/layouts/padded_neg.cc: Adjust
+ 	message pattern for test cases using static extents.
+ 	* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc:
+ 	Likewise.
+ 
+ 2026-08-17  Pietro Monteiro  <pietro@sociotechnical.xyz>
+ 
+ 	* config/os/bsd/openbsd/ctype_base.h: Use static_cast when
+ 	setting the masks.
+ 
+ 2026-08-17  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR libstdc++/126849
+ 	* include/std/numbers: Fix preprocessor check for
+ 	std::bfloat16_t support.
+ 
+ 2026-08-17  Kyrylo Tkachov  <ktkachov@nvidia.com>
+ 
+ 	* src/Makefile.am (all-recursive): Depend on all-parallel-subdirs.
+ 	(all-parallel-subdirs, all-in-%): New targets.
+ 	(all-in-experimental): Depend on the directories whose convenience
+ 	archives it links.
+ 	* src/Makefile.in: Regenerate.
+ 	* src/experimental/Makefile.am: Add comment about keeping the
+ 	convenience library lists in sync with src/Makefile.am.
+ 
+ 2026-08-17  Tomasz Kamiński  <tkaminsk@redhat.com>
+ 
+ 	* include/std/vector (formatter<_Bit_reference, _CharT>::format)
+ 	[__glibcxx_constexpr_format]: Declare as constexpr.
+ 	* testsuite/23_containers/vector/bool/format.cc
+ 	[__glibcxx_constexpr_format]: Run test suite at compile
+ 	time.
+ 
  2026-08-15  Pietro Monteiro  <pietro@sociotechnical.xyz>
  
  	* config/os/bsd/openbsd/ctype_base.h: Use _CTYPE prefixed
diff -Nrcpad gcc-17-20260816/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h gcc-17-20260823/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
*** gcc-17-20260816/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h	Sun Aug 16 22:32:16 2026
--- gcc-17-20260823/libstdc++-v3/config/os/bsd/openbsd/ctype_base.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 44,73 ****
  
  #ifdef _CTYPE_S
      // OpenBSD 7.5 uses this style of define.
!     static const mask upper	= _CTYPE_U;
!     static const mask lower	= _CTYPE_L;
!     static const mask alpha	= _CTYPE_U | _CTYPE_L;
!     static const mask digit	= _CTYPE_N;
!     static const mask xdigit	= _CTYPE_N | _CTYPE_X;
!     static const mask space	= _CTYPE_S;
!     static const mask print	= _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B;
!     static const mask graph	= _CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N;
!     static const mask cntrl	= _CTYPE_C;
!     static const mask punct	= _CTYPE_P;
!     static const mask alnum	= _CTYPE_U | _CTYPE_L | _CTYPE_N;
  #else
      // Older versions use this style.
!     static const mask upper	= _U;
!     static const mask lower	= _L;
!     static const mask alpha	= _U | _L;
!     static const mask digit	= _N;
!     static const mask xdigit	= _N | _X;
!     static const mask space	= _S;
!     static const mask print	= _P | _U | _L | _N | _B;
!     static const mask graph	= _P | _U | _L | _N;
!     static const mask cntrl	= _C;
!     static const mask punct	= _P;
!     static const mask alnum	= _U | _L | _N;
  #endif
  #if __cplusplus >= 201103L
      static const mask blank	= space;
--- 44,73 ----
  
  #ifdef _CTYPE_S
      // OpenBSD 7.5 uses this style of define.
!     static const mask upper	= static_cast<mask>(_CTYPE_U);
!     static const mask lower	= static_cast<mask>(_CTYPE_L);
!     static const mask alpha	= static_cast<mask>(_CTYPE_U | _CTYPE_L);
!     static const mask digit	= static_cast<mask>(_CTYPE_N);
!     static const mask xdigit	= static_cast<mask>(_CTYPE_N | _CTYPE_X);
!     static const mask space	= static_cast<mask>(_CTYPE_S);
!     static const mask print	= static_cast<mask>(_CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N | _CTYPE_B);
!     static const mask graph	= static_cast<mask>(_CTYPE_P | _CTYPE_U | _CTYPE_L | _CTYPE_N);
!     static const mask cntrl	= static_cast<mask>(_CTYPE_C);
!     static const mask punct	= static_cast<mask>(_CTYPE_P);
!     static const mask alnum	= static_cast<mask>(_CTYPE_U | _CTYPE_L | _CTYPE_N);
  #else
      // Older versions use this style.
!     static const mask upper	= static_cast<mask>(_U);
!     static const mask lower	= static_cast<mask>(_L);
!     static const mask alpha	= static_cast<mask>(_U | _L);
!     static const mask digit	= static_cast<mask>(_N);
!     static const mask xdigit	= static_cast<mask>(_N | _X);
!     static const mask space	= static_cast<mask>(_S);
!     static const mask print	= static_cast<mask>(_P | _U | _L | _N | _B);
!     static const mask graph	= static_cast<mask>(_P | _U | _L | _N);
!     static const mask cntrl	= static_cast<mask>(_C);
!     static const mask punct	= static_cast<mask>(_P);
!     static const mask alnum	= static_cast<mask>(_U | _L | _N);
  #endif
  #if __cplusplus >= 201103L
      static const mask blank	= space;
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/deque.tcc gcc-17-20260823/libstdc++-v3/include/bits/deque.tcc
*** gcc-17-20260816/libstdc++-v3/include/bits/deque.tcc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/deque.tcc	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 65,71 ****
  
  #if __cplusplus >= 201103L
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_default_initialize()
      {
--- 65,71 ----
  
  #if __cplusplus >= 201103L
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_default_initialize()
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 91,96 ****
--- 91,97 ----
  #endif
  
    template <typename _Tp, typename _Alloc>
+     _GLIBCXX26_CONSTEXPR
      deque<_Tp, _Alloc>&
      deque<_Tp, _Alloc>::
      operator=(const deque& __x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 133,138 ****
--- 134,140 ----
    template<typename _Tp, typename _Alloc>
      template<typename... _Args>
  #if __cplusplus > 201402L
+       _GLIBCXX26_CONSTEXPR
        typename deque<_Tp, _Alloc>::reference
  #else
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 157,162 ****
--- 159,165 ----
    template<typename _Tp, typename _Alloc>
      template<typename... _Args>
  #if __cplusplus > 201402L
+       _GLIBCXX26_CONSTEXPR
        typename deque<_Tp, _Alloc>::reference
  #else
        void
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 183,188 ****
--- 186,192 ----
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Alloc>
      template<typename... _Args>
+       _GLIBCXX26_CONSTEXPR
        typename deque<_Tp, _Alloc>::iterator
        deque<_Tp, _Alloc>::
        emplace(const_iterator __position, _Args&&... __args)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 206,211 ****
--- 210,216 ----
  #endif
  
    template <typename _Tp, typename _Alloc>
+     _GLIBCXX26_CONSTEXPR
      typename deque<_Tp, _Alloc>::iterator
      deque<_Tp, _Alloc>::
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 231,236 ****
--- 236,242 ----
     }
  
    template <typename _Tp, typename _Alloc>
+     _GLIBCXX26_CONSTEXPR
      typename deque<_Tp, _Alloc>::iterator
      deque<_Tp, _Alloc>::
      _M_erase(iterator __position)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 254,259 ****
--- 260,266 ----
      }
  
    template <typename _Tp, typename _Alloc>
+     _GLIBCXX26_CONSTEXPR
      typename deque<_Tp, _Alloc>::iterator
      deque<_Tp, _Alloc>::
      _M_erase(iterator __first, iterator __last)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 287,293 ****
  
    template <typename _Tp, class _Alloc>
      template <typename _InputIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_assign_aux(_InputIterator __first, _InputIterator __last,
  		    std::input_iterator_tag)
--- 294,300 ----
  
    template <typename _Tp, class _Alloc>
      template <typename _InputIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_assign_aux(_InputIterator __first, _InputIterator __last,
  		    std::input_iterator_tag)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 303,309 ****
        }
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
      {
--- 310,316 ----
        }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_fill_insert(iterator __pos, size_type __n, const value_type& __x)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 346,352 ****
  
  #if __cplusplus >= 201103L
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_default_append(size_type __n)
      {
--- 353,359 ----
  
  #if __cplusplus >= 201103L
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_default_append(size_type __n)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 370,376 ****
      }
  
    template <typename _Tp, typename _Alloc>
!     bool
      deque<_Tp, _Alloc>::
      _M_shrink_to_fit()
      {
--- 377,383 ----
      }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR bool
      deque<_Tp, _Alloc>::
      _M_shrink_to_fit()
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 389,395 ****
  #endif
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_fill_initialize(const value_type& __value)
      {
--- 396,402 ----
  #endif
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_fill_initialize(const value_type& __value)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 415,421 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_range_initialize(_InputIterator __first, _InputIterator __last,
  			  std::input_iterator_tag)
--- 422,428 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_initialize(_InputIterator __first, _InputIterator __last,
  			  std::input_iterator_tag)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 439,445 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			  std::forward_iterator_tag)
--- 446,452 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			  std::forward_iterator_tag)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 480,486 ****
    template<typename _Tp, typename _Alloc>
  #if __cplusplus >= 201103L
      template<typename... _Args>
!       void
        deque<_Tp, _Alloc>::
        _M_push_back_aux(_Args&&... __args)
  #else
--- 487,493 ----
    template<typename _Tp, typename _Alloc>
  #if __cplusplus >= 201103L
      template<typename... _Args>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_push_back_aux(_Args&&... __args)
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 519,525 ****
    template<typename _Tp, typename _Alloc>
  #if __cplusplus >= 201103L
      template<typename... _Args>
!       void
        deque<_Tp, _Alloc>::
        _M_push_front_aux(_Args&&... __args)
  #else
--- 526,532 ----
    template<typename _Tp, typename _Alloc>
  #if __cplusplus >= 201103L
      template<typename... _Args>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_push_front_aux(_Args&&... __args)
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 557,563 ****
  
    // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first.
    template <typename _Tp, typename _Alloc>
!     void deque<_Tp, _Alloc>::
      _M_pop_back_aux()
      {
        _M_deallocate_node(this->_M_impl._M_finish._M_first);
--- 564,571 ----
  
    // Called only if _M_impl._M_finish._M_cur == _M_impl._M_finish._M_first.
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
!     deque<_Tp, _Alloc>::
      _M_pop_back_aux()
      {
        _M_deallocate_node(this->_M_impl._M_finish._M_first);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 573,579 ****
    //   _M_impl._M_start._M_cur == _M_impl._M_start._M_last,
    // then the deque must have at least two nodes.
    template <typename _Tp, typename _Alloc>
!     void deque<_Tp, _Alloc>::
      _M_pop_front_aux()
      {
        _Alloc_traits::destroy(_M_get_Tp_allocator(),
--- 581,588 ----
    //   _M_impl._M_start._M_cur == _M_impl._M_start._M_last,
    // then the deque must have at least two nodes.
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
!     deque<_Tp, _Alloc>::
      _M_pop_front_aux()
      {
        _Alloc_traits::destroy(_M_get_Tp_allocator(),
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 585,591 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator, typename _Sentinel>
!       void
        deque<_Tp, _Alloc>::
        _M_range_prepend(_InputIterator __first, _Sentinel __last,
  		      size_type __n)
--- 594,600 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator, typename _Sentinel>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_prepend(_InputIterator __first, _Sentinel __last,
  		      size_type __n)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 607,613 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator, typename _Sentinel>
!       void
        deque<_Tp, _Alloc>::
        _M_range_append(_InputIterator __first, _Sentinel __last,
  		      size_type __n)
--- 616,622 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator, typename _Sentinel>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_append(_InputIterator __first, _Sentinel __last,
  		      size_type __n)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 630,636 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_range_insert_aux(iterator __pos,
  			  _InputIterator __first, _InputIterator __last,
--- 639,645 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _InputIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_insert_aux(iterator __pos,
  			  _InputIterator __first, _InputIterator __last,
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 639,645 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_range_insert_aux(iterator __pos,
  			  _ForwardIterator __first, _ForwardIterator __last,
--- 648,654 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_range_insert_aux(iterator __pos,
  			  _ForwardIterator __first, _ForwardIterator __last,
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 660,665 ****
--- 669,675 ----
    template<typename _Tp, typename _Alloc>
  #if __cplusplus >= 201103L
      template<typename... _Args>
+       _GLIBCXX26_CONSTEXPR
        typename deque<_Tp, _Alloc>::iterator
        deque<_Tp, _Alloc>::
        _M_emplace_aux(iterator __pos, _Args&&... __args)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 707,713 ****
        }
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
      {
--- 717,723 ----
        }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_insert_aux(iterator __pos, size_type __n, const value_type& __x)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 793,799 ****
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       void
        deque<_Tp, _Alloc>::
        _M_insert_aux(iterator __pos,
  		    _ForwardIterator __first, _ForwardIterator __last,
--- 803,809 ----
  
    template <typename _Tp, typename _Alloc>
      template <typename _ForwardIterator>
!       _GLIBCXX26_CONSTEXPR void
        deque<_Tp, _Alloc>::
        _M_insert_aux(iterator __pos,
  		    _ForwardIterator __first, _ForwardIterator __last,
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 882,888 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::forward_range _Rg>
!     auto __advance_dist(_Rg& __rg)
      {
        struct _Res
  	{
--- 892,899 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
    template<ranges::forward_range _Rg>
!     _GLIBCXX26_CONSTEXPR auto
!     __advance_dist(_Rg& __rg)
      {
        struct _Res
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 914,920 ****
  
    template<typename _Tp, typename _Alloc>
      template<__detail::__container_compatible_range<_Tp> _Rg>
!       auto
        deque<_Tp, _Alloc>::
        insert_range(const_iterator __pos, _Rg&& __rg)
        -> iterator
--- 925,931 ----
  
    template<typename _Tp, typename _Alloc>
      template<__detail::__container_compatible_range<_Tp> _Rg>
!       _GLIBCXX26_CONSTEXPR auto
        deque<_Tp, _Alloc>::
        insert_range(const_iterator __pos, _Rg&& __rg)
        -> iterator
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 954,960 ****
  
     template<typename _Tp, typename _Alloc>
       template<__detail::__container_compatible_range<_Tp> _Rg>
!        void
         deque<_Tp, _Alloc>::
         prepend_range(_Rg&& __rg)
         {
--- 965,971 ----
  
     template<typename _Tp, typename _Alloc>
       template<__detail::__container_compatible_range<_Tp> _Rg>
!        _GLIBCXX26_CONSTEXPR void
         deque<_Tp, _Alloc>::
         prepend_range(_Rg&& __rg)
         {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 996,1002 ****
  
     template<typename _Tp, typename _Alloc>
       template<__detail::__container_compatible_range<_Tp> _Rg>
!        void
         deque<_Tp, _Alloc>::
         append_range(_Rg&& __rg)
         {
--- 1007,1013 ----
  
     template<typename _Tp, typename _Alloc>
       template<__detail::__container_compatible_range<_Tp> _Rg>
!        _GLIBCXX26_CONSTEXPR void
         deque<_Tp, _Alloc>::
         append_range(_Rg&& __rg)
         {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1013,1018 ****
--- 1024,1030 ----
  		 deque& __self;
  		 size_type __n = __self.size();
  
+ 		 _GLIBCXX26_CONSTEXPR
  		 ~_Guard_elts_back()
  		   {
  		     if (__n < __self.size())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1032,1038 ****
  #endif // containers_ranges
  
     template<typename _Tp, typename _Alloc>
!      void
       deque<_Tp, _Alloc>::
       _M_destroy_data_aux(iterator __first, iterator __last)
       {
--- 1044,1050 ----
  #endif // containers_ranges
  
     template<typename _Tp, typename _Alloc>
!      _GLIBCXX26_CONSTEXPR void
       deque<_Tp, _Alloc>::
       _M_destroy_data_aux(iterator __first, iterator __last)
       {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1054,1060 ****
       }
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_new_elements_at_front(size_type __new_elems)
      {
--- 1066,1072 ----
       }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_new_elements_at_front(size_type __new_elems)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1079,1085 ****
      }
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_new_elements_at_back(size_type __new_elems)
      {
--- 1091,1097 ----
      }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_new_elements_at_back(size_type __new_elems)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1104,1110 ****
      }
  
    template <typename _Tp, typename _Alloc>
!     void
      deque<_Tp, _Alloc>::
      _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
      {
--- 1116,1122 ----
      }
  
    template <typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      deque<_Tp, _Alloc>::
      _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front)
      {
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1158,1164 ****
    // Overload for deque::iterators, exploiting the "segmented-iterator
    // optimization".
    template<typename _Tp, typename _VTp>
!     void
      __fill_a1(const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>& __first,
  	      const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>& __last,
  	      const _VTp& __value)
--- 1170,1176 ----
    // Overload for deque::iterators, exploiting the "segmented-iterator
    // optimization".
    template<typename _Tp, typename _VTp>
!     _GLIBCXX26_CONSTEXPR void
      __fill_a1(const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>& __first,
  	      const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>& __last,
  	      const _VTp& __value)
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1180,1186 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_dit(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		    _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
  		    _OI __result)
--- 1192,1198 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_dit(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		    _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
  		    _OI __result)
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1209,1215 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		   _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
  		   _OI __result)
--- 1221,1227 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		   _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
  		   _OI __result)
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1217,1222 ****
--- 1229,1235 ----
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
  		   _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __last,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1224,1229 ****
--- 1237,1243 ----
      { return __copy_move_dit<_IsMove>(__first, __last, __result); }
  
    template<bool _IsMove, typename _II, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1250,1255 ****
--- 1264,1270 ----
      }
  
    template<bool _IsMove, typename _CharT>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_char<_CharT>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1277,1282 ****
--- 1292,1298 ----
      }
  
    template<typename _CharT, typename _Size>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_char<_CharT>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1302,1308 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_backward_dit(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
--- 1318,1324 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_backward_dit(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1329,1335 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_backward_a1(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
--- 1345,1351 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_backward_a1(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __last,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1338,1343 ****
--- 1354,1360 ----
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_backward_a1(
  		_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1346,1351 ****
--- 1363,1369 ----
      { return __copy_move_backward_dit<_IsMove>(__first, __last, __result); }
  
    template<bool _IsMove, typename _II, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1378,1384 ****
      }
  
    template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
!     bool
      __equal_dit(
  	const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>& __first1,
  	const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>& __last1,
--- 1396,1402 ----
      }
  
    template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
!     _GLIBCXX26_CONSTEXPR bool
      __equal_dit(
  	const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>& __first1,
  	const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>& __last1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1405,1410 ****
--- 1423,1429 ----
      }
  
    template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr> __first1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1414,1426 ****
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     bool
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2)
      { return std::__equal_dit(__first1, __last1, __first2); }
  
    template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_II __first1, _II __last1,
--- 1433,1446 ----
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     _GLIBCXX26_CONSTEXPR bool
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2)
      { return std::__equal_dit(__first1, __last1, __first2); }
  
    template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_II __first1, _II __last1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1446,1452 ****
      }
  
    template<typename _Tp1, typename _Ref, typename _Ptr, typename _Tp2>
!     int
      __lex_cmp_dit(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref, _Ptr> __first1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref, _Ptr> __last1,
--- 1466,1472 ----
      }
  
    template<typename _Tp1, typename _Ref, typename _Ptr, typename _Tp2>
!     _GLIBCXX26_CONSTEXPR int
      __lex_cmp_dit(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref, _Ptr> __first1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref, _Ptr> __last1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1487,1493 ****
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2>
!     inline bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
--- 1507,1513 ----
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2>
!     inline _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1496,1502 ****
  
    template<typename _Tp1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     inline  bool
      __lexicographical_compare_aux1(_Tp1* __first1, _Tp1* __last1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2)
--- 1516,1522 ----
  
    template<typename _Tp1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     inline _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(_Tp1* __first1, _Tp1* __last1,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __first2,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2> __last2)
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1504,1510 ****
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     inline bool
      __lexicographical_compare_aux1(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
--- 1524,1530 ----
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     inline _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __first1,
  		_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1> __last1,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1554,1559 ****
--- 1574,1580 ----
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
    template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
  	   typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __uninitialized_copy_a(
        _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1583,1588 ****
--- 1604,1610 ----
      }
  
    template<typename _Iter, typename _OTp, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      __enable_if_t<__is_random_access_iter<_Iter>::value,
  		  _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>>
      __uninitialized_copy_a(_Iter __first, _Iter __last,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1607,1612 ****
--- 1629,1635 ----
  
    template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
  	   typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __uninitialized_move_a(
        _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/print.h gcc-17-20260823/libstdc++-v3/include/bits/print.h
*** gcc-17-20260816/libstdc++-v3/include/bits/print.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/print.h	Sun Aug 23 22:32:21 2026
*************** namespace __format
*** 80,99 ****
  	    ::funlockfile(__f);
  	    __throw_system_error(EACCES);
  	  }
- 	// Allocate buffer if needed:
- 	if (_M_write_buf().empty())
- 	  if (::__overflow(__f, EOF) == EOF)
- 	    {
- 	      const int __err = errno;
- 	      ::funlockfile(__f);
- 	      __throw_system_error(__err);
- 	    }
        }
  
        ~_File() { ::funlockfile(_M_file); }
  
        _File(_File&&) = delete;
  
        // A span viewing the unused portion of the stream's output buffer.
        std::span<char>
        _M_write_buf() noexcept
--- 80,104 ----
  	    ::funlockfile(__f);
  	    __throw_system_error(EACCES);
  	  }
        }
  
        ~_File() { ::funlockfile(_M_file); }
  
        _File(_File&&) = delete;
  
+       // Allocate FILE's output buffer if needed, and return a span
+       // viewing unused portion of it.
+       std::span<char>
+       _M_init_write_buf()
+       {
+ 	// After setvbuf glibc pre-allocates the buffer but _IO_write_ptr
+ 	// remains null until the first write.
+ 	if (!_M_file->_IO_write_ptr || _M_write_buf().empty())
+ 	  if (::__overflow(_M_file, EOF) == EOF)
+ 	    __throw_system_error(errno);
+ 	return _M_write_buf();
+       }
+ 
        // A span viewing the unused portion of the stream's output buffer.
        std::span<char>
        _M_write_buf() noexcept
*************** namespace __format
*** 158,165 ****
      : _M_file(__f), _M_add_newline(__add_newline)
      {
        if (!_M_file._M_unbuffered())
! 	// Write directly to the FILE's output buffer.
! 	this->_M_reset(_M_file._M_write_buf());
      }
  
      // This calls I/O functions which are cancellation points, so they
--- 163,170 ----
      : _M_file(__f), _M_add_newline(__add_newline)
      {
        if (!_M_file._M_unbuffered())
! 	// Allocate FILE's output buffer if needed, and write directly to it.
! 	this->_M_reset(_M_file._M_init_write_buf());
      }
  
      // This calls I/O functions which are cancellation points, so they
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/random.h gcc-17-20260823/libstdc++-v3/include/bits/random.h
*** gcc-17-20260816/libstdc++-v3/include/bits/random.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/random.h	Sun Aug 23 22:32:21 2026
***************
*** 31,36 ****
--- 31,37 ----
  #ifndef _RANDOM_H
  #define _RANDOM_H 1
  
+ #include <bit>     // std::__bit_width
  #include <vector>
  #include <bits/ios_base.h>
  #include <bits/uniform_int_dist.h>
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 68,80 ****
  #endif
  
    /// @cond undocumented
-   // Implementation-space details.
-   namespace __detail
-   {
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions"
  
  #ifndef __SIZEOF_INT128__
      // Emulate 128-bit integer type, for the arithmetic ops used in <random>.
      // The __detail::__mod function needs: (type(a) * x + c) % m.
      // std::philox_engine needs multiplication and bitwise ops.
--- 69,81 ----
  #endif
  
    /// @cond undocumented
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wc++17-extensions"
  
  #ifndef __SIZEOF_INT128__
+   // Implementation-space details.
+   namespace __detail
+   {
      // Emulate 128-bit integer type, for the arithmetic ops used in <random>.
      // The __detail::__mod function needs: (type(a) * x + c) % m.
      // std::philox_engine needs multiplication and bitwise ops.
*************** _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
*** 522,529 ****
        uint64_t _M_hi = 0;
        uint64_t _M_lo = 0;
      };
! #endif // ! __SIZEOF_INT128__
  
      template<typename _UIntType, size_t __w,
  	     bool = __w < static_cast<size_t>
  			  (std::numeric_limits<_UIntType>::digits)>
--- 523,564 ----
        uint64_t _M_hi = 0;
        uint64_t _M_lo = 0;
      };
!   } // namespace __detail
! 
!   template<>
!     constexpr int
!     __countl_zero(__detail::__rand_uint128 __val) noexcept
!     {
!       return __val._M_hi ? std::__countl_zero(__val._M_hi)
! 			 : std::__countl_zero(__val._M_lo) + 64;
!     }
  
+   template<>
+     constexpr int
+     __countr_zero(__detail::__rand_uint128 __val) noexcept
+     {
+       return __val._M_lo ? std::__countr_zero(__val._M_lo)
+ 			 : std::__countr_zero(__val._M_hi) + 64;
+     }
+ 
+   template<>
+     constexpr int
+     __popcount(__detail::__rand_uint128 __val) noexcept
+     {
+       return std::__popcount(__val._M_hi) + std::__popcount(__val._M_lo);
+     }
+ 
+   template<>
+     constexpr int
+     __bit_width(__detail::__rand_uint128 __val) noexcept
+     {
+       return __val._M_hi ? std::__bit_width(__val._M_hi) + 64
+ 			 : std::__bit_width(__val._M_lo);
+     }
+ 
+ #endif // ! __SIZEOF_INT128__
+   namespace __detail
+   {
      template<typename _UIntType, size_t __w,
  	     bool = __w < static_cast<size_t>
  			  (std::numeric_limits<_UIntType>::digits)>
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/random.tcc gcc-17-20260823/libstdc++-v3/include/bits/random.tcc
*** gcc-17-20260816/libstdc++-v3/include/bits/random.tcc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/random.tcc	Sun Aug 23 22:32:21 2026
*************** namespace __detail
*** 3706,3715 ****
        // Commented-out assignments below are of values specified in
        //  the Standard, but not used here for reasons noted.
        // r = 2;  // Redundant, we only support radix 2.
!       using _Rng = decltype(_Urbg::max());
!       const _Rng __rng_range_less_1 = _Urbg::max() - _Urbg::min();
        // R = _UInt(__rng_range_less_1) + 1;  // May wrap to 0.
!       const auto __log2_R = __builtin_popcountg(__rng_range_less_1);
        const auto __log2_uint_max = sizeof(_UInt) * __CHAR_BIT__;
        // rd = _UInt(1) << __d;  // Could overflow, UB.
        const unsigned __k = (__d + __log2_R - 1) / __log2_R;
--- 3706,3715 ----
        // Commented-out assignments below are of values specified in
        //  the Standard, but not used here for reasons noted.
        // r = 2;  // Redundant, we only support radix 2.
!       using _URng = typename make_unsigned<decltype(_Urbg::max())>::type;
!       const _URng __rng_range_less_1(_Urbg::max() - _Urbg::min());
        // R = _UInt(__rng_range_less_1) + 1;  // May wrap to 0.
!       const auto __log2_R = std::__popcount(__rng_range_less_1);
        const auto __log2_uint_max = sizeof(_UInt) * __CHAR_BIT__;
        // rd = _UInt(1) << __d;  // Could overflow, UB.
        const unsigned __k = (__d + __log2_R - 1) / __log2_R;
*************** namespace __detail
*** 3804,3811 ****
        // Cannot overflow, as _Urbg::max() - _Urbg::min() is not power of
        // two minus one
        constexpr _UIntR __R = _UIntR(_Urbg::max() - _Urbg::min()) + 1;
!       constexpr unsigned __log2R
! 	= sizeof(_UIntR) * __CHAR_BIT__ - __builtin_clzg(__R) - 1;
        // We overstimate number of required bits, by computing
        // m such that m * log2(R) >= d, so:
        // R^m >= (2 ^ log2(R)) ^ m == 2 ^ (log2(R) * m) >= 2^d
--- 3804,3810 ----
        // Cannot overflow, as _Urbg::max() - _Urbg::min() is not power of
        // two minus one
        constexpr _UIntR __R = _UIntR(_Urbg::max() - _Urbg::min()) + 1;
!       constexpr unsigned __log2R = std::__bit_width(__R) - 1;
        // We overstimate number of required bits, by computing
        // m such that m * log2(R) >= d, so:
        // R^m >= (2 ^ log2(R)) ^ m == 2 ^ (log2(R) * m) >= 2^d
*************** namespace __detail
*** 3872,3884 ****
  
  	  // __abits is maximum bit width of the value, that can
  	  // be multiplied by R^l without overflowing 128 bit integer
! 	  _GLIBCXX_GEN_CANON_CONST unsigned __bwRl
! #ifndef __SIZEOF_INT128__
! 	    = __Rl._M_hi ? 128 - __builtin_clzg(__Rl._M_hi)
! 			 : 64 - __builtin_clzg(__Rl._M_lo);
! #else
! 	    = 128 - __builtin_clzg(__Rl);
! #endif
  
  	  // For __R close to power of two, the actual __k may be smaller than __m,
  	  // and will use less than 128bits, default to two 32 bits chunks.
--- 3871,3877 ----
  
  	  // __abits is maximum bit width of the value, that can
  	  // be multiplied by R^l without overflowing 128 bit integer
! 	  _GLIBCXX_GEN_CANON_CONST unsigned __bwRl = std::__bit_width(__Rl);
  
  	  // For __R close to power of two, the actual __k may be smaller than __m,
  	  // and will use less than 128bits, default to two 32 bits chunks.
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/simd_vec.h gcc-17-20260823/libstdc++-v3/include/bits/simd_vec.h
*** gcc-17-20260816/libstdc++-v3/include/bits/simd_vec.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/simd_vec.h	Sun Aug 23 22:32:21 2026
*************** namespace simd
*** 449,481 ****
  	  static_assert(_Shift < _S_size && -_Shift < _S_size);
  	  if constexpr (_Shift == 0)
  	    return *this;
! #ifdef __SSE2__
! 	  else if (!__is_const_known(*this))
! 	    {
! 	      if constexpr (sizeof(_M_data) == 16 && _Shift > 0)
! 		return reinterpret_cast<_DataType>(
! 			 __builtin_ia32_psrldqi128(__vec_bit_cast<long long>(_M_data),
! 						   _Shift * sizeof(value_type) * 8));
! 	      else if constexpr (sizeof(_M_data) == 16 && _Shift < 0)
! 		return reinterpret_cast<_DataType>(
! 			 __builtin_ia32_pslldqi128(__vec_bit_cast<long long>(_M_data),
! 						   -_Shift * sizeof(value_type) * 8));
! 	      else if constexpr (sizeof(_M_data) < 16)
! 		{
! 		  auto __x = reinterpret_cast<__vec_builtin_type_bytes<long long, 16>>(
! 			       __vec_zero_pad_to_16(_M_data));
! 		  if constexpr (_Shift > 0)
! 		    __x = __builtin_ia32_psrldqi128(__x, _Shift * sizeof(value_type) * 8);
! 		  else
! 		    __x = __builtin_ia32_pslldqi128(__x, -_Shift * sizeof(value_type) * 8);
! 		  return _VecOps<_DataType>::_S_extract(__vec_bit_cast<__canon_value_type>(__x));
! 		}
! 	    }
! #endif
! 	  return _S_static_permute(*this, [](int __i) consteval {
! 		   int __off = __i + _Shift;
! 		   return __off >= _S_size || __off < 0 ? zero_element : __off;
! 		 });
  	}
  
        /** @internal
--- 449,459 ----
  	  static_assert(_Shift < _S_size && -_Shift < _S_size);
  	  if constexpr (_Shift == 0)
  	    return *this;
! 	  else
! 	    return _S_static_permute(*this, [](int __i) consteval {
! 		     int __off = __i + _Shift;
! 		     return __off >= _S_size || __off < 0 ? zero_element : __off;
! 		   });
  	}
  
        /** @internal
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_algo.h gcc-17-20260823/libstdc++-v3/include/bits/stl_algo.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_algo.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_algo.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 132,137 ****
--- 132,167 ----
        return __first;
      }
  
+   // Apply __f to each element in [__first, __last)
+   // Dispatches to __for_each_segment for segmented iterators
+   // (e.g. deque::iterator).
+   // Returns an iterator equal to __last.
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
+ #pragma GCC diagnostic ignored "-Wc++20-extensions" // template lambda
+   template<typename _InputIterator, typename _Function>
+     _GLIBCXX20_CONSTEXPR
+     _InputIterator
+     __for_each(_InputIterator __first, _InputIterator __last, _Function& __f)
+     {
+ #if __cplusplus >= 201103L
+       if constexpr (__enable_for_each_segment<_InputIterator>)
+ 	{
+ 	  std::__for_each_segment(__first, __last,
+ 	    [&]<typename _Iter>(_Iter __lfirst, _Iter __llast)
+ 	    { return std::__for_each(__lfirst, __llast, __f); });
+ 	  return __last;
+ 	}
+       else
+ #endif // C++11
+ 	{
+ 	  for (; __first != __last; ++__first)
+ 	    __f(*__first);
+ 	  return __first;
+ 	}
+     }
+ #pragma GCC diagnostic pop
+ 
    // set_difference
    // set_intersection
    // set_symmetric_difference
*************** _GLIBCXX_BEGIN_NAMESPACE_ALGO
*** 3813,3820 ****
        // concept requirements
        __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
        __glibcxx_requires_valid_range(__first, __last);
!       for (; __first != __last; ++__first)
! 	__f(*__first);
        return __f; // N.B. [alg.foreach] says std::move(f) but it's redundant.
      }
  
--- 3843,3849 ----
        // concept requirements
        __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
        __glibcxx_requires_valid_range(__first, __last);
!       std::__for_each(__first, __last, __f);
        return __f; // N.B. [alg.foreach] says std::move(f) but it's redundant.
      }
  
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_algobase.h gcc-17-20260823/libstdc++-v3/include/bits/stl_algobase.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_algobase.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_algobase.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 347,352 ****
--- 347,353 ----
  		   istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*);
  
    template<bool _IsMove, typename _CharT>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_char<_CharT>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 464,482 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  		   _OI);
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>);
  
    template<bool _IsMove, typename _II, typename _Tp>
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
--- 465,485 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  		   _OI);
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_a1(_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
  		   _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>);
  
    template<bool _IsMove, typename _II, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 600,605 ****
--- 603,609 ----
  	       _Size, _CharT*, bool);
  
    template<typename _CharT, typename _Size>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_char<_CharT>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_CharT, _CharT&, _CharT*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 752,764 ****
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _OI
      __copy_move_backward_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  			    _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  			    _OI);
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_backward_a1(
  			_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
--- 756,769 ----
  
    template<bool _IsMove,
  	   typename _Tp, typename _Ref, typename _Ptr, typename _OI>
!     _GLIBCXX26_CONSTEXPR _OI
      __copy_move_backward_a1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  			    _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
  			    _OI);
  
    template<bool _IsMove,
  	   typename _ITp, typename _IRef, typename _IPtr, typename _OTp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __copy_move_backward_a1(
  			_GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr>,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 766,771 ****
--- 771,777 ----
  			_GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>);
  
    template<bool _IsMove, typename _II, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value,
        _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*> >::__type
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 959,965 ****
      { std::__fill_a1(__first.base(), __last.base(), __value); }
  
    template<typename _Tp, typename _VTp>
!     void
      __fill_a1(const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
  	      const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
  	      const _VTp&);
--- 965,971 ----
      { std::__fill_a1(__first.base(), __last.base(), __value); }
  
    template<typename _Tp, typename _VTp>
!     _GLIBCXX26_CONSTEXPR void
      __fill_a1(const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
  	      const _GLIBCXX_STD_C::_Deque_iterator<_Tp, _Tp&, _Tp*>&,
  	      const _VTp&);
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1215,1220 ****
--- 1221,1227 ----
      };
  
    template<typename _Tp, typename _Ref, typename _Ptr, typename _II>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp, _Ref, _Ptr>,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1223,1234 ****
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     bool
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>);
  
    template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_II, _II,
--- 1230,1242 ----
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     _GLIBCXX26_CONSTEXPR bool
      __equal_aux1(_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  		 _GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>);
  
    template<typename _II, typename _Tp, typename _Ref, typename _Ptr>
+     _GLIBCXX26_CONSTEXPR
      typename __gnu_cxx::__enable_if<
        __is_any_random_access_iter<_II>::__value, bool>::__type
      __equal_aux1(_II, _II,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1434,1440 ****
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2>
!     bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
--- 1442,1448 ----
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2>
!     _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
*************** _GLIBCXX_END_NAMESPACE_CONTAINER
*** 1442,1455 ****
  
    template<typename _Tp1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     bool
      __lexicographical_compare_aux1(_Tp1*, _Tp1*,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>);
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
--- 1450,1463 ----
  
    template<typename _Tp1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(_Tp1*, _Tp1*,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp2, _Ref2, _Ptr2>);
  
    template<typename _Tp1, typename _Ref1, typename _Ptr1,
  	   typename _Tp2, typename _Ref2, typename _Ptr2>
!     _GLIBCXX26_CONSTEXPR bool
      __lexicographical_compare_aux1(
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
  	_GLIBCXX_STD_C::_Deque_iterator<_Tp1, _Ref1, _Ptr1>,
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_deque.h gcc-17-20260823/libstdc++-v3/include/bits/stl_deque.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_deque.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_deque.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 131,136 ****
--- 131,137 ----
        typedef __ptr_rebind<_Ptr, _Elt_pointer>		   _Map_pointer;
  #endif
  
+       _GLIBCXX26_CONSTEXPR
        static size_t _S_buffer_size() _GLIBCXX_NOEXCEPT
        { return __deque_buf_size(sizeof(_Tp)); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 147,156 ****
--- 148,159 ----
        _Elt_pointer _M_last;
        _Map_pointer _M_node;
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_iterator(_Elt_pointer __x, _Map_pointer __y) _GLIBCXX_NOEXCEPT
        : _M_cur(__x), _M_first(*__y),
  	_M_last(*__y + _S_buffer_size()), _M_node(__y) { }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_iterator() _GLIBCXX_NOEXCEPT
        : _M_cur(), _M_first(), _M_last(), _M_node() { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 164,173 ****
--- 167,178 ----
        template<typename _Iter,
  	       typename = _Require<is_same<_Self, const_iterator>,
  				   is_same<_Iter, iterator>>>
+        _GLIBCXX26_CONSTEXPR
         _Deque_iterator(const _Iter& __x) noexcept
         : _M_cur(__x._M_cur), _M_first(__x._M_first),
  	 _M_last(__x._M_last), _M_node(__x._M_node) { }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_iterator(const _Deque_iterator& __x) noexcept
         : _M_cur(__x._M_cur), _M_first(__x._M_first),
  	 _M_last(__x._M_last), _M_node(__x._M_node) { }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 175,195 ****
        _Deque_iterator& operator=(const _Deque_iterator&) = default;
  #endif
  
!       iterator
        _M_const_cast() const _GLIBCXX_NOEXCEPT
        { return iterator(_M_cur, _M_node); }
  
        _GLIBCXX_NODISCARD
!       reference
        operator*() const _GLIBCXX_NOEXCEPT
        { return *_M_cur; }
  
        _GLIBCXX_NODISCARD
!       pointer
        operator->() const _GLIBCXX_NOEXCEPT
        { return _M_cur; }
  
!       _Self&
        operator++() _GLIBCXX_NOEXCEPT
        {
  	++_M_cur;
--- 180,200 ----
        _Deque_iterator& operator=(const _Deque_iterator&) = default;
  #endif
  
!       _GLIBCXX26_CONSTEXPR iterator
        _M_const_cast() const _GLIBCXX_NOEXCEPT
        { return iterator(_M_cur, _M_node); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        operator*() const _GLIBCXX_NOEXCEPT
        { return *_M_cur; }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR pointer
        operator->() const _GLIBCXX_NOEXCEPT
        { return _M_cur; }
  
!       _GLIBCXX26_CONSTEXPR _Self&
        operator++() _GLIBCXX_NOEXCEPT
        {
  	++_M_cur;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 201,207 ****
  	return *this;
        }
  
!       _Self
        operator++(int) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = *this;
--- 206,212 ----
  	return *this;
        }
  
!       _GLIBCXX26_CONSTEXPR _Self
        operator++(int) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = *this;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 209,215 ****
  	return __tmp;
        }
  
!       _Self&
        operator--() _GLIBCXX_NOEXCEPT
        {
  	if (_M_cur == _M_first)
--- 214,220 ----
  	return __tmp;
        }
  
!       _GLIBCXX26_CONSTEXPR _Self&
        operator--() _GLIBCXX_NOEXCEPT
        {
  	if (_M_cur == _M_first)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 221,227 ****
  	return *this;
        }
  
!       _Self
        operator--(int) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = *this;
--- 226,232 ----
  	return *this;
        }
  
!       _GLIBCXX26_CONSTEXPR _Self
        operator--(int) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = *this;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 229,235 ****
  	return __tmp;
        }
  
!       _Self&
        operator+=(difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	const difference_type __offset = __n + (_M_cur - _M_first);
--- 234,240 ----
  	return __tmp;
        }
  
!       _GLIBCXX26_CONSTEXPR _Self&
        operator+=(difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	const difference_type __offset = __n + (_M_cur - _M_first);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 248,259 ****
  	return *this;
        }
  
!       _Self&
        operator-=(difference_type __n) _GLIBCXX_NOEXCEPT
        { return *this += -__n; }
  
        _GLIBCXX_NODISCARD
!       reference
        operator[](difference_type __n) const _GLIBCXX_NOEXCEPT
        { return *(*this + __n); }
  
--- 253,264 ----
  	return *this;
        }
  
!       _GLIBCXX26_CONSTEXPR _Self&
        operator-=(difference_type __n) _GLIBCXX_NOEXCEPT
        { return *this += -__n; }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        operator[](difference_type __n) const _GLIBCXX_NOEXCEPT
        { return *(*this + __n); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 262,268 ****
         *  _M_cur, which should therefore be set by the caller
         *  immediately afterwards, based on _M_first and _M_last.
         */
!       void
        _M_set_node(_Map_pointer __new_node) _GLIBCXX_NOEXCEPT
        {
  	_M_node = __new_node;
--- 267,273 ----
         *  _M_cur, which should therefore be set by the caller
         *  immediately afterwards, based on _M_first and _M_last.
         */
!       _GLIBCXX26_CONSTEXPR void
        _M_set_node(_Map_pointer __new_node) _GLIBCXX_NOEXCEPT
        {
  	_M_node = __new_node;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 271,277 ****
        }
  
        _GLIBCXX_NODISCARD
!       friend bool
        operator==(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return __x._M_cur == __y._M_cur; }
  
--- 276,282 ----
        }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator==(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return __x._M_cur == __y._M_cur; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 280,286 ****
        // operators are in scope (for additional details, see libstdc++/3628)
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator==(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
--- 285,291 ----
        // operators are in scope (for additional details, see libstdc++/3628)
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator==(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 288,294 ****
  
  #if __cpp_lib_three_way_comparison
        [[nodiscard]]
!       friend strong_ordering
        operator<=>(const _Self& __x, const _Self& __y) noexcept
        {
  	if (const auto __cmp = __x._M_node <=> __y._M_node; __cmp != 0)
--- 293,299 ----
  
  #if __cpp_lib_three_way_comparison
        [[nodiscard]]
!       friend _GLIBCXX26_CONSTEXPR strong_ordering
        operator<=>(const _Self& __x, const _Self& __y) noexcept
        {
  	if (const auto __cmp = __x._M_node <=> __y._M_node; __cmp != 0)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 297,316 ****
        }
  #else
        _GLIBCXX_NODISCARD
!       friend bool
        operator!=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__x == __y); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator!=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return !(__x == __y); }
  
        _GLIBCXX_NODISCARD
!       friend bool
        operator<(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        {
  	return (__x._M_node == __y._M_node)
--- 302,321 ----
        }
  #else
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator!=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__x == __y); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator!=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return !(__x == __y); }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator<(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        {
  	return (__x._M_node == __y._M_node)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 319,325 ****
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator<(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
--- 324,330 ----
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator<(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 329,367 ****
  	}
  
        _GLIBCXX_NODISCARD
!       friend bool
        operator>(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return __y < __x; }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator>(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return __y < __x; }
  
        _GLIBCXX_NODISCARD
!       friend bool
        operator<=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__y < __x); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator<=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return !(__y < __x); }
  
        _GLIBCXX_NODISCARD
!       friend bool
        operator>=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__x < __y); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend bool
  	operator>=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
--- 334,372 ----
  	}
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator>(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return __y < __x; }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator>(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return __y < __x; }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator<=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__y < __x); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator<=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
  	{ return !(__y < __x); }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR bool
        operator>=(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        { return !(__x < __y); }
  
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator>=(const _Self& __x,
  		   const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 369,375 ****
  #endif // three-way comparison
  
        _GLIBCXX_NODISCARD
!       friend difference_type
        operator-(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        {
  	return difference_type(_S_buffer_size())
--- 374,380 ----
  #endif // three-way comparison
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR difference_type
        operator-(const _Self& __x, const _Self& __y) _GLIBCXX_NOEXCEPT
        {
  	return difference_type(_S_buffer_size())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 384,390 ****
        // parameters.
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend difference_type
  	operator-(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
--- 389,395 ----
        // parameters.
        template<typename _RefR, typename _PtrR>
  	_GLIBCXX_NODISCARD
! 	friend _GLIBCXX26_CONSTEXPR difference_type
  	operator-(const _Self& __x,
  		  const _Deque_iterator<_Tp, _RefR, _PtrR>& __y)
  	_GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 396,402 ****
  	}
  
        _GLIBCXX_NODISCARD
!       friend _Self
        operator+(const _Self& __x, difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = __x;
--- 401,407 ----
  	}
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR _Self
        operator+(const _Self& __x, difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = __x;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 405,411 ****
        }
  
        _GLIBCXX_NODISCARD
!       friend _Self
        operator-(const _Self& __x, difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = __x;
--- 410,416 ----
        }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR _Self
        operator-(const _Self& __x, difference_type __n) _GLIBCXX_NOEXCEPT
        {
  	_Self __tmp = __x;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 414,420 ****
        }
  
        _GLIBCXX_NODISCARD
!       friend _Self
        operator+(difference_type __n, const _Self& __x) _GLIBCXX_NOEXCEPT
        { return __x + __n; }
  
--- 419,425 ----
        }
  
        _GLIBCXX_NODISCARD
!       friend _GLIBCXX26_CONSTEXPR _Self
        operator+(difference_type __n, const _Self& __x) _GLIBCXX_NOEXCEPT
        { return __x + __n; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 488,517 ****
  
        typedef _Alloc		  allocator_type;
  
!       allocator_type
        get_allocator() const _GLIBCXX_NOEXCEPT
        { return allocator_type(_M_get_Tp_allocator()); }
  
        typedef _Deque_iterator<_Tp, _Tp&, _Ptr>	  iterator;
        typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const>   const_iterator;
  
        _Deque_base()
        : _M_impl()
        { _M_initialize_map(0); }
  
        _Deque_base(size_t __num_elements)
        : _M_impl()
        { _M_initialize_map(__num_elements); }
  
        _Deque_base(const allocator_type& __a, size_t __num_elements)
        : _M_impl(__a)
        { _M_initialize_map(__num_elements); }
  
        _Deque_base(const allocator_type& __a)
        : _M_impl(__a)
        { /* Caller must initialize map. */ }
  
  #if __cplusplus >= 201103L
        _Deque_base(_Deque_base&& __x)
        : _M_impl(std::move(__x._M_get_Tp_allocator()))
        {
--- 493,527 ----
  
        typedef _Alloc		  allocator_type;
  
!       _GLIBCXX26_CONSTEXPR allocator_type
        get_allocator() const _GLIBCXX_NOEXCEPT
        { return allocator_type(_M_get_Tp_allocator()); }
  
        typedef _Deque_iterator<_Tp, _Tp&, _Ptr>	  iterator;
        typedef _Deque_iterator<_Tp, const _Tp&, _Ptr_const>   const_iterator;
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base()
        : _M_impl()
        { _M_initialize_map(0); }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(size_t __num_elements)
        : _M_impl()
        { _M_initialize_map(__num_elements); }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(const allocator_type& __a, size_t __num_elements)
        : _M_impl(__a)
        { _M_initialize_map(__num_elements); }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(const allocator_type& __a)
        : _M_impl(__a)
        { /* Caller must initialize map. */ }
  
  #if __cplusplus >= 201103L
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(_Deque_base&& __x)
        : _M_impl(std::move(__x._M_get_Tp_allocator()))
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 520,529 ****
--- 530,541 ----
  	  this->_M_impl._M_swap_data(__x._M_impl);
        }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(_Deque_base&& __x, const allocator_type& __a)
        : _M_impl(std::move(__x._M_impl), _Tp_alloc_type(__a))
        { __x._M_initialize_map(0); }
  
+       _GLIBCXX26_CONSTEXPR
        _Deque_base(_Deque_base&& __x, const allocator_type& __a, size_t __n)
        : _M_impl(__a)
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 542,547 ****
--- 554,560 ----
        }
  #endif
  
+       _GLIBCXX26_CONSTEXPR
        ~_Deque_base() _GLIBCXX_NOEXCEPT;
  
        typedef typename iterator::_Map_pointer _Map_pointer;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 553,558 ****
--- 566,572 ----
  	iterator _M_start;
  	iterator _M_finish;
  
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl_data() _GLIBCXX_NOEXCEPT
  	: _M_map(), _M_map_size(), _M_start(), _M_finish()
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 562,573 ****
  	_Deque_impl_data&
  	operator=(const _Deque_impl_data&) = default;
  
  	_Deque_impl_data(_Deque_impl_data&& __x) noexcept
  	: _Deque_impl_data(__x)
  	{ __x = _Deque_impl_data(); }
  #endif
  
! 	void
  	_M_swap_data(_Deque_impl_data& __x) _GLIBCXX_NOEXCEPT
  	{
  	  // Do not use std::swap(_M_start, __x._M_start), etc as it loses
--- 576,588 ----
  	_Deque_impl_data&
  	operator=(const _Deque_impl_data&) = default;
  
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl_data(_Deque_impl_data&& __x) noexcept
  	: _Deque_impl_data(__x)
  	{ __x = _Deque_impl_data(); }
  #endif
  
! 	_GLIBCXX26_CONSTEXPR void
  	_M_swap_data(_Deque_impl_data& __x) _GLIBCXX_NOEXCEPT
  	{
  	  // Do not use std::swap(_M_start, __x._M_start), etc as it loses
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 582,592 ****
--- 597,609 ----
        struct _Deque_impl
        : public _Tp_alloc_type, public _Deque_impl_data
        {
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl() _GLIBCXX_NOEXCEPT_IF(
  	  is_nothrow_default_constructible<_Tp_alloc_type>::value)
  	: _Tp_alloc_type()
  	{ }
  
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl(const _Tp_alloc_type& __a) _GLIBCXX_NOEXCEPT
  	: _Tp_alloc_type(__a)
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 594,659 ****
  #if __cplusplus >= 201103L
  	_Deque_impl(_Deque_impl&&) = default;
  
  	_Deque_impl(_Tp_alloc_type&& __a) noexcept
  	: _Tp_alloc_type(std::move(__a))
  	{ }
  
  	_Deque_impl(_Deque_impl&& __d, _Tp_alloc_type&& __a)
  	: _Tp_alloc_type(std::move(__a)), _Deque_impl_data(std::move(__d))
  	{ }
  #endif
        };
  
!       _Tp_alloc_type&
        _M_get_Tp_allocator() _GLIBCXX_NOEXCEPT
        { return this->_M_impl; }
  
!       const _Tp_alloc_type&
        _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl; }
  
!       _Map_alloc_type
        _M_get_map_allocator() const _GLIBCXX_NOEXCEPT
        { return _Map_alloc_type(_M_get_Tp_allocator()); }
  
!       _Ptr
        _M_allocate_node()
        {
  	typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
  	return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp)));
        }
  
!       void
        _M_deallocate_node(_Ptr __p) _GLIBCXX_NOEXCEPT
        {
  	typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
  	_Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp)));
        }
  
!       _Map_pointer
        _M_allocate_map(size_t __n)
        {
  	_Map_alloc_type __map_alloc = _M_get_map_allocator();
  	return _Map_alloc_traits::allocate(__map_alloc, __n);
        }
  
!       void
        _M_deallocate_map(_Map_pointer __p, size_t __n) _GLIBCXX_NOEXCEPT
        {
  	_Map_alloc_type __map_alloc = _M_get_map_allocator();
  	_Map_alloc_traits::deallocate(__map_alloc, __p, __n);
        }
  
!       void _M_initialize_map(size_t);
!       void _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish);
!       void _M_destroy_nodes(_Map_pointer __nstart,
! 			    _Map_pointer __nfinish) _GLIBCXX_NOEXCEPT;
        enum { _S_initial_map_size = 8 };
  
        _Deque_impl _M_impl;
      };
  
    template<typename _Tp, typename _Alloc>
      _Deque_base<_Tp, _Alloc>::
      ~_Deque_base() _GLIBCXX_NOEXCEPT
      {
--- 611,685 ----
  #if __cplusplus >= 201103L
  	_Deque_impl(_Deque_impl&&) = default;
  
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl(_Tp_alloc_type&& __a) noexcept
  	: _Tp_alloc_type(std::move(__a))
  	{ }
  
+ 	_GLIBCXX26_CONSTEXPR
  	_Deque_impl(_Deque_impl&& __d, _Tp_alloc_type&& __a)
  	: _Tp_alloc_type(std::move(__a)), _Deque_impl_data(std::move(__d))
  	{ }
  #endif
        };
  
!       _GLIBCXX26_CONSTEXPR _Tp_alloc_type&
        _M_get_Tp_allocator() _GLIBCXX_NOEXCEPT
        { return this->_M_impl; }
  
!       _GLIBCXX26_CONSTEXPR const _Tp_alloc_type&
        _M_get_Tp_allocator() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl; }
  
!       _GLIBCXX26_CONSTEXPR _Map_alloc_type
        _M_get_map_allocator() const _GLIBCXX_NOEXCEPT
        { return _Map_alloc_type(_M_get_Tp_allocator()); }
  
!       _GLIBCXX26_CONSTEXPR _Ptr
        _M_allocate_node()
        {
  	typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
  	return _Traits::allocate(_M_impl, __deque_buf_size(sizeof(_Tp)));
        }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_deallocate_node(_Ptr __p) _GLIBCXX_NOEXCEPT
        {
  	typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Traits;
  	_Traits::deallocate(_M_impl, __p, __deque_buf_size(sizeof(_Tp)));
        }
  
!       _GLIBCXX26_CONSTEXPR _Map_pointer
        _M_allocate_map(size_t __n)
        {
  	_Map_alloc_type __map_alloc = _M_get_map_allocator();
  	return _Map_alloc_traits::allocate(__map_alloc, __n);
        }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_deallocate_map(_Map_pointer __p, size_t __n) _GLIBCXX_NOEXCEPT
        {
  	_Map_alloc_type __map_alloc = _M_get_map_allocator();
  	_Map_alloc_traits::deallocate(__map_alloc, __p, __n);
        }
  
!       _GLIBCXX26_CONSTEXPR void
!       _M_initialize_map(size_t);
! 
!       _GLIBCXX26_CONSTEXPR void
!       _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish);
! 
!       _GLIBCXX26_CONSTEXPR void
!       _M_destroy_nodes(_Map_pointer __nstart, _Map_pointer __nfinish)
!       _GLIBCXX_NOEXCEPT;
! 
        enum { _S_initial_map_size = 8 };
  
        _Deque_impl _M_impl;
      };
  
    template<typename _Tp, typename _Alloc>
+     _GLIBCXX26_CONSTEXPR
      _Deque_base<_Tp, _Alloc>::
      ~_Deque_base() _GLIBCXX_NOEXCEPT
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 673,679 ****
     *  The initial underlying memory layout is a bit complicated...
    */
    template<typename _Tp, typename _Alloc>
!     void
      _Deque_base<_Tp, _Alloc>::
      _M_initialize_map(size_t __num_elements)
      {
--- 699,705 ----
     *  The initial underlying memory layout is a bit complicated...
    */
    template<typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      _Deque_base<_Tp, _Alloc>::
      _M_initialize_map(size_t __num_elements)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 712,718 ****
      }
  
    template<typename _Tp, typename _Alloc>
!     void
      _Deque_base<_Tp, _Alloc>::
      _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish)
      {
--- 738,744 ----
      }
  
    template<typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      _Deque_base<_Tp, _Alloc>::
      _M_create_nodes(_Map_pointer __nstart, _Map_pointer __nfinish)
      {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 730,736 ****
      }
  
    template<typename _Tp, typename _Alloc>
!     void
      _Deque_base<_Tp, _Alloc>::
      _M_destroy_nodes(_Map_pointer __nstart,
  		     _Map_pointer __nfinish) _GLIBCXX_NOEXCEPT
--- 756,762 ----
      }
  
    template<typename _Tp, typename _Alloc>
!     _GLIBCXX26_CONSTEXPR void
      _Deque_base<_Tp, _Alloc>::
      _M_destroy_nodes(_Map_pointer __nstart,
  		     _Map_pointer __nfinish) _GLIBCXX_NOEXCEPT
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 864,870 ****
        typedef _Alloc					allocator_type;
  
      private:
!       static size_t _S_buffer_size() _GLIBCXX_NOEXCEPT
        { return __deque_buf_size(sizeof(_Tp)); }
  
        // Functions controlling memory layout, and nothing else.
--- 890,897 ----
        typedef _Alloc					allocator_type;
  
      private:
!       static _GLIBCXX26_CONSTEXPR size_t
!       _S_buffer_size() _GLIBCXX_NOEXCEPT
        { return __deque_buf_size(sizeof(_Tp)); }
  
        // Functions controlling memory layout, and nothing else.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 900,906 ****
         *  @brief  Creates a %deque with no elements.
         *  @param  __a  An allocator object.
         */
!       explicit
        deque(const allocator_type& __a)
        : _Base(__a, 0) { }
  
--- 927,933 ----
         *  @brief  Creates a %deque with no elements.
         *  @param  __a  An allocator object.
         */
!       explicit _GLIBCXX26_CONSTEXPR
        deque(const allocator_type& __a)
        : _Base(__a, 0) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 913,919 ****
         *  This constructor fills the %deque with @a n default
         *  constructed elements.
         */
!       explicit
        deque(size_type __n, const allocator_type& __a = allocator_type())
        : _Base(__a, _S_check_init_len(__n, __a))
        { _M_default_initialize(); }
--- 940,946 ----
         *  This constructor fills the %deque with @a n default
         *  constructed elements.
         */
!       explicit _GLIBCXX26_CONSTEXPR
        deque(size_type __n, const allocator_type& __a = allocator_type())
        : _Base(__a, _S_check_init_len(__n, __a))
        { _M_default_initialize(); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 926,931 ****
--- 953,959 ----
         *
         *  This constructor fills the %deque with @a __n copies of @a __value.
         */
+       _GLIBCXX26_CONSTEXPR
        deque(size_type __n, const value_type& __value,
  	    const allocator_type& __a = allocator_type())
        : _Base(__a, _S_check_init_len(__n, __a))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 953,958 ****
--- 981,987 ----
         *  The newly-created %deque uses a copy of the allocator object used
         *  by @a __x (unless the allocator traits dictate a different object).
         */
+       _GLIBCXX26_CONSTEXPR
        deque(const deque& __x)
        : _Base(_Alloc_traits::_S_select_on_copy(__x._M_get_Tp_allocator()),
  	      __x.size())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 972,977 ****
--- 1001,1007 ----
        deque(deque&&) = default;
  
        /// Copy constructor with alternative allocator
+       _GLIBCXX26_CONSTEXPR
        deque(const deque& __x, const __type_identity_t<allocator_type>& __a)
        : _Base(__a, __x.size())
        { std::__uninitialized_copy_a(__x.begin(), __x.end(),
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 979,993 ****
--- 1009,1026 ----
  				    _M_get_Tp_allocator()); }
  
        /// Move constructor with alternative allocator
+       _GLIBCXX26_CONSTEXPR
        deque(deque&& __x, const __type_identity_t<allocator_type>& __a)
        : deque(std::move(__x), __a, typename _Alloc_traits::is_always_equal{})
        { }
  
      private:
+       _GLIBCXX26_CONSTEXPR
        deque(deque&& __x, const allocator_type& __a, true_type)
        : _Base(std::move(__x), __a)
        { }
  
+       _GLIBCXX26_CONSTEXPR
        deque(deque&& __x, const allocator_type& __a, false_type)
        : _Base(std::move(__x), __a, __x.size())
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1012,1017 ****
--- 1045,1051 ----
         *  This will call the element type's copy constructor N times
         *  (where N is __l.size()) and do no memory reallocation.
         */
+       _GLIBCXX26_CONSTEXPR
        deque(initializer_list<value_type> __l,
  	    const allocator_type& __a = allocator_type())
        : _Base(__a)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1039,1044 ****
--- 1073,1079 ----
  #if __cplusplus >= 201103L
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  	deque(_InputIterator __first, _InputIterator __last,
  	      const allocator_type& __a = allocator_type())
  	: _Base(__a)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1065,1070 ****
--- 1100,1106 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
  	deque(from_range_t, _Rg&& __rg, const allocator_type& __a = _Alloc())
  	: deque(__a)
  	{ append_range(std::forward<_Rg>(__rg)); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1075,1080 ****
--- 1111,1117 ----
         *  themselves are pointers, the pointed-to memory is not touched in any
         *  way.  Managing the pointer is the user's responsibility.
         */
+       _GLIBCXX26_CONSTEXPR
        ~deque()
        { _M_destroy_data(begin(), end(), _M_get_Tp_allocator()); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1087,1093 ****
         *  The newly-created %deque uses a copy of the allocator object used
         *  by @a __x (unless the allocator traits dictate a different object).
         */
!       deque&
        operator=(const deque& __x);
  
  #if __cplusplus >= 201103L
--- 1124,1130 ----
         *  The newly-created %deque uses a copy of the allocator object used
         *  by @a __x (unless the allocator traits dictate a different object).
         */
!       _GLIBCXX26_CONSTEXPR deque&
        operator=(const deque& __x);
  
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1099,1105 ****
         *  if the allocators permit it).
         *  @a __x is a valid, but unspecified %deque.
         */
!       deque&
        operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal())
        {
  	using __always_equal = typename _Alloc_traits::is_always_equal;
--- 1136,1142 ----
         *  if the allocators permit it).
         *  @a __x is a valid, but unspecified %deque.
         */
!       _GLIBCXX26_CONSTEXPR deque&
        operator=(deque&& __x) noexcept(_Alloc_traits::_S_always_equal())
        {
  	using __always_equal = typename _Alloc_traits::is_always_equal;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1118,1124 ****
         *  resulting %deque's size is the same as the number of elements
         *  assigned.
         */
!       deque&
        operator=(initializer_list<value_type> __l)
        {
  	_M_assign_aux(__l.begin(), __l.end(),
--- 1155,1161 ----
         *  resulting %deque's size is the same as the number of elements
         *  assigned.
         */
!       _GLIBCXX26_CONSTEXPR deque&
        operator=(initializer_list<value_type> __l)
        {
  	_M_assign_aux(__l.begin(), __l.end(),
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1137,1143 ****
         *  %deque and that the resulting %deque's size is the same as
         *  the number of elements assigned.
         */
!       void
        assign(size_type __n, const value_type& __val)
        { _M_fill_assign(__n, __val); }
  
--- 1174,1180 ----
         *  %deque and that the resulting %deque's size is the same as
         *  the number of elements assigned.
         */
!       _GLIBCXX26_CONSTEXPR void
        assign(size_type __n, const value_type& __val)
        { _M_fill_assign(__n, __val); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1156,1162 ****
  #if __cplusplus >= 201103L
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	void
  	assign(_InputIterator __first, _InputIterator __last)
  	{ _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
  #else
--- 1193,1199 ----
  #if __cplusplus >= 201103L
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	_GLIBCXX26_CONSTEXPR void
  	assign(_InputIterator __first, _InputIterator __last)
  	{ _M_assign_aux(__first, __last, std::__iterator_category(__first)); }
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1181,1187 ****
         *  resulting %deque's size is the same as the number of elements
         *  assigned.
         */
!       void
        assign(initializer_list<value_type> __l)
        { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); }
  #endif
--- 1218,1224 ----
         *  resulting %deque's size is the same as the number of elements
         *  assigned.
         */
!       _GLIBCXX26_CONSTEXPR void
        assign(initializer_list<value_type> __l)
        { _M_assign_aux(__l.begin(), __l.end(), random_access_iterator_tag()); }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1235,1241 ****
  
        /// Get a copy of the memory allocation object.
        _GLIBCXX_NODISCARD
!       allocator_type
        get_allocator() const _GLIBCXX_NOEXCEPT
        { return _Base::get_allocator(); }
  
--- 1272,1278 ----
  
        /// Get a copy of the memory allocation object.
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR allocator_type
        get_allocator() const _GLIBCXX_NOEXCEPT
        { return _Base::get_allocator(); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1245,1251 ****
         *  %deque.  Iteration is done in ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       iterator
        begin() _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_start; }
  
--- 1282,1288 ----
         *  %deque.  Iteration is done in ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR iterator
        begin() _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_start; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1254,1260 ****
         *  element in the %deque.  Iteration is done in ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       const_iterator
        begin() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_start; }
  
--- 1291,1297 ----
         *  element in the %deque.  Iteration is done in ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_iterator
        begin() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_start; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1264,1270 ****
         *  element order.
         */
        _GLIBCXX_NODISCARD
!       iterator
        end() _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish; }
  
--- 1301,1307 ----
         *  element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR iterator
        end() _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1274,1280 ****
         *  ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       const_iterator
        end() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish; }
  
--- 1311,1317 ----
         *  ordinary element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_iterator
        end() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1284,1290 ****
         *  element order.
         */
        _GLIBCXX_NODISCARD
!       reverse_iterator
        rbegin() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(this->_M_impl._M_finish); }
  
--- 1321,1327 ----
         *  element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reverse_iterator
        rbegin() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(this->_M_impl._M_finish); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1294,1300 ****
         *  reverse element order.
         */
        _GLIBCXX_NODISCARD
!       const_reverse_iterator
        rbegin() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(this->_M_impl._M_finish); }
  
--- 1331,1337 ----
         *  reverse element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        rbegin() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(this->_M_impl._M_finish); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1304,1310 ****
         *  in reverse element order.
         */
        _GLIBCXX_NODISCARD
!       reverse_iterator
        rend() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(this->_M_impl._M_start); }
  
--- 1341,1347 ----
         *  in reverse element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reverse_iterator
        rend() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(this->_M_impl._M_start); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1314,1320 ****
         *  done in reverse element order.
         */
        _GLIBCXX_NODISCARD
!       const_reverse_iterator
        rend() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(this->_M_impl._M_start); }
  
--- 1351,1357 ----
         *  done in reverse element order.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        rend() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(this->_M_impl._M_start); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1324,1330 ****
         *  element in the %deque.  Iteration is done in ordinary element order.
         */
        [[__nodiscard__]]
!       const_iterator
        cbegin() const noexcept
        { return this->_M_impl._M_start; }
  
--- 1361,1367 ----
         *  element in the %deque.  Iteration is done in ordinary element order.
         */
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_iterator
        cbegin() const noexcept
        { return this->_M_impl._M_start; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1334,1340 ****
         *  ordinary element order.
         */
        [[__nodiscard__]]
!       const_iterator
        cend() const noexcept
        { return this->_M_impl._M_finish; }
  
--- 1371,1377 ----
         *  ordinary element order.
         */
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_iterator
        cend() const noexcept
        { return this->_M_impl._M_finish; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1344,1350 ****
         *  reverse element order.
         */
        [[__nodiscard__]]
!       const_reverse_iterator
        crbegin() const noexcept
        { return const_reverse_iterator(this->_M_impl._M_finish); }
  
--- 1381,1387 ----
         *  reverse element order.
         */
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        crbegin() const noexcept
        { return const_reverse_iterator(this->_M_impl._M_finish); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1354,1360 ****
         *  done in reverse element order.
         */
        [[__nodiscard__]]
!       const_reverse_iterator
        crend() const noexcept
        { return const_reverse_iterator(this->_M_impl._M_start); }
  #endif
--- 1391,1397 ----
         *  done in reverse element order.
         */
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        crend() const noexcept
        { return const_reverse_iterator(this->_M_impl._M_start); }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1362,1368 ****
        // [23.2.1.2] capacity
        /**  Returns the number of elements in the %deque.  */
        _GLIBCXX_NODISCARD
!       size_type
        size() const _GLIBCXX_NOEXCEPT
        {
  	size_type __sz = this->_M_impl._M_finish - this->_M_impl._M_start;
--- 1399,1405 ----
        // [23.2.1.2] capacity
        /**  Returns the number of elements in the %deque.  */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR size_type
        size() const _GLIBCXX_NOEXCEPT
        {
  	size_type __sz = this->_M_impl._M_finish - this->_M_impl._M_start;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1373,1379 ****
  
        /**  Returns the size() of the largest possible %deque.  */
        _GLIBCXX_NODISCARD
!       size_type
        max_size() const _GLIBCXX_NOEXCEPT
        { return _S_max_size(_M_get_Tp_allocator()); }
  
--- 1410,1416 ----
  
        /**  Returns the size() of the largest possible %deque.  */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR size_type
        max_size() const _GLIBCXX_NOEXCEPT
        { return _S_max_size(_M_get_Tp_allocator()); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1387,1393 ****
         *  %deque's current size the %deque is truncated, otherwise
         *  default constructed elements are appended.
         */
!       void
        resize(size_type __new_size)
        {
  	const size_type __len = size();
--- 1424,1430 ----
         *  %deque's current size the %deque is truncated, otherwise
         *  default constructed elements are appended.
         */
!       _GLIBCXX26_CONSTEXPR void
        resize(size_type __new_size)
        {
  	const size_type __len = size();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1409,1415 ****
         *  %deque is extended and new elements are populated with given
         *  data.
         */
!       void
        resize(size_type __new_size, const value_type& __x)
  #else
        /**
--- 1446,1452 ----
         *  %deque is extended and new elements are populated with given
         *  data.
         */
!       _GLIBCXX26_CONSTEXPR void
        resize(size_type __new_size, const value_type& __x)
  #else
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1437,1443 ****
  
  #if __cplusplus >= 201103L
        /**  A non-binding request to reduce memory use.  */
!       void
        shrink_to_fit() noexcept
        { _M_shrink_to_fit(); }
  #endif
--- 1474,1480 ----
  
  #if __cplusplus >= 201103L
        /**  A non-binding request to reduce memory use.  */
!       _GLIBCXX26_CONSTEXPR void
        shrink_to_fit() noexcept
        { _M_shrink_to_fit(); }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1446,1452 ****
         *  Returns true if the %deque is empty.  (Thus begin() would
         *  equal end().)
         */
!       _GLIBCXX_NODISCARD bool
        empty() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish == this->_M_impl._M_start; }
  
--- 1483,1490 ----
         *  Returns true if the %deque is empty.  (Thus begin() would
         *  equal end().)
         */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR bool
        empty() const _GLIBCXX_NOEXCEPT
        { return this->_M_impl._M_finish == this->_M_impl._M_start; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1463,1469 ****
         *  see at().)
         */
        _GLIBCXX_NODISCARD
!       reference
        operator[](size_type __n) _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_subscript(__n);
--- 1501,1507 ----
         *  see at().)
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        operator[](size_type __n) _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_subscript(__n);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1482,1488 ****
         *  see at().)
         */
        _GLIBCXX_NODISCARD
!       const_reference
        operator[](size_type __n) const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_subscript(__n);
--- 1520,1526 ----
         *  see at().)
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        operator[](size_type __n) const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_subscript(__n);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1491,1497 ****
  
      protected:
        /// Safety check used only from at().
!       void
        _M_range_check(size_type __n) const
        {
  	if (__n >= this->size())
--- 1529,1535 ----
  
      protected:
        /// Safety check used only from at().
!       _GLIBCXX26_CONSTEXPR void
        _M_range_check(size_type __n) const
        {
  	if (__n >= this->size())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1513,1519 ****
         *  is first checked that it is in the range of the deque.  The
         *  function throws out_of_range if the check fails.
         */
!       reference
        at(size_type __n)
        {
  	_M_range_check(__n);
--- 1551,1557 ----
         *  is first checked that it is in the range of the deque.  The
         *  function throws out_of_range if the check fails.
         */
!       _GLIBCXX26_CONSTEXPR reference
        at(size_type __n)
        {
  	_M_range_check(__n);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1531,1537 ****
         *  checked that it is in the range of the deque.  The function throws
         *  out_of_range if the check fails.
         */
!       const_reference
        at(size_type __n) const
        {
  	_M_range_check(__n);
--- 1569,1575 ----
         *  checked that it is in the range of the deque.  The function throws
         *  out_of_range if the check fails.
         */
!       _GLIBCXX26_CONSTEXPR const_reference
        at(size_type __n) const
        {
  	_M_range_check(__n);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1543,1549 ****
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       reference
        front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1581,1587 ----
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1555,1561 ****
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       const_reference
        front() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1593,1599 ----
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        front() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1567,1573 ****
         *  %deque.
         */
        _GLIBCXX_NODISCARD
!       reference
        back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1605,1611 ----
         *  %deque.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1581,1587 ****
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       const_reference
        back() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1619,1625 ----
         *  element of the %deque.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        back() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1600,1606 ****
         *  data to it.  Due to the nature of a %deque this operation
         *  can be done in constant time.
         */
!       void
        push_front(const value_type& __x)
        {
  	if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
--- 1638,1644 ----
         *  data to it.  Due to the nature of a %deque this operation
         *  can be done in constant time.
         */
!       _GLIBCXX26_CONSTEXPR void
        push_front(const value_type& __x)
        {
  	if (this->_M_impl._M_start._M_cur != this->_M_impl._M_start._M_first)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1615,1627 ****
        }
  
  #if __cplusplus >= 201103L
!       void
        push_front(value_type&& __x)
        { emplace_front(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	reference
  #else
  	void
  #endif
--- 1653,1665 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push_front(value_type&& __x)
        { emplace_front(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	_GLIBCXX26_CONSTEXPR reference
  #else
  	void
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1637,1643 ****
         *  to it.  Due to the nature of a %deque this operation can be
         *  done in constant time.
         */
!       void
        push_back(const value_type& __x)
        {
  	if (this->_M_impl._M_finish._M_cur
--- 1675,1681 ----
         *  to it.  Due to the nature of a %deque this operation can be
         *  done in constant time.
         */
!       _GLIBCXX26_CONSTEXPR void
        push_back(const value_type& __x)
        {
  	if (this->_M_impl._M_finish._M_cur
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1652,1664 ****
        }
  
  #if __cplusplus >= 201103L
!       void
        push_back(value_type&& __x)
        { emplace_back(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	reference
  #else
  	void
  #endif
--- 1690,1702 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push_back(value_type&& __x)
        { emplace_back(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	_GLIBCXX26_CONSTEXPR reference
  #else
  	void
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1673,1679 ****
         *  Note that no data is returned, and if the first element's data is
         *  needed, it should be retrieved before pop_front() is called.
         */
!       void
        pop_front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1711,1717 ----
         *  Note that no data is returned, and if the first element's data is
         *  needed, it should be retrieved before pop_front() is called.
         */
!       _GLIBCXX26_CONSTEXPR void
        pop_front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1696,1702 ****
         *  Note that no data is returned, and if the last element's data is
         *  needed, it should be retrieved before pop_back() is called.
         */
!       void
        pop_back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
--- 1734,1740 ----
         *  Note that no data is returned, and if the last element's data is
         *  needed, it should be retrieved before pop_back() is called.
         */
!       _GLIBCXX26_CONSTEXPR void
        pop_back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1722,1728 ****
         *  with T(std::forward<Args>(args)...) before the specified location.
         */
        template<typename... _Args>
! 	iterator
  	emplace(const_iterator __position, _Args&&... __args);
  
        /**
--- 1760,1766 ----
         *  with T(std::forward<Args>(args)...) before the specified location.
         */
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR iterator
  	emplace(const_iterator __position, _Args&&... __args);
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1734,1740 ****
         *  This function will insert a copy of the given value before the
         *  specified location.
         */
!       iterator
        insert(const_iterator __position, const value_type& __x);
  #else
        /**
--- 1772,1778 ----
         *  This function will insert a copy of the given value before the
         *  specified location.
         */
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, const value_type& __x);
  #else
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1746,1752 ****
         *  This function will insert a copy of the given value before the
         *  specified location.
         */
!       iterator
        insert(iterator __position, const value_type& __x);
  #endif
  
--- 1784,1790 ----
         *  This function will insert a copy of the given value before the
         *  specified location.
         */
!       _GLIBCXX26_CONSTEXPR iterator
        insert(iterator __position, const value_type& __x);
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1760,1766 ****
         *  This function will insert a copy of the given rvalue before the
         *  specified location.
         */
!       iterator
        insert(const_iterator __position, value_type&& __x)
        { return emplace(__position, std::move(__x)); }
  
--- 1798,1804 ----
         *  This function will insert a copy of the given rvalue before the
         *  specified location.
         */
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, value_type&& __x)
        { return emplace(__position, std::move(__x)); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1774,1780 ****
         *  initializer_list @a __l into the %deque before the location
         *  specified by @a __p.  This is known as <em>list insert</em>.
         */
!       iterator
        insert(const_iterator __p, initializer_list<value_type> __l)
        {
  	auto __offset = __p - cbegin();
--- 1812,1818 ----
         *  initializer_list @a __l into the %deque before the location
         *  specified by @a __p.  This is known as <em>list insert</em>.
         */
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __p, initializer_list<value_type> __l)
        {
  	auto __offset = __p - cbegin();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1793,1799 ****
         *  This function will insert a specified number of copies of the given
         *  data before the location specified by @a __position.
         */
!       iterator
        insert(const_iterator __position, size_type __n, const value_type& __x)
        {
  	difference_type __offset = __position - cbegin();
--- 1831,1837 ----
         *  This function will insert a specified number of copies of the given
         *  data before the location specified by @a __position.
         */
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, size_type __n, const value_type& __x)
        {
  	difference_type __offset = __position - cbegin();
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1810,1816 ****
         *  This function will insert a specified number of copies of the given
         *  data before the location specified by @a __position.
         */
!       void
        insert(iterator __position, size_type __n, const value_type& __x)
        { _M_fill_insert(__position, __n, __x); }
  #endif
--- 1848,1854 ----
         *  This function will insert a specified number of copies of the given
         *  data before the location specified by @a __position.
         */
!       _GLIBCXX26_CONSTEXPR void
        insert(iterator __position, size_type __n, const value_type& __x)
        { _M_fill_insert(__position, __n, __x); }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1829,1835 ****
         */
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	iterator
  	insert(const_iterator __position, _InputIterator __first,
  	       _InputIterator __last)
  	{
--- 1867,1873 ----
         */
        template<typename _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	_GLIBCXX26_CONSTEXPR iterator
  	insert(const_iterator __position, _InputIterator __first,
  	       _InputIterator __last)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1850,1856 ****
         *  by @a __position.  This is known as <em>range insert</em>.
         */
        template<typename _InputIterator>
! 	void
  	insert(iterator __position, _InputIterator __first,
  	       _InputIterator __last)
  	{
--- 1888,1894 ----
         *  by @a __position.  This is known as <em>range insert</em>.
         */
        template<typename _InputIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	insert(iterator __position, _InputIterator __first,
  	       _InputIterator __last)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1870,1876 ****
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	iterator
  	insert_range(const_iterator __pos, _Rg&& __rg);
  
        /**
--- 1908,1914 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR iterator
  	insert_range(const_iterator __pos, _Rg&& __rg);
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1879,1885 ****
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	prepend_range(_Rg&& __rg);
  
        /**
--- 1917,1923 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	prepend_range(_Rg&& __rg);
  
        /**
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1888,1894 ****
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	append_range(_Rg&& __rg);
  #endif // containers_ranges
  
--- 1926,1932 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	append_range(_Rg&& __rg);
  #endif // containers_ranges
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1905,1911 ****
         *  itself a pointer, the pointed-to memory is not touched in any way.
         *  Managing the pointer is the user's responsibility.
         */
!       iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __position)
  #else
--- 1943,1949 ----
         *  itself a pointer, the pointed-to memory is not touched in any way.
         *  Managing the pointer is the user's responsibility.
         */
!       _GLIBCXX26_CONSTEXPR iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __position)
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1929,1935 ****
         *  themselves are pointers, the pointed-to memory is not touched in any
         *  way.  Managing the pointer is the user's responsibility.
         */
!       iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __first, const_iterator __last)
  #else
--- 1967,1973 ----
         *  themselves are pointers, the pointed-to memory is not touched in any
         *  way.  Managing the pointer is the user's responsibility.
         */
!       _GLIBCXX26_CONSTEXPR iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __first, const_iterator __last)
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1948,1954 ****
         *
         *  Whether the allocators are swapped depends on the allocator traits.
         */
!       void
        swap(deque& __x) _GLIBCXX_NOEXCEPT
        {
  #if __cplusplus >= 201103L
--- 1986,1992 ----
         *
         *  Whether the allocators are swapped depends on the allocator traits.
         */
!       _GLIBCXX26_CONSTEXPR void
        swap(deque& __x) _GLIBCXX_NOEXCEPT
        {
  #if __cplusplus >= 201103L
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1966,1972 ****
         *  pointed-to memory is not touched in any way.  Managing the pointer is
         *  the user's responsibility.
         */
!       void
        clear() _GLIBCXX_NOEXCEPT
        { _M_erase_at_end(begin()); }
  
--- 2004,2010 ----
         *  pointed-to memory is not touched in any way.  Managing the pointer is
         *  the user's responsibility.
         */
!       _GLIBCXX26_CONSTEXPR void
        clear() _GLIBCXX_NOEXCEPT
        { _M_erase_at_end(begin()); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 1998,2004 ****
  	}
  #endif
  
!       static size_t
        _S_check_init_len(size_t __n, const allocator_type& __a)
        {
  	if (__n > _S_max_size(__a))
--- 2036,2042 ----
  	}
  #endif
  
!       static _GLIBCXX26_CONSTEXPR size_t
        _S_check_init_len(size_t __n, const allocator_type& __a)
        {
  	if (__n > _S_max_size(__a))
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2007,2013 ****
  	return __n;
        }
  
!       static size_type
        _S_max_size(const _Tp_alloc_type& __a) _GLIBCXX_NOEXCEPT
        {
  	const size_t __diffmax = __gnu_cxx::__numeric_traits<ptrdiff_t>::__max;
--- 2045,2051 ----
  	return __n;
        }
  
!       static _GLIBCXX26_CONSTEXPR size_type
        _S_max_size(const _Tp_alloc_type& __a) _GLIBCXX_NOEXCEPT
        {
  	const size_t __diffmax = __gnu_cxx::__numeric_traits<ptrdiff_t>::__max;
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2027,2039 ****
         *  push_back on each value from the iterator.
         */
        template<typename _InputIterator>
! 	void
  	_M_range_initialize(_InputIterator __first, _InputIterator __last,
  			    std::input_iterator_tag);
  
        // called by the second initialize_dispatch above
        template<typename _ForwardIterator>
! 	void
  	_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			    std::forward_iterator_tag);
        ///@}
--- 2065,2077 ----
         *  push_back on each value from the iterator.
         */
        template<typename _InputIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_range_initialize(_InputIterator __first, _InputIterator __last,
  			    std::input_iterator_tag);
  
        // called by the second initialize_dispatch above
        template<typename _ForwardIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_range_initialize(_ForwardIterator __first, _ForwardIterator __last,
  			    std::forward_iterator_tag);
        ///@}
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2047,2058 ****
         *  This function is called only when the user provides an explicit size
         *  (with or without an explicit exemplar value).
         */
!       void
        _M_fill_initialize(const value_type& __value);
  
  #if __cplusplus >= 201103L
        // called by deque(n).
!       void
        _M_default_initialize();
  #endif
  
--- 2085,2096 ----
         *  This function is called only when the user provides an explicit size
         *  (with or without an explicit exemplar value).
         */
!       _GLIBCXX26_CONSTEXPR void
        _M_fill_initialize(const value_type& __value);
  
  #if __cplusplus >= 201103L
        // called by deque(n).
!       _GLIBCXX26_CONSTEXPR void
        _M_default_initialize();
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2079,2091 ****
  
        // called by the second assign_dispatch above
        template<typename _InputIterator>
! 	void
  	_M_assign_aux(_InputIterator __first, _InputIterator __last,
  		      std::input_iterator_tag);
  
        // called by the second assign_dispatch above
        template<typename _ForwardIterator>
! 	void
  	_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
  		      std::forward_iterator_tag)
  	{
--- 2117,2129 ----
  
        // called by the second assign_dispatch above
        template<typename _InputIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_assign_aux(_InputIterator __first, _InputIterator __last,
  		      std::input_iterator_tag);
  
        // called by the second assign_dispatch above
        template<typename _ForwardIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,
  		      std::forward_iterator_tag)
  	{
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2104,2110 ****
  
        // Called by assign(n,t), and the range assign when it turns out
        // to be the same thing.
!       void
        _M_fill_assign(size_type __n, const value_type& __val)
        {
  	if (__n > size())
--- 2142,2148 ----
  
        // Called by assign(n,t), and the range assign when it turns out
        // to be the same thing.
!       _GLIBCXX26_CONSTEXPR void
        _M_fill_assign(size_type __n, const value_type& __val)
        {
  	if (__n > size())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2127,2141 ****
        void _M_push_front_aux(const value_type&);
  #else
        template<typename... _Args>
! 	void _M_push_back_aux(_Args&&... __args);
  
        template<typename... _Args>
! 	void _M_push_front_aux(_Args&&... __args);
  #endif
  
!       void _M_pop_back_aux();
  
!       void _M_pop_front_aux();
        ///@}
  
        // Internal insert functions follow.  The *_aux functions do the actual
--- 2165,2183 ----
        void _M_push_front_aux(const value_type&);
  #else
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR void
! 	_M_push_back_aux(_Args&&... __args);
  
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR void
! 	_M_push_front_aux(_Args&&... __args);
  #endif
  
!       _GLIBCXX26_CONSTEXPR void
!       _M_pop_back_aux();
  
!       _GLIBCXX26_CONSTEXPR void
!       _M_pop_front_aux();
        ///@}
  
        // Internal insert functions follow.  The *_aux functions do the actual
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2147,2160 ****
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 438. Ambiguity in the "do the right thing" clause
        template<typename _Integer>
! 	void
  	_M_insert_dispatch(iterator __pos,
  			   _Integer __n, _Integer __x, __true_type)
  	{ _M_fill_insert(__pos, __n, __x); }
  
        // called by the range insert to implement [23.1.1]/9
        template<typename _InputIterator>
! 	void
  	_M_insert_dispatch(iterator __pos,
  			   _InputIterator __first, _InputIterator __last,
  			   __false_type)
--- 2189,2202 ----
        // _GLIBCXX_RESOLVE_LIB_DEFECTS
        // 438. Ambiguity in the "do the right thing" clause
        template<typename _Integer>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_insert_dispatch(iterator __pos,
  			   _Integer __n, _Integer __x, __true_type)
  	{ _M_fill_insert(__pos, __n, __x); }
  
        // called by the range insert to implement [23.1.1]/9
        template<typename _InputIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_insert_dispatch(iterator __pos,
  			   _InputIterator __first, _InputIterator __last,
  			   __false_type)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2166,2195 ****
  
        // insert [__first, __last) at the front, assumes distance(__first, __last) is n
        template<typename _InputIterator, typename _Sentinel>
!       void _M_range_prepend(_InputIterator __first, _Sentinel __last,
! 			    size_type __n);
  
        // insert [__first, __last) at the back, assumes distance(__first, __last) is n
        template<typename _InputIterator, typename _Sentinel>
!       void _M_range_append(_InputIterator __first, _Sentinel __last,
! 			   size_type __n);
  
        // called by the second insert_dispatch above
        template<typename _InputIterator>
! 	void
  	_M_range_insert_aux(iterator __pos, _InputIterator __first,
  			    _InputIterator __last, std::input_iterator_tag);
  
        // called by the second insert_dispatch above
        template<typename _ForwardIterator>
! 	void
  	_M_range_insert_aux(iterator __pos, _ForwardIterator __first,
  			    _ForwardIterator __last, std::forward_iterator_tag);
  
        // Called by insert(p,n,x), and the range insert when it turns out to be
        // the same thing.  Can use fill functions in optimal situations,
        // otherwise passes off to insert_aux(p,n,x).
!       void
        _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
  
        // called by insert(p,x)
--- 2208,2239 ----
  
        // insert [__first, __last) at the front, assumes distance(__first, __last) is n
        template<typename _InputIterator, typename _Sentinel>
! 	_GLIBCXX26_CONSTEXPR void
! 	_M_range_prepend(_InputIterator __first, _Sentinel __last,
! 			 size_type __n);
  
        // insert [__first, __last) at the back, assumes distance(__first, __last) is n
        template<typename _InputIterator, typename _Sentinel>
! 	_GLIBCXX26_CONSTEXPR void
! 	_M_range_append(_InputIterator __first, _Sentinel __last,
! 			size_type __n);
  
        // called by the second insert_dispatch above
        template<typename _InputIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_range_insert_aux(iterator __pos, _InputIterator __first,
  			    _InputIterator __last, std::input_iterator_tag);
  
        // called by the second insert_dispatch above
        template<typename _ForwardIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_range_insert_aux(iterator __pos, _ForwardIterator __first,
  			    _ForwardIterator __last, std::forward_iterator_tag);
  
        // Called by insert(p,n,x), and the range insert when it turns out to be
        // the same thing.  Can use fill functions in optimal situations,
        // otherwise passes off to insert_aux(p,n,x).
!       _GLIBCXX26_CONSTEXPR void
        _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);
  
        // called by insert(p,x)
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2200,2221 ****
        struct _Temporary_value
        {
  	template<typename... _Args>
! 	  _GLIBCXX20_CONSTEXPR explicit
  	  _Temporary_value(deque* __deque, _Args&&... __args) : _M_this(__deque)
  	  {
  	    _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(),
  				     std::forward<_Args>(__args)...);
  	  }
  
! 	_GLIBCXX20_CONSTEXPR
  	~_Temporary_value()
  	{ _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
  
! 	_GLIBCXX20_CONSTEXPR value_type&
  	_M_val() noexcept { return __tmp_val; }
  
        private:
! 	_GLIBCXX20_CONSTEXPR _Tp*
  	_M_ptr() noexcept { return std::__addressof(__tmp_val); }
  
  	union
--- 2244,2265 ----
        struct _Temporary_value
        {
  	template<typename... _Args>
! 	  explicit _GLIBCXX26_CONSTEXPR
  	  _Temporary_value(deque* __deque, _Args&&... __args) : _M_this(__deque)
  	  {
  	    _Alloc_traits::construct(_M_this->_M_impl, _M_ptr(),
  				     std::forward<_Args>(__args)...);
  	  }
  
! 	_GLIBCXX26_CONSTEXPR
  	~_Temporary_value()
  	{ _Alloc_traits::destroy(_M_this->_M_impl, _M_ptr()); }
  
! 	_GLIBCXX26_CONSTEXPR value_type&
  	_M_val() noexcept { return __tmp_val; }
  
        private:
! 	_GLIBCXX26_CONSTEXPR _Tp*
  	_M_ptr() noexcept { return std::__addressof(__tmp_val); }
  
  	union
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2226,2247 ****
  	deque* _M_this;
        };
  
!       iterator
        _M_insert_aux(iterator __pos, const value_type& __x)
        { return _M_emplace_aux(__pos, __x); }
  
        template<typename... _Args>
! 	iterator
  	_M_emplace_aux(iterator __pos, _Args&&... __args);
  #endif
  
        // called by insert(p,n,x) via fill_insert
!       void
        _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
  
        // called by range_insert_aux for forward iterators
        template<typename _ForwardIterator>
! 	void
  	_M_insert_aux(iterator __pos,
  		      _ForwardIterator __first, _ForwardIterator __last,
  		      size_type __n);
--- 2270,2291 ----
  	deque* _M_this;
        };
  
!       _GLIBCXX26_CONSTEXPR iterator
        _M_insert_aux(iterator __pos, const value_type& __x)
        { return _M_emplace_aux(__pos, __x); }
  
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR iterator
  	_M_emplace_aux(iterator __pos, _Args&&... __args);
  #endif
  
        // called by insert(p,n,x) via fill_insert
!       _GLIBCXX26_CONSTEXPR void
        _M_insert_aux(iterator __pos, size_type __n, const value_type& __x);
  
        // called by range_insert_aux for forward iterators
        template<typename _ForwardIterator>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_insert_aux(iterator __pos,
  		      _ForwardIterator __first, _ForwardIterator __last,
  		      size_type __n);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2249,2265 ****
  
        // Internal erase functions follow.
  
!       void
        _M_destroy_data_aux(iterator __first, iterator __last);
  
        // Called by ~deque().
        // NB: Doesn't deallocate the nodes.
        template<typename _Alloc1>
! 	void
  	_M_destroy_data(iterator __first, iterator __last, const _Alloc1&)
  	{ _M_destroy_data_aux(__first, __last); }
  
!       void
        _M_destroy_data(iterator __first, iterator __last,
  		      const std::allocator<_Tp>&)
        {
--- 2293,2309 ----
  
        // Internal erase functions follow.
  
!       _GLIBCXX26_CONSTEXPR void
        _M_destroy_data_aux(iterator __first, iterator __last);
  
        // Called by ~deque().
        // NB: Doesn't deallocate the nodes.
        template<typename _Alloc1>
! 	_GLIBCXX26_CONSTEXPR void
  	_M_destroy_data(iterator __first, iterator __last, const _Alloc1&)
  	{ _M_destroy_data_aux(__first, __last); }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_destroy_data(iterator __first, iterator __last,
  		      const std::allocator<_Tp>&)
        {
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2268,2274 ****
        }
  
        // Called by erase(q1, q2).
!       void
        _M_erase_at_begin(iterator __pos)
        {
  	_M_destroy_data(begin(), __pos, _M_get_Tp_allocator());
--- 2312,2318 ----
        }
  
        // Called by erase(q1, q2).
!       _GLIBCXX26_CONSTEXPR void
        _M_erase_at_begin(iterator __pos)
        {
  	_M_destroy_data(begin(), __pos, _M_get_Tp_allocator());
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2278,2284 ****
  
        // Called by erase(q1, q2), resize(), clear(), _M_assign_aux,
        // _M_fill_assign, operator=.
!       void
        _M_erase_at_end(iterator __pos)
        {
  	_M_destroy_data(__pos, end(), _M_get_Tp_allocator());
--- 2322,2328 ----
  
        // Called by erase(q1, q2), resize(), clear(), _M_assign_aux,
        // _M_fill_assign, operator=.
!       _GLIBCXX26_CONSTEXPR void
        _M_erase_at_end(iterator __pos)
        {
  	_M_destroy_data(__pos, end(), _M_get_Tp_allocator());
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2287,2310 ****
  	this->_M_impl._M_finish = __pos;
        }
  
!       iterator
        _M_erase(iterator __pos);
  
!       iterator
        _M_erase(iterator __first, iterator __last);
  
  #if __cplusplus >= 201103L
        // Called by resize(sz).
!       void
        _M_default_append(size_type __n);
  
!       bool
        _M_shrink_to_fit();
  #endif
  
        ///@{
        /// Memory-handling helpers for the previous internal insert functions.
!       iterator
        _M_reserve_elements_at_front(size_type __n)
        {
  	const size_type __vacancies = this->_M_impl._M_start._M_cur
--- 2331,2354 ----
  	this->_M_impl._M_finish = __pos;
        }
  
!       _GLIBCXX26_CONSTEXPR iterator
        _M_erase(iterator __pos);
  
!       _GLIBCXX26_CONSTEXPR iterator
        _M_erase(iterator __first, iterator __last);
  
  #if __cplusplus >= 201103L
        // Called by resize(sz).
!       _GLIBCXX26_CONSTEXPR void
        _M_default_append(size_type __n);
  
!       _GLIBCXX26_CONSTEXPR bool
        _M_shrink_to_fit();
  #endif
  
        ///@{
        /// Memory-handling helpers for the previous internal insert functions.
!       _GLIBCXX26_CONSTEXPR iterator
        _M_reserve_elements_at_front(size_type __n)
        {
  	const size_type __vacancies = this->_M_impl._M_start._M_cur
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2314,2320 ****
  	return this->_M_impl._M_start - difference_type(__n);
        }
  
!       iterator
        _M_reserve_elements_at_back(size_type __n)
        {
  	const size_type __vacancies = (this->_M_impl._M_finish._M_last
--- 2358,2364 ----
  	return this->_M_impl._M_start - difference_type(__n);
        }
  
!       _GLIBCXX26_CONSTEXPR iterator
        _M_reserve_elements_at_back(size_type __n)
        {
  	const size_type __vacancies = (this->_M_impl._M_finish._M_last
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2324,2333 ****
  	return this->_M_impl._M_finish + difference_type(__n);
        }
  
!       void
        _M_new_elements_at_front(size_type __new_elements);
  
!       void
        _M_new_elements_at_back(size_type __new_elements);
        ///@}
  
--- 2368,2377 ----
  	return this->_M_impl._M_finish + difference_type(__n);
        }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_new_elements_at_front(size_type __new_elements);
  
!       _GLIBCXX26_CONSTEXPR void
        _M_new_elements_at_back(size_type __new_elements);
        ///@}
  
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2340,2346 ****
         *  actually add the nodes.  Can invalidate _M_map pointers.
         *  (And consequently, %deque iterators.)
         */
!       void
        _M_reserve_map_at_back(size_type __nodes_to_add = 1)
        {
  	if (__nodes_to_add + 1 > this->_M_impl._M_map_size
--- 2384,2390 ----
         *  actually add the nodes.  Can invalidate _M_map pointers.
         *  (And consequently, %deque iterators.)
         */
!       _GLIBCXX26_CONSTEXPR void
        _M_reserve_map_at_back(size_type __nodes_to_add = 1)
        {
  	if (__nodes_to_add + 1 > this->_M_impl._M_map_size
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2348,2354 ****
  	  _M_reallocate_map(__nodes_to_add, false);
        }
  
!       void
        _M_reserve_map_at_front(size_type __nodes_to_add = 1)
        {
  	if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node
--- 2392,2398 ----
  	  _M_reallocate_map(__nodes_to_add, false);
        }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_reserve_map_at_front(size_type __nodes_to_add = 1)
        {
  	if (__nodes_to_add > size_type(this->_M_impl._M_start._M_node
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2356,2369 ****
  	  _M_reallocate_map(__nodes_to_add, true);
        }
  
!       void
        _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
        ///@}
  
  #if __cplusplus >= 201103L
        // Constant-time, nothrow move assignment when source object's memory
        // can be moved because the allocators are equal.
!       void
        _M_move_assign1(deque&& __x, /* always equal: */ true_type) noexcept
        {
  	this->_M_impl._M_swap_data(__x._M_impl);
--- 2400,2413 ----
  	  _M_reallocate_map(__nodes_to_add, true);
        }
  
!       _GLIBCXX26_CONSTEXPR void
        _M_reallocate_map(size_type __nodes_to_add, bool __add_at_front);
        ///@}
  
  #if __cplusplus >= 201103L
        // Constant-time, nothrow move assignment when source object's memory
        // can be moved because the allocators are equal.
!       _GLIBCXX26_CONSTEXPR void
        _M_move_assign1(deque&& __x, /* always equal: */ true_type) noexcept
        {
  	this->_M_impl._M_swap_data(__x._M_impl);
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2374,2380 ****
        // When the allocators are not equal the operation could throw, because
        // we might need to allocate a new map for __x after moving from it
        // or we might need to allocate new elements for *this.
!       void
        _M_move_assign1(deque&& __x, /* always equal: */ false_type)
        {
  	if (_M_get_Tp_allocator() == __x._M_get_Tp_allocator())
--- 2418,2424 ----
        // When the allocators are not equal the operation could throw, because
        // we might need to allocate a new map for __x after moving from it
        // or we might need to allocate new elements for *this.
!       _GLIBCXX26_CONSTEXPR void
        _M_move_assign1(deque&& __x, /* always equal: */ false_type)
        {
  	if (_M_get_Tp_allocator() == __x._M_get_Tp_allocator())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2388,2394 ****
        // Destroy all elements and deallocate all memory, then replace
        // with elements created from __args.
        template<typename... _Args>
!       void
        _M_replace_map(_Args&&... __args)
        {
  	// Create new data first, so if allocation fails there are no effects.
--- 2432,2438 ----
        // Destroy all elements and deallocate all memory, then replace
        // with elements created from __args.
        template<typename... _Args>
!       _GLIBCXX26_CONSTEXPR void
        _M_replace_map(_Args&&... __args)
        {
  	// Create new data first, so if allocation fails there are no effects.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2404,2410 ****
        }
  
        // Do move assignment when the allocator propagates.
!       void
        _M_move_assign2(deque&& __x, /* propagate: */ true_type)
        {
  	// Make a copy of the original allocator state.
--- 2448,2454 ----
        }
  
        // Do move assignment when the allocator propagates.
!       _GLIBCXX26_CONSTEXPR void
        _M_move_assign2(deque&& __x, /* propagate: */ true_type)
        {
  	// Make a copy of the original allocator state.
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2418,2424 ****
  
        // Do move assignment when it may not be possible to move source
        // object's memory, resulting in a linear-time operation.
!       void
        _M_move_assign2(deque&& __x, /* propagate: */ false_type)
        {
  	if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator())
--- 2462,2468 ----
  
        // Do move assignment when it may not be possible to move source
        // object's memory, resulting in a linear-time operation.
!       _GLIBCXX26_CONSTEXPR void
        _M_move_assign2(deque&& __x, /* propagate: */ false_type)
        {
  	if (__x._M_get_Tp_allocator() == this->_M_get_Tp_allocator())
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2469,2475 ****
    */
    template<typename _Tp, typename _Alloc>
      _GLIBCXX_NODISCARD
!     inline bool
      operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
      { return __x.size() == __y.size()
  	     && std::equal(__x.begin(), __x.end(), __y.begin()); }
--- 2513,2519 ----
    */
    template<typename _Tp, typename _Alloc>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator==(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
      { return __x.size() == __y.size()
  	     && std::equal(__x.begin(), __x.end(), __y.begin()); }
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2488,2494 ****
    */
    template<typename _Tp, typename _Alloc>
      [[nodiscard]]
!     inline __detail::__synth3way_t<_Tp>
      operator<=>(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
      {
        return std::lexicographical_compare_three_way(__x.begin(), __x.end(),
--- 2532,2538 ----
    */
    template<typename _Tp, typename _Alloc>
      [[nodiscard]]
!     inline _GLIBCXX26_CONSTEXPR __detail::__synth3way_t<_Tp>
      operator<=>(const deque<_Tp, _Alloc>& __x, const deque<_Tp, _Alloc>& __y)
      {
        return std::lexicographical_compare_three_way(__x.begin(), __x.end(),
*************** _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
*** 2545,2551 ****
  
    /// See std::deque::swap().
    template<typename _Tp, typename _Alloc>
!     inline void
      swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y)
      _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y)))
      { __x.swap(__y); }
--- 2589,2595 ----
  
    /// See std::deque::swap().
    template<typename _Tp, typename _Alloc>
!     inline _GLIBCXX26_CONSTEXPR void
      swap(deque<_Tp,_Alloc>& __x, deque<_Tp,_Alloc>& __y)
      _GLIBCXX_NOEXCEPT_IF(noexcept(__x.swap(__y)))
      { __x.swap(__y); }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_queue.h gcc-17-20260823/libstdc++-v3/include/bits/stl_queue.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_queue.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_queue.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 115,130 ****
  #endif
  
        template<typename _Tp1, typename _Seq1>
! 	friend bool
  	operator==(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  
        template<typename _Tp1, typename _Seq1>
! 	friend bool
  	operator<(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  
  #if __cpp_lib_three_way_comparison
        template<typename _Tp1, three_way_comparable _Seq1>
! 	friend compare_three_way_result_t<_Seq1>
  	operator<=>(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  #endif
  
--- 115,130 ----
  #endif
  
        template<typename _Tp1, typename _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator==(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  
        template<typename _Tp1, typename _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator<(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  
  #if __cpp_lib_three_way_comparison
        template<typename _Tp1, three_way_comparable _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR compare_three_way_result_t<_Seq1>
  	operator<=>(const queue<_Tp1, _Seq1>&, const queue<_Tp1, _Seq1>&);
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 171,205 ****
  #else
        template<typename _Seq = _Sequence, typename _Requires = typename
  	       enable_if<is_default_constructible<_Seq>::value>::type>
  	queue()
  	: c() { }
  
!       explicit
        queue(const _Sequence& __c)
        : c(__c) { }
  
!       explicit
        queue(_Sequence&& __c)
        : c(std::move(__c)) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	explicit
  	queue(const _Alloc& __a)
  	: c(__a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	queue(const _Sequence& __c, const _Alloc& __a)
  	: c(__c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	queue(_Sequence&& __c, const _Alloc& __a)
  	: c(std::move(__c), __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	queue(const queue& __q, const _Alloc& __a)
  	: c(__q.c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	queue(queue&& __q, const _Alloc& __a)
  	: c(std::move(__q.c), __a) { }
  #endif
--- 171,210 ----
  #else
        template<typename _Seq = _Sequence, typename _Requires = typename
  	       enable_if<is_default_constructible<_Seq>::value>::type>
+         _GLIBCXX26_CONSTEXPR
  	queue()
  	: c() { }
  
!       explicit _GLIBCXX26_CONSTEXPR
        queue(const _Sequence& __c)
        : c(__c) { }
  
!       explicit _GLIBCXX26_CONSTEXPR
        queue(_Sequence&& __c)
        : c(std::move(__c)) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	explicit _GLIBCXX26_CONSTEXPR
  	queue(const _Alloc& __a)
  	: c(__a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	queue(const _Sequence& __c, const _Alloc& __a)
  	: c(__c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(_Sequence&& __c, const _Alloc& __a)
  	: c(std::move(__c), __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(const queue& __q, const _Alloc& __a)
  	: c(__q.c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(queue&& __q, const _Alloc& __a)
  	: c(std::move(__q.c), __a) { }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 207,218 ****
--- 212,225 ----
  #ifdef __glibcxx_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
        template<typename _InputIterator,
  	       typename = _RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(_InputIterator __first, _InputIterator __last)
  	: c(__first, __last) { }
  
        template<typename _InputIterator, typename _Alloc,
  	       typename = _RequireInputIter<_InputIterator>,
  	       typename = _Uses<_Alloc>>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(_InputIterator __first, _InputIterator __last, const _Alloc& __a)
  	: c(__first, __last, __a) { }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 223,228 ****
--- 230,236 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(from_range_t, _Rg&& __rg)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg)))
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 233,238 ****
--- 241,247 ----
         */
        template<__detail::__container_compatible_range<_Tp> _Rg,
  	       typename _Alloc>
+ 	_GLIBCXX26_CONSTEXPR
  	queue(from_range_t, _Rg&& __rg, const _Alloc& __a)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a))
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 241,253 ****
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
        _GLIBCXX_NODISCARD
!       size_type
        size() const
        { return c.size(); }
  
--- 250,263 ----
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR size_type
        size() const
        { return c.size(); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 256,262 ****
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       reference
        front()
        {
  	__glibcxx_requires_nonempty();
--- 266,272 ----
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        front()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 268,274 ****
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       const_reference
        front() const
        {
  	__glibcxx_requires_nonempty();
--- 278,284 ----
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        front() const
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 280,286 ****
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       reference
        back()
        {
  	__glibcxx_requires_nonempty();
--- 290,296 ----
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        back()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 292,298 ****
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       const_reference
        back() const
        {
  	__glibcxx_requires_nonempty();
--- 302,308 ----
         *  element of the %queue.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        back() const
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 308,325 ****
         *  to it.  The time complexity of the operation depends on the
         *  underlying sequence.
         */
!       void
        push(const value_type& __x)
        { c.push_back(__x); }
  
  #if __cplusplus >= 201103L
!       void
        push(value_type&& __x)
        { c.push_back(std::move(__x)); }
  
  #if __cplusplus > 201402L
        template<typename... _Args>
! 	decltype(auto)
  	emplace(_Args&&... __args)
  	{ return c.emplace_back(std::forward<_Args>(__args)...); }
  #else
--- 318,335 ----
         *  to it.  The time complexity of the operation depends on the
         *  underlying sequence.
         */
!       _GLIBCXX26_CONSTEXPR void
        push(const value_type& __x)
        { c.push_back(__x); }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push(value_type&& __x)
        { c.push_back(std::move(__x)); }
  
  #if __cplusplus > 201402L
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR decltype(auto)
  	emplace(_Args&&... __args)
  	{ return c.emplace_back(std::forward<_Args>(__args)...); }
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 332,338 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
--- 342,348 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 353,359 ****
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       void
        pop()
        {
  	__glibcxx_requires_nonempty();
--- 363,369 ----
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       _GLIBCXX26_CONSTEXPR void
        pop()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 361,367 ****
        }
  
  #if __cplusplus >= 201103L
!       void
        swap(queue& __q)
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
        noexcept(__is_nothrow_swappable<_Sequence>::value)
--- 371,377 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        swap(queue& __q)
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
        noexcept(__is_nothrow_swappable<_Sequence>::value)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 430,436 ****
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator==(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c == __y.c; }
  
--- 440,446 ----
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator==(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c == __y.c; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 449,497 ****
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator<(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c < __y.c; }
  
    /// Based on operator==
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator!=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__x == __y); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __y < __x; }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator<=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__y < __x); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator>=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__x < __y); }
  
  #if __cpp_lib_three_way_comparison
    template<typename _Tp, three_way_comparable _Seq>
      [[nodiscard]]
!     inline compare_three_way_result_t<_Seq>
      operator<=>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c <=> __y.c; }
  #endif
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Seq>
!     inline
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__is_swappable<_Seq>::value>::type
--- 459,507 ----
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator<(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c < __y.c; }
  
    /// Based on operator==
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator!=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__x == __y); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __y < __x; }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator<=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__y < __x); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator>=(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return !(__x < __y); }
  
  #if __cpp_lib_three_way_comparison
    template<typename _Tp, three_way_comparable _Seq>
      [[nodiscard]]
!     inline _GLIBCXX26_CONSTEXPR compare_three_way_result_t<_Seq>
      operator<=>(const queue<_Tp, _Seq>& __x, const queue<_Tp, _Seq>& __y)
      { return __x.c <=> __y.c; }
  #endif
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Seq>
!     inline _GLIBCXX26_CONSTEXPR
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__is_swappable<_Seq>::value>::type
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 611,624 ****
  	priority_queue()
  	: c(), comp() { }
  
!       _GLIBCXX26_CONSTEXPR
!       explicit
        priority_queue(const _Compare& __x, const _Sequence& __s)
        : c(__s), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
  
!       _GLIBCXX26_CONSTEXPR
!       explicit
        priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
        : c(std::move(__s)), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
--- 621,632 ----
  	priority_queue()
  	: c(), comp() { }
  
!       explicit _GLIBCXX26_CONSTEXPR
        priority_queue(const _Compare& __x, const _Sequence& __s)
        : c(__s), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
  
!       explicit _GLIBCXX26_CONSTEXPR
        priority_queue(const _Compare& __x, _Sequence&& __s = _Sequence())
        : c(std::move(__s)), comp(__x)
        { std::make_heap(c.begin(), c.end(), comp); }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 633,640 ****
        : c(std::move(__q.c)), comp(std::move(__q.comp))
        { __q.c.clear(); }
  
!       _GLIBCXX26_CONSTEXPR
!       priority_queue&
        operator=(priority_queue&& __q)
        noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
  		      is_nothrow_move_assignable<_Compare>>::value)
--- 641,647 ----
        : c(std::move(__q.c)), comp(std::move(__q.comp))
        { __q.c.clear(); }
  
!       _GLIBCXX26_CONSTEXPR priority_queue&
        operator=(priority_queue&& __q)
        noexcept(__and_<is_nothrow_move_assignable<_Sequence>,
  		      is_nothrow_move_assignable<_Compare>>::value)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 646,653 ****
        }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	_GLIBCXX26_CONSTEXPR
! 	explicit
  	priority_queue(const _Alloc& __a)
  	: c(__a), comp() { }
  
--- 653,659 ----
        }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	explicit _GLIBCXX26_CONSTEXPR
  	priority_queue(const _Alloc& __a)
  	: c(__a), comp() { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 830,843 ****
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
!       bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
!       size_type
        size() const
        { return c.size(); }
  
--- 836,849 ----
        /**
         *  Returns true if the %queue is empty.
         */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %queue.  */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR size_type
        size() const
        { return c.size(); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 845,852 ****
         *  Returns a read-only (constant) reference to the data at the first
         *  element of the %queue.
         */
!       _GLIBCXX_NODISCARD _GLIBCXX26_CONSTEXPR
!       const_reference
        top() const
        {
  	__glibcxx_requires_nonempty();
--- 851,858 ----
         *  Returns a read-only (constant) reference to the data at the first
         *  element of the %queue.
         */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        top() const
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 861,868 ****
         *  The time complexity of the operation depends on the underlying
         *  sequence.
         */
!       _GLIBCXX26_CONSTEXPR
!       void
        push(const value_type& __x)
        {
  	c.push_back(__x);
--- 867,873 ----
         *  The time complexity of the operation depends on the underlying
         *  sequence.
         */
!       _GLIBCXX26_CONSTEXPR void
        push(const value_type& __x)
        {
  	c.push_back(__x);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 870,877 ****
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR
!       void
        push(value_type&& __x)
        {
  	c.push_back(std::move(__x));
--- 875,881 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push(value_type&& __x)
        {
  	c.push_back(std::move(__x));
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 879,886 ****
        }
  
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR
! 	void
  	emplace(_Args&&... __args)
  	{
  	  c.emplace_back(std::forward<_Args>(__args)...);
--- 883,889 ----
        }
  
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR void
  	emplace(_Args&&... __args)
  	{
  	  c.emplace_back(std::forward<_Args>(__args)...);
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 890,897 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR
! 	void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
--- 893,899 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 913,920 ****
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       _GLIBCXX26_CONSTEXPR
!       void
        pop()
        {
  	__glibcxx_requires_nonempty();
--- 915,921 ----
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       _GLIBCXX26_CONSTEXPR void
        pop()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 923,930 ****
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR
!       void
        swap(priority_queue& __pq)
        noexcept(__and_<
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
--- 924,930 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        swap(priority_queue& __pq)
        noexcept(__and_<
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 992,999 ****
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Sequence, typename _Compare>
!     _GLIBCXX26_CONSTEXPR
!     inline
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__and_<__is_swappable<_Sequence>,
--- 992,998 ----
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Sequence, typename _Compare>
!     inline _GLIBCXX26_CONSTEXPR
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__and_<__is_swappable<_Sequence>,
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_stack.h gcc-17-20260823/libstdc++-v3/include/bits/stl_stack.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_stack.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_stack.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 117,132 ****
  #endif
  
        template<typename _Tp1, typename _Seq1>
! 	friend bool
  	operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  
        template<typename _Tp1, typename _Seq1>
! 	friend bool
  	operator<(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  
  #if __cpp_lib_three_way_comparison
        template<typename _Tp1, three_way_comparable _Seq1>
! 	friend compare_three_way_result_t<_Seq1>
  	operator<=>(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  #endif
  
--- 117,132 ----
  #endif
  
        template<typename _Tp1, typename _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  
        template<typename _Tp1, typename _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR bool
  	operator<(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  
  #if __cpp_lib_three_way_comparison
        template<typename _Tp1, three_way_comparable _Seq1>
! 	friend _GLIBCXX26_CONSTEXPR compare_three_way_result_t<_Seq1>
  	operator<=>(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
  #endif
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 167,186 ****
  #else
        template<typename _Seq = _Sequence, typename _Requires = typename
  	       enable_if<is_default_constructible<_Seq>::value>::type>
  	stack()
  	: c() { }
  
!       explicit
        stack(const _Sequence& __c)
        : c(__c) { }
  
!       explicit
        stack(_Sequence&& __c)
        : c(std::move(__c)) { }
  
  #ifdef __glibcxx_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
        template<typename _InputIterator,
  	       typename = _RequireInputIter<_InputIterator>>
  	stack(_InputIterator __first, _InputIterator __last)
  	: c(__first, __last) { }
  #endif
--- 167,188 ----
  #else
        template<typename _Seq = _Sequence, typename _Requires = typename
  	       enable_if<is_default_constructible<_Seq>::value>::type>
+         _GLIBCXX26_CONSTEXPR
  	stack()
  	: c() { }
  
!       explicit _GLIBCXX26_CONSTEXPR
        stack(const _Sequence& __c)
        : c(__c) { }
  
!       explicit _GLIBCXX26_CONSTEXPR
        stack(_Sequence&& __c)
        : c(std::move(__c)) { }
  
  #ifdef __glibcxx_adaptor_iterator_pair_constructor // C++ >= 23 && HOSTED
        template<typename _InputIterator,
  	       typename = _RequireInputIter<_InputIterator>>
+         _GLIBCXX26_CONSTEXPR
  	stack(_InputIterator __first, _InputIterator __last)
  	: c(__first, __last) { }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 191,196 ****
--- 193,199 ----
         * @since C++23
         */
        template<__detail::__container_compatible_range<_Tp> _Rg>
+         _GLIBCXX26_CONSTEXPR
  	stack(from_range_t, _Rg&& __rg)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg)))
  	{ }
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 201,229 ****
         */
        template<__detail::__container_compatible_range<_Tp> _Rg,
  	       typename _Alloc>
  	stack(from_range_t, _Rg&& __rg, const _Alloc& __a)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a))
  	{ }
  #endif
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	explicit
  	stack(const _Alloc& __a)
  	: c(__a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	stack(const _Sequence& __c, const _Alloc& __a)
  	: c(__c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	stack(_Sequence&& __c, const _Alloc& __a)
  	: c(std::move(__c), __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	stack(const stack& __q, const _Alloc& __a)
  	: c(__q.c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
  	stack(stack&& __q, const _Alloc& __a)
  	: c(std::move(__q.c), __a) { }
  
--- 204,237 ----
         */
        template<__detail::__container_compatible_range<_Tp> _Rg,
  	       typename _Alloc>
+         _GLIBCXX26_CONSTEXPR
  	stack(from_range_t, _Rg&& __rg, const _Alloc& __a)
  	: c(ranges::to<_Sequence>(std::forward<_Rg>(__rg), __a))
  	{ }
  #endif
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
! 	explicit _GLIBCXX26_CONSTEXPR
  	stack(const _Alloc& __a)
  	: c(__a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	stack(const _Sequence& __c, const _Alloc& __a)
  	: c(__c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	stack(_Sequence&& __c, const _Alloc& __a)
  	: c(std::move(__c), __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	stack(const stack& __q, const _Alloc& __a)
  	: c(__q.c, __a) { }
  
        template<typename _Alloc, typename _Requires = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	stack(stack&& __q, const _Alloc& __a)
  	: c(std::move(__q.c), __a) { }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 231,236 ****
--- 239,245 ----
        template<typename _InputIterator, typename _Alloc,
  	       typename = _RequireInputIter<_InputIterator>,
  	       typename = _Uses<_Alloc>>
+         _GLIBCXX26_CONSTEXPR
  	stack(_InputIterator __first, _InputIterator __last, const _Alloc& __a)
  	: c(__first, __last, __a) { }
  #endif
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 239,251 ****
        /**
         *  Returns true if the %stack is empty.
         */
!       _GLIBCXX_NODISCARD bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %stack.  */
        _GLIBCXX_NODISCARD
!       size_type
        size() const
        { return c.size(); }
  
--- 248,261 ----
        /**
         *  Returns true if the %stack is empty.
         */
!       _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR bool
        empty() const
        { return c.empty(); }
  
        /**  Returns the number of elements in the %stack.  */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR size_type
        size() const
        { return c.size(); }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 254,260 ****
         *  element of the %stack.
         */
        _GLIBCXX_NODISCARD
!       reference
        top()
        {
  	__glibcxx_requires_nonempty();
--- 264,270 ----
         *  element of the %stack.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        top()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 266,272 ****
         *  element of the %stack.
         */
        _GLIBCXX_NODISCARD
!       const_reference
        top() const
        {
  	__glibcxx_requires_nonempty();
--- 276,282 ----
         *  element of the %stack.
         */
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        top() const
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 282,299 ****
         *  to it.  The time complexity of the operation depends on the
         *  underlying sequence.
         */
!       void
        push(const value_type& __x)
        { c.push_back(__x); }
  
  #if __cplusplus >= 201103L
!       void
        push(value_type&& __x)
        { c.push_back(std::move(__x)); }
  
  #if __cplusplus > 201402L
        template<typename... _Args>
! 	decltype(auto)
  	emplace(_Args&&... __args)
  	{ return c.emplace_back(std::forward<_Args>(__args)...); }
  #else
--- 292,309 ----
         *  to it.  The time complexity of the operation depends on the
         *  underlying sequence.
         */
!       _GLIBCXX26_CONSTEXPR void
        push(const value_type& __x)
        { c.push_back(__x); }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push(value_type&& __x)
        { c.push_back(std::move(__x)); }
  
  #if __cplusplus > 201402L
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR decltype(auto)
  	emplace(_Args&&... __args)
  	{ return c.emplace_back(std::forward<_Args>(__args)...); }
  #else
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 306,312 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
--- 316,322 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	push_range(_Rg&& __rg)
  	{
  	  if constexpr (requires { c.append_range(std::forward<_Rg>(__rg)); })
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 327,333 ****
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       void
        pop()
        {
  	__glibcxx_requires_nonempty();
--- 337,343 ----
         *  data is needed, it should be retrieved before pop() is
         *  called.
         */
!       _GLIBCXX26_CONSTEXPR void
        pop()
        {
  	__glibcxx_requires_nonempty();
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 335,341 ****
        }
  
  #if __cplusplus >= 201103L
!       void
        swap(stack& __s)
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
        noexcept(__is_nothrow_swappable<_Sequence>::value)
--- 345,351 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        swap(stack& __s)
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
        noexcept(__is_nothrow_swappable<_Sequence>::value)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 405,411 ****
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c == __y.c; }
  
--- 415,421 ----
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c == __y.c; }
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 424,472 ****
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c < __y.c; }
  
    /// Based on operator==
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator!=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__x == __y); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __y < __x; }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator<=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__y < __x); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline bool
      operator>=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__x < __y); }
  
  #if __cpp_lib_three_way_comparison
    template<typename _Tp, three_way_comparable _Seq>
      [[nodiscard]]
!     inline compare_three_way_result_t<_Seq>
      operator<=>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c <=> __y.c; }
  #endif
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Seq>
!     inline
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__is_swappable<_Seq>::value>::type
--- 434,482 ----
    */
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator<(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c < __y.c; }
  
    /// Based on operator==
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator!=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__x == __y); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __y < __x; }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator<=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__y < __x); }
  
    /// Based on operator<
    template<typename _Tp, typename _Seq>
      _GLIBCXX_NODISCARD
!     inline _GLIBCXX26_CONSTEXPR bool
      operator>=(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return !(__x < __y); }
  
  #if __cpp_lib_three_way_comparison
    template<typename _Tp, three_way_comparable _Seq>
      [[nodiscard]]
!     inline _GLIBCXX26_CONSTEXPR compare_three_way_result_t<_Seq>
      operator<=>(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y)
      { return __x.c <=> __y.c; }
  #endif
  
  #if __cplusplus >= 201103L
    template<typename _Tp, typename _Seq>
!     inline _GLIBCXX26_CONSTEXPR
  #if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
      // Constrained free swap overload, see p0185r1
      typename enable_if<__is_swappable<_Seq>::value>::type
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/stl_uninitialized.h gcc-17-20260823/libstdc++-v3/include/bits/stl_uninitialized.h
*** gcc-17-20260816/libstdc++-v3/include/bits/stl_uninitialized.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/stl_uninitialized.h	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 666,671 ****
--- 666,672 ----
  #if __cplusplus >= 201103L
    template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
  	   typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __uninitialized_copy_a(
        _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 674,679 ****
--- 675,681 ----
        allocator<_Tp>&);
  
    template<typename _Iter, typename _OTp, typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      __enable_if_t<__is_random_access_iter<_Iter>::value,
  		  _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>>
      __uninitialized_copy_a(_Iter __first, _Iter __last,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 682,687 ****
--- 684,690 ----
  
    template<typename _ITp, typename _IRef, typename _IPtr, typename _OTp,
  	   typename _Tp>
+     _GLIBCXX26_CONSTEXPR
      _GLIBCXX_STD_C::_Deque_iterator<_OTp, _OTp&, _OTp*>
      __uninitialized_move_a(
        _GLIBCXX_STD_C::_Deque_iterator<_ITp, _IRef, _IPtr> __first,
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1003,1009 ****
    // Fills [first, last) with value_types constructed by the allocator
    // alloc, with no arguments passed to the construct call.
    template<typename _ForwardIterator, typename _Allocator>
!     void
      __uninitialized_default_a(_ForwardIterator __first,
  			      _ForwardIterator __last,
  			      _Allocator& __alloc)
--- 1006,1012 ----
    // Fills [first, last) with value_types constructed by the allocator
    // alloc, with no arguments passed to the construct call.
    template<typename _ForwardIterator, typename _Allocator>
!     _GLIBCXX20_CONSTEXPR void
      __uninitialized_default_a(_ForwardIterator __first,
  			      _ForwardIterator __last,
  			      _Allocator& __alloc)
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 1018,1024 ****
  
  #if _GLIBCXX_HOSTED
    template<typename _ForwardIterator, typename _Tp>
!     inline void
      __uninitialized_default_a(_ForwardIterator __first,
  			      _ForwardIterator __last,
  			      allocator<_Tp>&)
--- 1021,1027 ----
  
  #if _GLIBCXX_HOSTED
    template<typename _ForwardIterator, typename _Tp>
!     inline _GLIBCXX20_CONSTEXPR void
      __uninitialized_default_a(_ForwardIterator __first,
  			      _ForwardIterator __last,
  			      allocator<_Tp>&)
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/version.def gcc-17-20260823/libstdc++-v3/include/bits/version.def
*** gcc-17-20260816/libstdc++-v3/include/bits/version.def	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/version.def	Sun Aug 23 22:32:21 2026
*************** ftms = {
*** 1464,1469 ****
--- 1464,1496 ----
  };
  
  ftms = {
+   name = constexpr_deque;
+   values = {
+     v = 202502;
+     cxxmin = 26;
+     hosted = yes;
+   };
+ };
+ 
+ ftms = {
+   name = constexpr_queue;
+   values = {
+     v = 202502;
+     cxxmin = 26;
+     hosted = yes;
+   };
+ };
+ 
+ ftms = {
+   name = constexpr_stack;
+   values = {
+     v = 202502;
+     cxxmin = 26;
+     hosted = yes;
+   };
+ };
+ 
+ ftms = {
    name = constrained_equality;
    values = {
      v = 202411;
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/bits/version.h gcc-17-20260823/libstdc++-v3/include/bits/version.h
*** gcc-17-20260816/libstdc++-v3/include/bits/version.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/bits/version.h	Sun Aug 23 22:32:24 2026
***************
*** 1596,1601 ****
--- 1596,1631 ----
  #endif /* !defined(__cpp_lib_constexpr_vector) */
  #undef __glibcxx_want_constexpr_vector
  
+ #if !defined(__cpp_lib_constexpr_deque)
+ # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
+ #  define __glibcxx_constexpr_deque 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_deque)
+ #   define __cpp_lib_constexpr_deque 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constexpr_deque) */
+ #undef __glibcxx_want_constexpr_deque
+ 
+ #if !defined(__cpp_lib_constexpr_queue)
+ # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
+ #  define __glibcxx_constexpr_queue 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_queue)
+ #   define __cpp_lib_constexpr_queue 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constexpr_queue) */
+ #undef __glibcxx_want_constexpr_queue
+ 
+ #if !defined(__cpp_lib_constexpr_stack)
+ # if (__cplusplus >  202302L) && _GLIBCXX_HOSTED
+ #  define __glibcxx_constexpr_stack 202502L
+ #  if defined(__glibcxx_want_all) || defined(__glibcxx_want_constexpr_stack)
+ #   define __cpp_lib_constexpr_stack 202502L
+ #  endif
+ # endif
+ #endif /* !defined(__cpp_lib_constexpr_stack) */
+ #undef __glibcxx_want_constexpr_stack
+ 
  #if !defined(__cpp_lib_constrained_equality)
  # if (__cplusplus >  202002L) && (__glibcxx_three_way_comparison)
  #  define __glibcxx_constrained_equality 202411L
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/debug/deque gcc-17-20260823/libstdc++-v3/include/debug/deque
*** gcc-17-20260816/libstdc++-v3/include/debug/deque	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/debug/deque	Sun Aug 23 22:32:21 2026
*************** namespace __debug
*** 110,121 ****
--- 110,124 ----
        deque(const deque&) = default;
        deque(deque&&) = default;
  
+       _GLIBCXX26_CONSTEXPR
        deque(const deque& __d, const __type_identity_t<_Allocator>& __a)
        : _Base(__d, __a) { }
  
+       _GLIBCXX26_CONSTEXPR
        deque(deque&& __d, const __type_identity_t<_Allocator>& __a)
        : _Safe(std::move(__d)), _Base(std::move(__d), __a) { }
  
+       _GLIBCXX26_CONSTEXPR
        deque(initializer_list<value_type> __l,
  	    const allocator_type& __a = allocator_type())
        : _Base(__l, __a) { }
*************** namespace __debug
*** 123,137 ****
        ~deque() = default;
  #endif
  
!       explicit
        deque(const _Allocator& __a)
        : _Base(__a) { }
  
  #if __cplusplus >= 201103L
!       explicit
        deque(size_type __n, const _Allocator& __a = _Allocator())
        : _Base(__n, __a) { }
  
        deque(size_type __n, const __type_identity_t<_Tp>& __value,
  	    const _Allocator& __a = _Allocator())
        : _Base(__n, __value, __a) { }
--- 126,141 ----
        ~deque() = default;
  #endif
  
!       explicit _GLIBCXX26_CONSTEXPR
        deque(const _Allocator& __a)
        : _Base(__a) { }
  
  #if __cplusplus >= 201103L
!       explicit _GLIBCXX26_CONSTEXPR
        deque(size_type __n, const _Allocator& __a = _Allocator())
        : _Base(__n, __a) { }
  
+       _GLIBCXX26_CONSTEXPR
        deque(size_type __n, const __type_identity_t<_Tp>& __value,
  	    const _Allocator& __a = _Allocator())
        : _Base(__n, __value, __a) { }
*************** namespace __debug
*** 145,167 ****
  #if __cplusplus >= 201103L
        template<class _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
  #else
        template<class _InputIterator>
  #endif
  	deque(_InputIterator __first, _InputIterator __last,
  	      const _Allocator& __a = _Allocator())
! 	: _Base(__gnu_debug::__base(
! 		  __glibcxx_check_valid_constructor_range(__first, __last)),
  		__gnu_debug::__base(__last), __a)
  	{ }
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
  	deque(from_range_t, _Rg&& __rg, const _Allocator& __a = _Allocator())
  	: _Base(from_range, std::forward<_Rg>(__rg), __a)
  	{ }
  #endif
  
        deque(_Base_ref __x)
        : _Base(__x._M_ref) { }
  
--- 149,174 ----
  #if __cplusplus >= 201103L
        template<class _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
+ 	_GLIBCXX26_CONSTEXPR
  #else
        template<class _InputIterator>
  #endif
  	deque(_InputIterator __first, _InputIterator __last,
  	      const _Allocator& __a = _Allocator())
! 	: _Base(__gnu_debug::__base(std::__is_constant_evaluated() ? __first
! 		  : __glibcxx_check_valid_constructor_range(__first, __last)),
  		__gnu_debug::__base(__last), __a)
  	{ }
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
+ 	_GLIBCXX26_CONSTEXPR
  	deque(from_range_t, _Rg&& __rg, const _Allocator& __a = _Allocator())
  	: _Base(from_range, std::forward<_Rg>(__rg), __a)
  	{ }
  #endif
  
+       _GLIBCXX26_CONSTEXPR
        deque(_Base_ref __x)
        : _Base(__x._M_ref) { }
  
*************** namespace __debug
*** 172,182 ****
        deque&
        operator=(deque&&) = default;
  
!       deque&
        operator=(initializer_list<value_type> __l)
        {
  	_Base::operator=(__l);
! 	this->_M_invalidate_all();
  	return *this;
        }
  #endif
--- 179,190 ----
        deque&
        operator=(deque&&) = default;
  
!       _GLIBCXX26_CONSTEXPR deque&
        operator=(initializer_list<value_type> __l)
        {
  	_Base::operator=(__l);
! 	if (!std::__is_constant_evaluated())
! 	  this->_M_invalidate_all();
  	return *this;
        }
  #endif
*************** namespace __debug
*** 187,195 ****
  #else
        template<class _InputIterator>
  #endif
! 	void
  	assign(_InputIterator __first, _InputIterator __last)
  	{
  	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
  	  __glibcxx_check_valid_range2(__first, __last, __dist);
  	  if (__dist.second >= __gnu_debug::__dp_sign)
--- 195,207 ----
  #else
        template<class _InputIterator>
  #endif
! 	_GLIBCXX26_CONSTEXPR void
  	assign(_InputIterator __first, _InputIterator __last)
  	{
+ 	  if (std::__is_constant_evaluated())
+ 	    return _Base::assign(__gnu_debug::__unsafe(__first),
+ 				 __gnu_debug::__unsafe(__last));
+ 
  	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
  	  __glibcxx_check_valid_range2(__first, __last, __dist);
  	  if (__dist.second >= __gnu_debug::__dp_sign)
*************** namespace __debug
*** 201,229 ****
  	  this->_M_invalidate_all();
  	}
  
!       void
        assign(size_type __n, const _Tp& __t)
        {
  	_Base::assign(__n, __t);
! 	this->_M_invalidate_all();
        }
  
  #if __cplusplus >= 201103L
!       void
        assign(initializer_list<value_type> __l)
        {
  	_Base::assign(__l);
! 	this->_M_invalidate_all();
        }
  #endif
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	assign_range(_Rg&& __rg)
  	{
  	  _Base::assign_range(std::forward<_Rg>(__rg));
! 	  this->_M_invalidate_all();
  	}
  #endif
  
--- 213,244 ----
  	  this->_M_invalidate_all();
  	}
  
!       _GLIBCXX26_CONSTEXPR void
        assign(size_type __n, const _Tp& __t)
        {
  	_Base::assign(__n, __t);
! 	if (!std::__is_constant_evaluated())
! 	  this->_M_invalidate_all();
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        assign(initializer_list<value_type> __l)
        {
  	_Base::assign(__l);
! 	if (!std::__is_constant_evaluated())
! 	  this->_M_invalidate_all();
        }
  #endif
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	assign_range(_Rg&& __rg)
  	{
  	  _Base::assign_range(std::forward<_Rg>(__rg));
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  	}
  #endif
  
*************** namespace __debug
*** 231,299 ****
  
        // iterators:
        _GLIBCXX_NODISCARD
!       iterator
        begin() _GLIBCXX_NOEXCEPT
        { return iterator(_Base::begin(), this); }
  
        _GLIBCXX_NODISCARD
!       const_iterator
        begin() const _GLIBCXX_NOEXCEPT
        { return const_iterator(_Base::begin(), this); }
  
        _GLIBCXX_NODISCARD
!       iterator
        end() _GLIBCXX_NOEXCEPT
        { return iterator(_Base::end(), this); }
  
        _GLIBCXX_NODISCARD
!       const_iterator
        end() const _GLIBCXX_NOEXCEPT
        { return const_iterator(_Base::end(), this); }
  
        _GLIBCXX_NODISCARD
!       reverse_iterator
        rbegin() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(end()); }
  
        _GLIBCXX_NODISCARD
!       const_reverse_iterator
        rbegin() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(end()); }
  
        _GLIBCXX_NODISCARD
!       reverse_iterator
        rend() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(begin()); }
  
        _GLIBCXX_NODISCARD
!       const_reverse_iterator
        rend() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(begin()); }
  
  #if __cplusplus >= 201103L
        [[__nodiscard__]]
!       const_iterator
        cbegin() const noexcept
        { return const_iterator(_Base::begin(), this); }
  
        [[__nodiscard__]]
!       const_iterator
        cend() const noexcept
        { return const_iterator(_Base::end(), this); }
  
        [[__nodiscard__]]
!       const_reverse_iterator
        crbegin() const noexcept
        { return const_reverse_iterator(end()); }
  
        [[__nodiscard__]]
!       const_reverse_iterator
        crend() const noexcept
        { return const_reverse_iterator(begin()); }
  #endif
  
      private:
!       void
        _M_invalidate_after_nth(difference_type __n)
        {
  	typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
--- 246,314 ----
  
        // iterators:
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR iterator
        begin() _GLIBCXX_NOEXCEPT
        { return iterator(_Base::begin(), this); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_iterator
        begin() const _GLIBCXX_NOEXCEPT
        { return const_iterator(_Base::begin(), this); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR iterator
        end() _GLIBCXX_NOEXCEPT
        { return iterator(_Base::end(), this); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_iterator
        end() const _GLIBCXX_NOEXCEPT
        { return const_iterator(_Base::end(), this); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reverse_iterator
        rbegin() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(end()); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        rbegin() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(end()); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reverse_iterator
        rend() _GLIBCXX_NOEXCEPT
        { return reverse_iterator(begin()); }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        rend() const _GLIBCXX_NOEXCEPT
        { return const_reverse_iterator(begin()); }
  
  #if __cplusplus >= 201103L
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_iterator
        cbegin() const noexcept
        { return const_iterator(_Base::begin(), this); }
  
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_iterator
        cend() const noexcept
        { return const_iterator(_Base::end(), this); }
  
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        crbegin() const noexcept
        { return const_reverse_iterator(end()); }
  
        [[__nodiscard__]]
!       _GLIBCXX26_CONSTEXPR const_reverse_iterator
        crend() const noexcept
        { return const_reverse_iterator(begin()); }
  #endif
  
      private:
!       _GLIBCXX26_CONSTEXPR void
        _M_invalidate_after_nth(difference_type __n)
        {
  	typedef __gnu_debug::_After_nth_from<_Base_const_iterator> _After_nth;
*************** namespace __debug
*** 306,314 ****
        using _Base::max_size;
  
  #if __cplusplus >= 201103L
!       void
        resize(size_type __sz)
        {
  	bool __invalidate_all = __sz > this->size();
  	if (__sz < this->size())
  	  this->_M_invalidate_after_nth(__sz);
--- 321,332 ----
        using _Base::max_size;
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        resize(size_type __sz)
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return _Base::resize(__sz);
+ 
  	bool __invalidate_all = __sz > this->size();
  	if (__sz < this->size())
  	  this->_M_invalidate_after_nth(__sz);
*************** namespace __debug
*** 319,327 ****
  	  this->_M_invalidate_all();
        }
  
!       void
        resize(size_type __sz, const _Tp& __c)
        {
  	bool __invalidate_all = __sz > this->size();
  	if (__sz < this->size())
  	  this->_M_invalidate_after_nth(__sz);
--- 337,348 ----
  	  this->_M_invalidate_all();
        }
  
!       _GLIBCXX26_CONSTEXPR void
        resize(size_type __sz, const _Tp& __c)
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return _Base::resize(__sz, __c);
+ 
  	bool __invalidate_all = __sz > this->size();
  	if (__sz < this->size())
  	  this->_M_invalidate_after_nth(__sz);
*************** namespace __debug
*** 347,357 ****
  #endif
  
  #if __cplusplus >= 201103L
!       void
        shrink_to_fit() noexcept
        {
  	if (_Base::_M_shrink_to_fit())
! 	  this->_M_invalidate_all();
        }
  #endif
  
--- 368,379 ----
  #endif
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        shrink_to_fit() noexcept
        {
  	if (_Base::_M_shrink_to_fit())
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
        }
  #endif
  
*************** namespace __debug
*** 359,365 ****
  
        // element access:
        _GLIBCXX_NODISCARD
!       reference
        operator[](size_type __n) _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_subscript(__n);
--- 381,387 ----
  
        // element access:
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        operator[](size_type __n) _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_subscript(__n);
*************** namespace __debug
*** 367,373 ****
        }
  
        _GLIBCXX_NODISCARD
!       const_reference
        operator[](size_type __n) const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_subscript(__n);
--- 389,395 ----
        }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        operator[](size_type __n) const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_subscript(__n);
*************** namespace __debug
*** 377,383 ****
        using _Base::at;
  
        _GLIBCXX_NODISCARD
!       reference
        front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
--- 399,405 ----
        using _Base::at;
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        front() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
*************** namespace __debug
*** 385,391 ****
        }
  
        _GLIBCXX_NODISCARD
!       const_reference
        front() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
--- 407,413 ----
        }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        front() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
*************** namespace __debug
*** 393,399 ****
        }
  
        _GLIBCXX_NODISCARD
!       reference
        back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
--- 415,421 ----
        }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR reference
        back() _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
*************** namespace __debug
*** 401,407 ****
        }
  
        _GLIBCXX_NODISCARD
!       const_reference
        back() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
--- 423,429 ----
        }
  
        _GLIBCXX_NODISCARD
!       _GLIBCXX26_CONSTEXPR const_reference
        back() const _GLIBCXX_NOEXCEPT
        {
  	__glibcxx_check_nonempty();
*************** namespace __debug
*** 409,422 ****
        }
  
        // 23.2.1.3 modifiers:
!       void
        push_front(const _Tp& __x)
        {
  	_Base::push_front(__x);
  	this->_M_invalidate_all();
        }
  
!       void
        push_back(const _Tp& __x)
        {
  	_Base::push_back(__x);
--- 431,444 ----
        }
  
        // 23.2.1.3 modifiers:
!       _GLIBCXX26_CONSTEXPR void
        push_front(const _Tp& __x)
        {
  	_Base::push_front(__x);
  	this->_M_invalidate_all();
        }
  
!       _GLIBCXX26_CONSTEXPR void
        push_back(const _Tp& __x)
        {
  	_Base::push_back(__x);
*************** namespace __debug
*** 424,447 ****
        }
  
  #if __cplusplus >= 201103L
!       void
        push_front(_Tp&& __x)
        { emplace_front(std::move(__x)); }
  
!       void
        push_back(_Tp&& __x)
        { emplace_back(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	reference
  #else
  	void
  #endif
  	emplace_front(_Args&&... __args)
  	{
  	  _Base::emplace_front(std::forward<_Args>(__args)...);
! 	  this->_M_invalidate_all();
  #if __cplusplus > 201402L
  	  return front();
  #endif
--- 446,470 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR void
        push_front(_Tp&& __x)
        { emplace_front(std::move(__x)); }
  
!       _GLIBCXX26_CONSTEXPR void
        push_back(_Tp&& __x)
        { emplace_back(std::move(__x)); }
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	_GLIBCXX26_CONSTEXPR reference
  #else
  	void
  #endif
  	emplace_front(_Args&&... __args)
  	{
  	  _Base::emplace_front(std::forward<_Args>(__args)...);
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  #if __cplusplus > 201402L
  	  return front();
  #endif
*************** namespace __debug
*** 449,471 ****
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	reference
  #else
  	void
  #endif
  	emplace_back(_Args&&... __args)
  	{
  	  _Base::emplace_back(std::forward<_Args>(__args)...);
! 	  this->_M_invalidate_all();
  #if __cplusplus > 201402L
  	  return back();
  #endif
  	}
  
        template<typename... _Args>
! 	iterator
  	emplace(const_iterator __position, _Args&&... __args)
  	{
  	  __glibcxx_check_insert(__position);
  	  _Base_iterator __res = _Base::emplace(__position.base(),
  						std::forward<_Args>(__args)...);
--- 472,500 ----
  
        template<typename... _Args>
  #if __cplusplus > 201402L
! 	_GLIBCXX26_CONSTEXPR reference
  #else
  	void
  #endif
  	emplace_back(_Args&&... __args)
  	{
  	  _Base::emplace_back(std::forward<_Args>(__args)...);
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  #if __cplusplus > 201402L
  	  return back();
  #endif
  	}
  
        template<typename... _Args>
! 	_GLIBCXX26_CONSTEXPR iterator
  	emplace(const_iterator __position, _Args&&... __args)
  	{
+ 	  if (std::__is_constant_evaluated())
+ 	    return iterator(_Base::emplace(__position.base(),
+ 					   std::forward<_Args>(__args)...),
+ 			    this);
+ 
  	  __glibcxx_check_insert(__position);
  	  _Base_iterator __res = _Base::emplace(__position.base(),
  						std::forward<_Args>(__args)...);
*************** namespace __debug
*** 474,486 ****
  	}
  #endif
  
!       iterator
  #if __cplusplus >= 201103L
        insert(const_iterator __position, const _Tp& __x)
  #else
        insert(iterator __position, const _Tp& __x)
  #endif
        {
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __x);
  	this->_M_invalidate_all();
--- 503,518 ----
  	}
  #endif
  
!       _GLIBCXX26_CONSTEXPR iterator
  #if __cplusplus >= 201103L
        insert(const_iterator __position, const _Tp& __x)
  #else
        insert(iterator __position, const _Tp& __x)
  #endif
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return iterator(_Base::insert(__position.base(), __x), this);
+ 
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __x);
  	this->_M_invalidate_all();
*************** namespace __debug
*** 488,500 ****
        }
  
  #if __cplusplus >= 201103L
!       iterator
        insert(const_iterator __position, _Tp&& __x)
        { return emplace(__position, std::move(__x)); }
  
!       iterator
        insert(const_iterator __position, initializer_list<value_type> __l)
        {
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __l);
  	this->_M_invalidate_all();
--- 520,535 ----
        }
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, _Tp&& __x)
        { return emplace(__position, std::move(__x)); }
  
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, initializer_list<value_type> __l)
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return iterator(_Base::insert(__position.base(), __l), this);
+ 
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __l);
  	this->_M_invalidate_all();
*************** namespace __debug
*** 503,511 ****
  #endif
  
  #if __cplusplus >= 201103L
!       iterator
        insert(const_iterator __position, size_type __n, const _Tp& __x)
        {
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __n, __x);
  	this->_M_invalidate_all();
--- 538,549 ----
  #endif
  
  #if __cplusplus >= 201103L
!       _GLIBCXX26_CONSTEXPR iterator
        insert(const_iterator __position, size_type __n, const _Tp& __x)
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return iterator(_Base::insert(__position.base(), __n, __x), this);
+ 
  	__glibcxx_check_insert(__position);
  	_Base_iterator __res = _Base::insert(__position.base(), __n, __x);
  	this->_M_invalidate_all();
*************** namespace __debug
*** 524,533 ****
  #if __cplusplus >= 201103L
        template<class _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	iterator
  	insert(const_iterator __position,
  	       _InputIterator __first, _InputIterator __last)
  	{
  	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
  	  __glibcxx_check_insert_range(__position, __first, __last, __dist);
  	  _Base_iterator __res;
--- 562,576 ----
  #if __cplusplus >= 201103L
        template<class _InputIterator,
  	       typename = std::_RequireInputIter<_InputIterator>>
! 	_GLIBCXX26_CONSTEXPR iterator
  	insert(const_iterator __position,
  	       _InputIterator __first, _InputIterator __last)
  	{
+ 	  if (std::__is_constant_evaluated())
+ 	    return iterator(_Base::insert(__position.base(),
+ 					  __gnu_debug::__unsafe(__first),
+ 					  __gnu_debug::__unsafe(__last)), this);
+ 
  	  typename __gnu_debug::_Distance_traits<_InputIterator>::__type __dist;
  	  __glibcxx_check_insert_range(__position, __first, __last, __dist);
  	  _Base_iterator __res;
*************** namespace __debug
*** 563,616 ****
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	iterator
  	insert_range(const_iterator __pos, _Rg&& __rg)
  	{
  	  auto __res = _Base::insert_range(__pos.base(), std::forward<_Rg>(__rg));
! 	  this->_M_invalidate_all();
  	  return iterator(__res, this);
  	}
  
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	prepend_range(_Rg&& __rg)
  	{
  	  _Base::prepend_range(std::forward<_Rg>(__rg));
! 	  this->_M_invalidate_all();
  	}
  
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	void
  	append_range(_Rg&& __rg)
  	{
  	  _Base::append_range(std::forward<_Rg>(__rg));
! 	  this->_M_invalidate_all();
  	}
  #endif
  
!       void
        pop_front() _GLIBCXX_NOEXCEPT
        {
! 	__glibcxx_check_nonempty();
! 	this->_M_invalidate_if(_Equal(_Base::begin()));
  	_Base::pop_front();
        }
  
!       void
        pop_back() _GLIBCXX_NOEXCEPT
        {
! 	__glibcxx_check_nonempty();
! 	this->_M_invalidate_if(_Equal(--_Base::end()));
  	_Base::pop_back();
        }
  
!       iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __position)
  #else
!       erase(iterator __position)	
  #endif
        {
  	__glibcxx_check_erase(__position);
  #if __cplusplus >= 201103L
  	_Base_const_iterator __victim = __position.base();
--- 606,671 ----
  
  #if __glibcxx_containers_ranges // C++ >= 23
        template<__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR iterator
  	insert_range(const_iterator __pos, _Rg&& __rg)
  	{
  	  auto __res = _Base::insert_range(__pos.base(), std::forward<_Rg>(__rg));
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  	  return iterator(__res, this);
  	}
  
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	prepend_range(_Rg&& __rg)
  	{
  	  _Base::prepend_range(std::forward<_Rg>(__rg));
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  	}
  
        template<std::__detail::__container_compatible_range<_Tp> _Rg>
! 	_GLIBCXX26_CONSTEXPR void
  	append_range(_Rg&& __rg)
  	{
  	  _Base::append_range(std::forward<_Rg>(__rg));
! 	  if (!std::__is_constant_evaluated())
! 	    this->_M_invalidate_all();
  	}
  #endif
  
!       _GLIBCXX26_CONSTEXPR void
        pop_front() _GLIBCXX_NOEXCEPT
        {
! 	if (!std::__is_constant_evaluated())
! 	  {
! 	    __glibcxx_check_nonempty();
! 	    this->_M_invalidate_if(_Equal(_Base::begin()));
! 	  }
  	_Base::pop_front();
        }
  
!       _GLIBCXX26_CONSTEXPR void
        pop_back() _GLIBCXX_NOEXCEPT
        {
! 	if (!std::__is_constant_evaluated())
! 	  {
! 	    __glibcxx_check_nonempty();
! 	    this->_M_invalidate_if(_Equal(_Base::begin()));
! 	  }
  	_Base::pop_back();
        }
  
!       _GLIBCXX26_CONSTEXPR iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __position)
  #else
!       erase(iterator __position)
  #endif
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return iterator(_Base::erase(__position.base()), this);
+ 
  	__glibcxx_check_erase(__position);
  #if __cplusplus >= 201103L
  	_Base_const_iterator __victim = __position.base();
*************** namespace __debug
*** 630,642 ****
  	  }
        }
  
!       iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __first, const_iterator __last)
  #else
        erase(iterator __first, iterator __last)
  #endif
        {
  	// _GLIBCXX_RESOLVE_LIB_DEFECTS
  	// 151. can't currently clear() empty container
  	__glibcxx_check_erase_range(__first, __last);
--- 685,700 ----
  	  }
        }
  
!       _GLIBCXX26_CONSTEXPR iterator
  #if __cplusplus >= 201103L
        erase(const_iterator __first, const_iterator __last)
  #else
        erase(iterator __first, iterator __last)
  #endif
        {
+ 	if (std::__is_constant_evaluated())
+ 	  return iterator(_Base::erase(__first.base(), __last.base()), this);
+ 
  	// _GLIBCXX_RESOLVE_LIB_DEFECTS
  	// 151. can't currently clear() empty container
  	__glibcxx_check_erase_range(__first, __last);
*************** namespace __debug
*** 677,701 ****
  	  }
        }
  
!       void
        swap(deque& __x)
        _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) )
        {
! 	_Safe::_M_swap(__x);
  	_Base::swap(__x);
        }
  
!       void
        clear() _GLIBCXX_NOEXCEPT
        {
  	_Base::clear();
! 	this->_M_invalidate_all();
        }
  
!       _Base&
        _M_base() _GLIBCXX_NOEXCEPT	{ return *this; }
  
!       const _Base&
        _M_base() const _GLIBCXX_NOEXCEPT	{ return *this; }
      };
  
--- 735,761 ----
  	  }
        }
  
!       _GLIBCXX26_CONSTEXPR void
        swap(deque& __x)
        _GLIBCXX_NOEXCEPT_IF( noexcept(declval<_Base&>().swap(__x)) )
        {
! 	if (!std::__is_constant_evaluated())
! 	  _Safe::_M_swap(__x);
  	_Base::swap(__x);
        }
  
!       _GLIBCXX26_CONSTEXPR void
        clear() _GLIBCXX_NOEXCEPT
        {
  	_Base::clear();
! 	if (!std::__is_constant_evaluated())
! 	  this->_M_invalidate_all();
        }
  
!       _GLIBCXX26_CONSTEXPR _Base&
        _M_base() _GLIBCXX_NOEXCEPT	{ return *this; }
  
!       _GLIBCXX26_CONSTEXPR const _Base&
        _M_base() const _GLIBCXX_NOEXCEPT	{ return *this; }
      };
  
*************** namespace __debug
*** 722,728 ****
  #endif
  
    template<typename _Tp, typename _Alloc>
!     inline bool
      operator==(const deque<_Tp, _Alloc>& __lhs,
  	       const deque<_Tp, _Alloc>& __rhs)
      { return __lhs._M_base() == __rhs._M_base(); }
--- 782,788 ----
  #endif
  
    template<typename _Tp, typename _Alloc>
!     inline _GLIBCXX26_CONSTEXPR bool
      operator==(const deque<_Tp, _Alloc>& __lhs,
  	       const deque<_Tp, _Alloc>& __rhs)
      { return __lhs._M_base() == __rhs._M_base(); }
*************** namespace __debug
*** 765,771 ****
  #endif // three-way comparison
  
    template<typename _Tp, typename _Alloc>
!     inline void
      swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
      _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs)))
      { __lhs.swap(__rhs); }
--- 825,831 ----
  #endif // three-way comparison
  
    template<typename _Tp, typename _Alloc>
!     inline _GLIBCXX26_CONSTEXPR void
      swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
      _GLIBCXX_NOEXCEPT_IF(noexcept(__lhs.swap(__rhs)))
      { __lhs.swap(__rhs); }
*************** namespace __debug
*** 775,788 ****
  #ifdef __glibcxx_erase_if // C++ >= 20 && HOSTED
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline typename __debug::deque<_Tp, _Alloc>::size_type
      erase_if(__debug::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
        return __detail::__erase_if(__cont, __cont._M_base(), std::move(__pred));
      }
  
    template<typename _Tp, typename _Alloc, typename _Up = _Tp>
!     inline typename __debug::deque<_Tp, _Alloc>::size_type
      erase(__debug::deque<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  _GLIBCXX_END_NAMESPACE_VERSION
--- 835,848 ----
  #ifdef __glibcxx_erase_if // C++ >= 20 && HOSTED
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline _GLIBCXX26_CONSTEXPR typename __debug::deque<_Tp, _Alloc>::size_type
      erase_if(__debug::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      {
        return __detail::__erase_if(__cont, __cont._M_base(), std::move(__pred));
      }
  
    template<typename _Tp, typename _Alloc, typename _Up = _Tp>
!     inline _GLIBCXX26_CONSTEXPR typename __debug::deque<_Tp, _Alloc>::size_type
      erase(__debug::deque<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  _GLIBCXX_END_NAMESPACE_VERSION
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/experimental/bits/simd.h gcc-17-20260823/libstdc++-v3/include/experimental/bits/simd.h
*** gcc-17-20260816/libstdc++-v3/include/experimental/bits/simd.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/experimental/bits/simd.h	Sun Aug 23 22:32:21 2026
*************** template <size_t _Bytes>
*** 608,623 ****
    __int_for_sizeof()
    {
      static_assert(_Bytes > 0);
!     if constexpr (_Bytes == sizeof(int))
!       return int();
!     else if constexpr (_Bytes == sizeof(_SChar))
!       return _SChar();
!     else if constexpr (_Bytes == sizeof(short))
!       return short();
!     else if constexpr (_Bytes == sizeof(long))
!       return long();
!     else if constexpr (_Bytes == sizeof(_LLong))
!       return _LLong();
    #ifdef __SIZEOF_INT128__
      else if constexpr (_Bytes == sizeof(__int128))
        return __int128();
--- 608,621 ----
    __int_for_sizeof()
    {
      static_assert(_Bytes > 0);
!     if constexpr (_Bytes == sizeof(int32_t))
!       return int32_t();
!     else if constexpr (_Bytes == sizeof(int8_t))
!       return int8_t();
!     else if constexpr (_Bytes == sizeof(int16_t))
!       return int16_t();
!     else if constexpr (_Bytes == sizeof(int64_t))
!       return int64_t();
    #ifdef __SIZEOF_INT128__
      else if constexpr (_Bytes == sizeof(__int128))
        return __int128();
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/experimental/bits/simd_neon.h gcc-17-20260823/libstdc++-v3/include/experimental/bits/simd_neon.h
*** gcc-17-20260816/libstdc++-v3/include/experimental/bits/simd_neon.h	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/experimental/bits/simd_neon.h	Sun Aug 23 22:32:21 2026
*************** template <typename _Abi, typename>
*** 480,506 ****
        {
  	if constexpr (sizeof(_Tp) == 1)
  	  {
! 	    const auto __s8 = __vector_bitcast<_SChar>(__k._M_data);
  	    int8x8_t __tmp = __lo64(__s8) + __hi64z(__s8);
  	    return -vpadd_s8(vpadd_s8(vpadd_s8(__tmp, int8x8_t()), int8x8_t()),
  			     int8x8_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 2)
  	  {
! 	    const auto __s16 = __vector_bitcast<short>(__k._M_data);
  	    int16x4_t __tmp = __lo64(__s16) + __hi64z(__s16);
  	    return -vpadd_s16(vpadd_s16(__tmp, int16x4_t()), int16x4_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 4)
  	  {
! 	    const auto __s32 = __vector_bitcast<int>(__k._M_data);
  	    int32x2_t __tmp = __lo64(__s32) + __hi64z(__s32);
  	    return -vpadd_s32(__tmp, int32x2_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 8)
  	  {
  	    static_assert(sizeof(__k) == 16);
! 	    const auto __s64 = __vector_bitcast<long>(__k._M_data);
  	    return -(__s64[0] + __s64[1]);
  	  }
        }
--- 480,506 ----
        {
  	if constexpr (sizeof(_Tp) == 1)
  	  {
! 	    const auto __s8 = __vector_bitcast<int8_t>(__k._M_data);
  	    int8x8_t __tmp = __lo64(__s8) + __hi64z(__s8);
  	    return -vpadd_s8(vpadd_s8(vpadd_s8(__tmp, int8x8_t()), int8x8_t()),
  			     int8x8_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 2)
  	  {
! 	    const auto __s16 = __vector_bitcast<int16_t>(__k._M_data);
  	    int16x4_t __tmp = __lo64(__s16) + __hi64z(__s16);
  	    return -vpadd_s16(vpadd_s16(__tmp, int16x4_t()), int16x4_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 4)
  	  {
! 	    const auto __s32 = __vector_bitcast<int32_t>(__k._M_data);
  	    int32x2_t __tmp = __lo64(__s32) + __hi64z(__s32);
  	    return -vpadd_s32(__tmp, int32x2_t())[0];
  	  }
  	else if constexpr (sizeof(_Tp) == 8)
  	  {
  	    static_assert(sizeof(__k) == 16);
! 	    const auto __s64 = __vector_bitcast<int64_t>(__k._M_data);
  	    return -(__s64[0] + __s64[1]);
  	  }
        }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/bit gcc-17-20260823/libstdc++-v3/include/std/bit
*** gcc-17-20260816/libstdc++-v3/include/std/bit	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/bit	Sun Aug 23 22:32:21 2026
***************
*** 33,39 ****
  #pragma GCC system_header
  #endif
  
! #if __cplusplus >= 201402L
  
  #include <concepts> // for std::integral
  #include <type_traits>
--- 33,39 ----
  #pragma GCC system_header
  #endif
  
! #if __cplusplus >= 201103L
  
  #include <concepts> // for std::integral
  #include <type_traits>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 157,163 ****
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
  
    template<typename _Tp>
!     constexpr _Tp
      __rotl(_Tp __x, int __s) noexcept
      {
        constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
--- 157,163 ----
  #pragma GCC diagnostic ignored "-Wc++17-extensions" // if constexpr
  
    template<typename _Tp>
!     _GLIBCXX14_CONSTEXPR _Tp
      __rotl(_Tp __x, int __s) noexcept
      {
        constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 179,185 ****
      }
  
    template<typename _Tp>
!     constexpr _Tp
      __rotr(_Tp __x, int __s) noexcept
      {
        constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
--- 179,185 ----
      }
  
    template<typename _Tp>
!     _GLIBCXX14_CONSTEXPR _Tp
      __rotr(_Tp __x, int __s) noexcept
      {
        constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 200,215 ****
  	return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); // rotl(x, -r)
      }
  
    template<typename _Tp>
      constexpr int
      __countl_zero(_Tp __x) noexcept
      {
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
- 
- #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_clzg)
-       return __builtin_clzg(__x, _Nd);
- #else
        if (__x == 0)
          return _Nd;
  
--- 200,219 ----
  	return (__x << -__r) | (__x >> ((_Nd + __r) % _Nd)); // rotl(x, -r)
      }
  
+ #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_clzg)
    template<typename _Tp>
      constexpr int
      __countl_zero(_Tp __x) noexcept
      {
+       return __builtin_clzg(__x, __gnu_cxx::__int_traits<_Tp>::__digits);
+     }
+ #else
+   template<typename _Tp>
+     _GLIBCXX14_CONSTEXPR int
+     __countl_zero(_Tp __x) noexcept
+     {
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
        if (__x == 0)
          return _Nd;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 247,254 ****
  	  unsigned long long __low = __x & __max_ull;
  	  return (_Nd - _Nd_ull) + __builtin_clzll(__low);
  	}
- #endif
      }
  
    template<typename _Tp>
      constexpr int
--- 251,258 ----
  	  unsigned long long __low = __x & __max_ull;
  	  return (_Nd - _Nd_ull) + __builtin_clzll(__low);
  	}
      }
+ #endif
  
    template<typename _Tp>
      constexpr int
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 257,272 ****
        return std::__countl_zero<_Tp>((_Tp)~__x);
      }
  
!   template<typename _Tp>
      constexpr int
      __countr_zero(_Tp __x) noexcept
      {
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
- 
- #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_ctzg)
-       return __builtin_ctzg(__x, _Nd);
- #else
        if (__x == 0)
          return _Nd;
  
--- 261,280 ----
        return std::__countl_zero<_Tp>((_Tp)~__x);
      }
  
! #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_ctzg)
!    template<typename _Tp>
      constexpr int
      __countr_zero(_Tp __x) noexcept
      {
+       return __builtin_ctzg(__x, __gnu_cxx::__int_traits<_Tp>::__digits);
+     } 
+ #else
+   template<typename _Tp>
+     _GLIBCXX14_CONSTEXPR int
+     __countr_zero(_Tp __x) noexcept
+     {
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
        if (__x == 0)
          return _Nd;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 292,299 ****
  	  unsigned long long __high = __x >> _Nd_ull;
  	  return __builtin_ctzll(__high) + _Nd_ull;
  	}
- #endif
      }
  
    template<typename _Tp>
      constexpr int
--- 300,307 ----
  	  unsigned long long __high = __x >> _Nd_ull;
  	  return __builtin_ctzll(__high) + _Nd_ull;
  	}
      }
+ #endif
  
    template<typename _Tp>
      constexpr int
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 302,314 ****
        return std::__countr_zero((_Tp)~__x);
      }
  
    template<typename _Tp>
      constexpr int
      __popcount(_Tp __x) noexcept
      {
- #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_popcountg)
        return __builtin_popcountg(__x);
  #else
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
  
--- 310,327 ----
        return std::__countr_zero((_Tp)~__x);
      }
  
+ #if _GLIBCXX_USE_BUILTIN_TRAIT(__builtin_popcountg)
    template<typename _Tp>
      constexpr int
      __popcount(_Tp __x) noexcept
      {
        return __builtin_popcountg(__x);
+     }
  #else
+   template<typename _Tp>
+     _GLIBCXX14_CONSTEXPR int
+     __popcount(_Tp __x) noexcept
+     {
        using __gnu_cxx::__int_traits;
        constexpr auto _Nd = __int_traits<_Tp>::__digits;
  
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 332,339 ****
  	  unsigned long long __high = __x >> _Nd_ull;
  	  return __builtin_popcountll(__low) + __builtin_popcountll(__high);
  	}
- #endif
      }
  
    template<typename _Tp>
      constexpr bool
--- 345,352 ----
  	  unsigned long long __high = __x >> _Nd_ull;
  	  return __builtin_popcountll(__low) + __builtin_popcountll(__high);
  	}
      }
+ #endif
  
    template<typename _Tp>
      constexpr bool
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 341,347 ****
--- 354,374 ----
      { return std::__popcount(__x) == 1; }
  
    template<typename _Tp>
+     constexpr int
+     __bit_width(_Tp __x) noexcept
+     {
+       return __gnu_cxx::__int_traits<_Tp>::__digits - std::__countl_zero(__x);
+     }
+ 
+   template<typename _Tp>
      constexpr _Tp
+     __bit_floor(_Tp __x) noexcept
+     {
+       return (__x == 0) ? (_Tp)0 : ((_Tp)1u << (std::__bit_width(__x) - 1));
+     }
+ 
+   template<typename _Tp>
+     _GLIBCXX14_CONSTEXPR _Tp
      __bit_ceil(_Tp __x) noexcept
      {
        using __gnu_cxx::__int_traits;
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 372,395 ****
        return (_Tp)1u << __shift_exponent;
      }
  
-   template<typename _Tp>
-     constexpr _Tp
-     __bit_floor(_Tp __x) noexcept
-     {
-       constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
-       if (__x == 0)
-         return 0;
-       return (_Tp)1u << (_Nd - std::__countl_zero((_Tp)(__x >> 1)));
-     }
- 
-   template<typename _Tp>
-     constexpr int
-     __bit_width(_Tp __x) noexcept
-     {
-       constexpr auto _Nd = __gnu_cxx::__int_traits<_Tp>::__digits;
-       return _Nd - std::__countl_zero(__x);
-     }
- 
  #pragma GCC diagnostic pop
    /// @endcond
  
--- 399,404 ----
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 499,503 ****
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
! #endif // C++14
  #endif // _GLIBCXX_BIT
--- 508,512 ----
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  
! #endif // C++11
  #endif // _GLIBCXX_BIT
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/chrono gcc-17-20260823/libstdc++-v3/include/std/chrono
*** gcc-17-20260816/libstdc++-v3/include/std/chrono	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/chrono	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 904,932 ****
        constexpr bool
        is_leap() const noexcept
        {
! 	// Testing divisibility by 100 first gives better performance [1], i.e.,
! 	//     return _M_y % 100 == 0 ? _M_y % 400 == 0 : _M_y % 16 == 0;
! 	// Furthermore, if _M_y % 100 == 0, then _M_y % 400 == 0 is equivalent
! 	// to _M_y % 16 == 0, so we can simplify it to
! 	//     return _M_y % 100 == 0 ? _M_y % 16 == 0 : _M_y % 4 == 0.  // #1
! 	// Similarly, we can replace 100 with 25 (which is good since
! 	// _M_y % 25 == 0 requires one fewer instruction than _M_y % 100 == 0
! 	// [2]):
! 	//     return _M_y % 25 == 0 ? _M_y % 16 == 0 : _M_y % 4 == 0.  // #2
! 	// Indeed, first assume _M_y % 4 != 0.  Then _M_y % 16 != 0 and hence,
! 	// _M_y % 4 == 0 and _M_y % 16 == 0 are both false.  Therefore, #2
! 	// returns false as it should (regardless of _M_y % 25.) Now assume
! 	// _M_y % 4 == 0.  In this case, _M_y % 25 == 0 if, and only if,
! 	// _M_y % 100 == 0, that is, #1 and #2 are equivalent.  Finally, #2 is
! 	// equivalent to
! 	//     return (_M_y & (_M_y % 25 == 0 ? 15 : 3)) == 0.
! 
! 	// References:
! 	// [1] https://github.com/cassioneri/calendar
! 	// [2] https://godbolt.org/z/55G8rn77e
! 	// [3] https://gcc.gnu.org/pipermail/libstdc++/2021-June/052815.html
! 
! 	return (_M_y & (_M_y % 25 == 0 ? 15 : 3)) == 0;
        }
  
        explicit constexpr
--- 904,917 ----
        constexpr bool
        is_leap() const noexcept
        {
! 	// Shift into the range supported by Falk Hueffner's leap-year test:
! 	// hueffner.de/falk/blog/a-leap-year-check-in-three-instructions.html
! 	// Adding a multiple of 400 preserves divisibility by 4, 100, and 400.
! 	// Idea by Cassio Neri: add 32800 (82 * 400).
! 	// The conversion to uint32_t gives the algorithm's intended modulo
! 	// 2^32 arithmetic.
! 	const auto __y = static_cast<uint32_t>(_M_y) + 32800u;
! 	return ((__y * 1073750999u) & 3221352463u) <= 126976u;
        }
  
        explicit constexpr
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/deque gcc-17-20260823/libstdc++-v3/include/std/deque
*** gcc-17-20260816/libstdc++-v3/include/std/deque	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/deque	Sun Aug 23 22:32:21 2026
***************
*** 73,78 ****
--- 73,79 ----
  
  #define __glibcxx_want_algorithm_default_value_type
  #define __glibcxx_want_allocator_traits_is_always_equal
+ #define __glibcxx_want_constexpr_deque
  #define __glibcxx_want_containers_ranges
  #define __glibcxx_want_erase_if
  #define __glibcxx_want_hardened_deque
*************** namespace std _GLIBCXX_VISIBILITY(defaul
*** 103,115 ****
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
      erase_if(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      { return __detail::__erase_if(__cont, __cont, std::move(__pred)); }
  
    template<typename _Tp, typename _Alloc,
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
!     inline typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
      erase(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
--- 104,118 ----
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
  
    template<typename _Tp, typename _Alloc, typename _Predicate>
!     inline _GLIBCXX26_CONSTEXPR
!     typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
      erase_if(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, _Predicate __pred)
      { return __detail::__erase_if(__cont, __cont, std::move(__pred)); }
  
    template<typename _Tp, typename _Alloc,
  	   typename _Up _GLIBCXX26_DEF_VAL_T(_Tp)>
!     inline _GLIBCXX26_CONSTEXPR
!     typename _GLIBCXX_STD_C::deque<_Tp, _Alloc>::size_type
      erase(_GLIBCXX_STD_C::deque<_Tp, _Alloc>& __cont, const _Up& __value)
      { return std::erase_if(__cont, __gnu_cxx::__ops::__equal_to(__value)); }
  
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/format gcc-17-20260823/libstdc++-v3/include/std/format
*** gcc-17-20260816/libstdc++-v3/include/std/format	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/format	Sun Aug 23 22:32:21 2026
*************** namespace __format
*** 3003,3030 ****
      };
  #endif
  
- #if defined(__STDCPP_FLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
-   // Reuse __formatter_fp<C>::format<float, Out> for _Float16.
-   template<__format::__char _CharT>
-     struct formatter<_Float16, _CharT>
-     {
-       formatter() = default;
- 
-       [[__gnu__::__always_inline__]]
-       constexpr typename basic_format_parse_context<_CharT>::iterator
-       parse(basic_format_parse_context<_CharT>& __pc)
-       { return _M_f.parse(__pc); }
- 
-       template<typename _Out>
- 	typename basic_format_context<_Out, _CharT>::iterator
- 	format(_Float16 __u, basic_format_context<_Out, _CharT>& __fc) const
- 	{ return _M_f.format((float)__u, __fc); }
- 
-     private:
-       __format::__formatter_fp<_CharT> _M_f;
-     };
- #endif
- 
  #if defined(__FLT32_DIG__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
    // Reuse __formatter_fp<C>::format<float, Out> for _Float32.
    template<__format::__char _CharT>
--- 3003,3008 ----
*************** namespace __format
*** 3114,3141 ****
      };
  #endif
  
- #if defined(__STDCPP_BFLOAT16_T__) && defined(_GLIBCXX_FLOAT_IS_IEEE_BINARY32)
-   // Reuse __formatter_fp<C>::format<float, Out> for bfloat16_t.
-   template<__format::__char _CharT>
-     struct formatter<__format::__bflt16_t, _CharT>
-     {
-       formatter() = default;
- 
-       [[__gnu__::__always_inline__]]
-       constexpr typename basic_format_parse_context<_CharT>::iterator
-       parse(basic_format_parse_context<_CharT>& __pc)
-       { return _M_f.parse(__pc); }
- 
-       template<typename _Out>
- 	typename basic_format_context<_Out, _CharT>::iterator
- 	format(__gnu_cxx::__bfloat16_t __u,
- 	       basic_format_context<_Out, _CharT>& __fc) const
- 	{ return _M_f.format((float)__u, __fc); }
- 
-     private:
-       __format::__formatter_fp<_CharT> _M_f;
-     };
- #endif
  #endif // __cpp_lib_to_chars
  
    /** Format a pointer.
--- 3092,3097 ----
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/numbers gcc-17-20260823/libstdc++-v3/include/std/numbers
*** gcc-17-20260816/libstdc++-v3/include/std/numbers	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/numbers	Sun Aug 23 22:32:21 2026
*************** __glibcxx_numbers (_Float64, F64);
*** 222,228 ****
  __glibcxx_numbers (_Float128, F128);
  #endif
  
! #ifdef __STDCPP_BFLOAT128_T__
  __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16);
  #endif
  
--- 222,228 ----
  __glibcxx_numbers (_Float128, F128);
  #endif
  
! #ifdef __STDCPP_BFLOAT16_T__
  __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16);
  #endif
  
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/queue gcc-17-20260823/libstdc++-v3/include/std/queue
*** gcc-17-20260816/libstdc++-v3/include/std/queue	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/queue	Sun Aug 23 22:32:21 2026
***************
*** 63,68 ****
--- 63,69 ----
  
  #define __glibcxx_want_adaptor_iterator_pair_constructor
  #define __glibcxx_want_containers_ranges
+ #define __glibcxx_want_constexpr_queue
  #include <bits/version.h>
  
  #include <deque>
***************
*** 74,79 ****
--- 75,86 ----
  #ifdef __glibcxx_format_ranges // C++ >= 23 && HOSTED
  #include <bits/formatfwd.h>
  
+ #ifdef __glibcxx_constexpr_format // C++ >= 26 && HOSTED && CXX11 strings
+ # define _GLIBCXX_CONSTEXPR_FORMAT constexpr
+ #else
+ # define _GLIBCXX_CONSTEXPR_FORMAT
+ #endif
+ 
  namespace std _GLIBCXX_VISIBILITY(default)
  {
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 99,104 ****
--- 106,112 ----
        // Standard declares this as template accepting unconstrained
        // FormatContext type.
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__maybe_const_adaptor& __a,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 141,146 ****
--- 149,155 ----
        // Standard declares this as template accepting unconstrained
        // FormatContext type.
        template<typename _Out>
+ 	_GLIBCXX_CONSTEXPR_FORMAT
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__maybe_const_adaptor& __a,
  	       basic_format_context<_Out, _CharT>& __fc) const
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 163,168 ****
--- 172,179 ----
        priority_queue<_Tp, _Container, _Comparator>> = false;
  #endif
  
+ #undef _GLIBCXX_CONSTEXPR_FORMAT
+ 
  _GLIBCXX_END_NAMESPACE_VERSION
  } // namespace std
  #endif // __glibcxx_format_ranges
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/stack gcc-17-20260823/libstdc++-v3/include/std/stack
*** gcc-17-20260816/libstdc++-v3/include/std/stack	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/stack	Sun Aug 23 22:32:21 2026
***************
*** 63,68 ****
--- 63,69 ----
  
  #define __glibcxx_want_adaptor_iterator_pair_constructor
  #define __glibcxx_want_containers_ranges
+ #define __glibcxx_want_constexpr_stack
  #include <bits/version.h>
  
  #include <deque>
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 96,101 ****
--- 97,105 ----
        // Standard declares this as template accepting unconstrained
        // FormatContext type.
        template<typename _Out>
+ #ifdef __glibcxx_constexpr_format // C++ >= 26 && HOSTED && CXX11 string
+ 	constexpr
+ #endif
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(__maybe_const_adaptor& __a,
  	       basic_format_context<_Out, _CharT>& __fc) const
diff -Nrcpad gcc-17-20260816/libstdc++-v3/include/std/vector gcc-17-20260823/libstdc++-v3/include/std/vector
*** gcc-17-20260816/libstdc++-v3/include/std/vector	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/include/std/vector	Sun Aug 23 22:32:21 2026
*************** _GLIBCXX_BEGIN_NAMESPACE_VERSION
*** 148,153 ****
--- 148,156 ----
        // Standard declares this as template accepting unconstrained
        // FormatContext type.
        template<typename _Out>
+ #ifdef __glibcxx_constexpr_format // C++ >= 26 && HOSTED && CXX11 string
+ 	constexpr
+ #endif
  	typename basic_format_context<_Out, _CharT>::iterator
  	format(const _GLIBCXX_STD_C::_Bit_reference& __u,
  	       basic_format_context<_Out, _CharT>& __fc) const
diff -Nrcpad gcc-17-20260816/libstdc++-v3/scripts/check_performance gcc-17-20260823/libstdc++-v3/scripts/check_performance
*** gcc-17-20260816/libstdc++-v3/scripts/check_performance	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/scripts/check_performance	Sun Aug 23 22:32:21 2026
*************** SH_FLAG="-Wl,--rpath -Wl,$BUILD_DIR/../.
*** 32,38 ****
           -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
  ST_FLAG="-static"
  LINK=$SH_FLAG
! CXX="$COMPILER $INCLUDES $FLAGS -std=gnu++11 $CXXFLAGS $LINK"
  LIBS="./libtestc++.a"
  TESTS_FILE="testsuite_files_performance"
  
--- 32,38 ----
           -Wl,--rpath -Wl,$BUILD_DIR/src/.libs"
  ST_FLAG="-static"
  LINK=$SH_FLAG
! CXX="$COMPILER $INCLUDES $FLAGS $CXXFLAGS $LINK"
  LIBS="./libtestc++.a"
  TESTS_FILE="testsuite_files_performance"
  
diff -Nrcpad gcc-17-20260816/libstdc++-v3/src/Makefile.am gcc-17-20260823/libstdc++-v3/src/Makefile.am
*** gcc-17-20260816/libstdc++-v3/src/Makefile.am	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/src/Makefile.am	Sun Aug 23 22:32:21 2026
*************** endif
*** 46,51 ****
--- 46,71 ----
  SUBDIRS = c++98 c++11 c++17 c++20 c++23 c++26 \
  	$(filesystem_dir) $(backtrace_dir) $(experimental_dir)
  
+ # automake walks SUBDIRS with a shell loop, so the source directories are
+ # built strictly one after another however large -j is.  They are independent
+ # of each other apart from the convenience archives that src/experimental
+ # links, so build them from make instead and let it overlap them.  automake's
+ # own loop still runs afterwards, where it finds everything already built and
+ # costs nothing, and the recursion for install, clean and the rest is
+ # untouched.
+ all-recursive: all-parallel-subdirs
+ 
+ all-parallel-subdirs: $(SUBDIRS:%=all-in-%)
+ 
+ all-in-%:
+ 	$(MAKE) $(AM_MAKEFLAGS) -C $* all
+ 
+ # src/experimental links the convenience archives of these directories.
+ all-in-experimental: all-in-c++23 all-in-c++26 \
+ 	$(filesystem_dir:%=all-in-%) $(backtrace_dir:%=all-in-%)
+ 
+ .PHONY: all-parallel-subdirs
+ 
  # Cross compiler support.
  if VTV_CYGMIN
  toolexeclib_LTLIBRARIES = libvtv.la libstdc++.la
diff -Nrcpad gcc-17-20260816/libstdc++-v3/src/Makefile.in gcc-17-20260823/libstdc++-v3/src/Makefile.in
*** gcc-17-20260816/libstdc++-v3/src/Makefile.in	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/src/Makefile.in	Sun Aug 23 22:32:21 2026
*************** uninstall-am: uninstall-toolexeclibLTLIB
*** 1020,1025 ****
--- 1020,1045 ----
  .PRECIOUS: Makefile
  
  
+ # automake walks SUBDIRS with a shell loop, so the source directories are
+ # built strictly one after another however large -j is.  They are independent
+ # of each other apart from the convenience archives that src/experimental
+ # links, so build them from make instead and let it overlap them.  automake's
+ # own loop still runs afterwards, where it finds everything already built and
+ # costs nothing, and the recursion for install, clean and the rest is
+ # untouched.
+ all-recursive: all-parallel-subdirs
+ 
+ all-parallel-subdirs: $(SUBDIRS:%=all-in-%)
+ 
+ all-in-%:
+ 	$(MAKE) $(AM_MAKEFLAGS) -C $* all
+ 
+ # src/experimental links the convenience archives of these directories.
+ all-in-experimental: all-in-c++23 all-in-c++26 \
+ 	$(filesystem_dir:%=all-in-%) $(backtrace_dir:%=all-in-%)
+ 
+ .PHONY: all-parallel-subdirs
+ 
  @VTV_CYGMIN_TRUE@vtv_stubs.cc:
  @VTV_CYGMIN_TRUE@	rm -f $@
  @VTV_CYGMIN_TRUE@	$(LN_S) $(toplevel_srcdir)/libstdc++-v3/libsupc++/vtv_stubs.cc $@
diff -Nrcpad gcc-17-20260816/libstdc++-v3/src/c++23/Makefile.am gcc-17-20260823/libstdc++-v3/src/c++23/Makefile.am
*** gcc-17-20260816/libstdc++-v3/src/c++23/Makefile.am	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/src/c++23/Makefile.am	Sun Aug 23 22:32:21 2026
*************** std.cc: std.cc.in std-clib.cc.in
*** 54,59 ****
--- 54,63 ----
  std.compat.cc: std.compat.cc.in std-clib.cc.in
  	cat $^ > $@
  
+ # Empty file used in case std.cc or std.compat.cc fails to compile.
+ empty.cc:
+ 	echo > $@
+ 
  # Also put the interface units in the build-includes bits directory.
  stamp-modules-bits: $(includebits_DATA)
  	@-mkdir -p $(top_builddir)/include/bits
*************** MODULES_FLAGS = -isystem ${glibcxx_srcdi
*** 100,132 ****
  	-Wno-unknown-pragmas
  
  # These go into libmodulesconvenience.la and are linked into libstdc++
! std.lo: std.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.o: std.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.compat.lo: std.compat.cc std.lo
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.compat.o: std.compat.cc std.o
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
  
  # AM_CXXFLAGS needs to be in each subdirectory so that it can be
--- 104,132 ----
  	-Wno-unknown-pragmas
  
  # These go into libmodulesconvenience.la and are linked into libstdc++
! std.lo: std.cc empty.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.o: std.cc empty.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.compat.lo: std.compat.cc std.lo empty.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.compat.o: std.compat.cc std.o empty.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
  
  # AM_CXXFLAGS needs to be in each subdirectory so that it can be
diff -Nrcpad gcc-17-20260816/libstdc++-v3/src/c++23/Makefile.in gcc-17-20260823/libstdc++-v3/src/c++23/Makefile.in
*** gcc-17-20260816/libstdc++-v3/src/c++23/Makefile.in	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/src/c++23/Makefile.in	Sun Aug 23 22:32:21 2026
*************** std.cc: std.cc.in std-clib.cc.in
*** 862,867 ****
--- 862,871 ----
  std.compat.cc: std.compat.cc.in std-clib.cc.in
  	cat $^ > $@
  
+ # Empty file used in case std.cc or std.compat.cc fails to compile.
+ empty.cc:
+ 	echo > $@
+ 
  # Also put the interface units in the build-includes bits directory.
  stamp-modules-bits: $(includebits_DATA)
  	@-mkdir -p $(top_builddir)/include/bits
*************** print.o: print.cc
*** 884,916 ****
  	$(CXXCOMPILE) -std=gnu++26 -c $<
  
  # These go into libmodulesconvenience.la and are linked into libstdc++
! std.lo: std.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.o: std.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.compat.lo: std.compat.cc std.lo
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
! std.compat.o: std.compat.cc std.o
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  echo > $<.tmp && mv $<.tmp $< && \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; \
  	fi
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
--- 888,916 ----
  	$(CXXCOMPILE) -std=gnu++26 -c $<
  
  # These go into libmodulesconvenience.la and are linked into libstdc++
! std.lo: std.cc empty.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.o: std.cc empty.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.compat.lo: std.compat.cc std.lo empty.cc
  	if ! $(LTCXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(LTCXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
! std.compat.o: std.compat.cc std.o empty.cc
  	if ! $(CXXCOMPILE) $(MODULES_FLAGS) -c $< ; then \
  	  echo "Cannot compile std.compat module" >&2; \
  	  echo "Module initialization function will be missing" >&2; \
! 	  $(CXXCOMPILE) $(MODULES_FLAGS) -c empty.cc -o $@; \
  	fi
  
  # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff -Nrcpad gcc-17-20260816/libstdc++-v3/src/experimental/Makefile.am gcc-17-20260823/libstdc++-v3/src/experimental/Makefile.am
*** gcc-17-20260816/libstdc++-v3/src/experimental/Makefile.am	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/src/experimental/Makefile.am	Sun Aug 23 22:32:21 2026
*************** contract26.o: contract26.cc
*** 51,56 ****
--- 51,58 ----
  
  libstdc__exp_la_SOURCES = $(sources)
  
+ ## Keep these lists sync'd with src/Makefile.am:all-in-experimental, which
+ ## builds those directories before this one links their archives.
  libstdc__exp_la_LIBADD = \
  	$(top_builddir)/src/c++23/libc++23convenience.la \
  	$(top_builddir)/src/c++26/libc++26convenience.la \
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/deque/constexpr.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/deque/constexpr.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/deque/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/deque/constexpr.cc	Sun Aug 23 22:32:22 2026
***************
*** 0 ****
--- 1,334 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <deque>
+ 
+ #ifndef __cpp_lib_constexpr_deque
+ #error "Feature test macro for constexpr deque is missing in <deque>"
+ #elif __cpp_lib_constexpr_deque != 202502L
+ # error "Feature test macro for constexpr deque has wrong value in <deque>"
+ #endif
+ 
+ #include <ranges>
+ #include <numeric>
+ #include <testsuite_hooks.h>
+ #include <testsuite_iterators.h>
+ #include <testsuite_allocator.h>
+ 
+ using namespace __gnu_test;
+ 
+ template<typename Alloc>
+ constexpr bool
+ ctor_tests()
+ {
+   Alloc alloc;
+ 
+   std::deque<int, Alloc> dq2(alloc);
+   std::deque<int, Alloc> dq3(4, alloc);
+   VERIFY( dq3.front() == 0 );
+   VERIFY( dq3.size() == 4 );
+   std::deque<int, Alloc> dq4(4, 5, alloc);
+   VERIFY( dq4.front() == 5 );
+   VERIFY( dq4.size() == 4 );
+ 
+   auto rg = {2, 3, 5, 7};
+   std::deque<int> dq5(rg.begin(), rg.end());
+   VERIFY( dq5.front() == 2 );
+   VERIFY( dq5.back() == 7 );
+   VERIFY( dq5.size() == 4 );
+ 
+   std::deque<int> dq6(std::from_range, rg);
+   VERIFY( dq6 == dq5 );
+ 
+   std::deque<int> dq1{1, 2, 3};
+   std::deque<int> dq7(dq1);
+   VERIFY( dq7 == dq1 );
+   std::deque<int>dq8(std::move(dq1));
+   VERIFY( dq8 == dq7 );
+ 
+   dq2.insert_range(dq2.begin(), rg);
+   std::deque<int, Alloc> dq9(dq2, alloc);
+   std::deque<int, Alloc> dq10(std::move(dq2), alloc);
+   VERIFY( dq9 == dq10 );
+   std::deque<int, Alloc> dq11(rg, alloc);
+   VERIFY( dq11 == dq10 );
+ 
+   return true;
+ }
+ static_assert( ctor_tests<std::allocator<int>>() );
+ static_assert( ctor_tests<SimpleAllocator<int>>() );
+ 
+ constexpr bool
+ insert_tests()
+ {
+   std::deque<int> dq1 {};
+ 
+   auto rg = {1, 2, 3, 4, 5};
+ 
+   dq1.insert(dq1.begin() , 1);
+   dq1.insert(dq1.end(), 2);
+   VERIFY( dq1.size() == 2 );
+   VERIFY( dq1.front() == 1 );
+   VERIFY( dq1.back() == 2 );
+ 
+   dq1.insert(dq1.end(), 1, 3);
+ 
+   dq1.insert(dq1.end(), rg.begin() + 3, rg.end());
+ 
+   VERIFY( dq1[0] == 1 );
+   VERIFY( dq1[1] == 2 );
+   VERIFY( dq1[2] == 3 );
+   VERIFY( dq1[3] == 4 );
+   VERIFY( dq1[4] == 5 );
+   dq1.clear();
+ 
+   dq1.insert(dq1.begin(), rg.begin(), rg.end());
+   VERIFY( dq1[0] == 1 );
+   VERIFY( dq1[1] == 2 );
+   VERIFY( dq1[2] == 3 );
+   VERIFY( dq1[3] == 4 );
+   VERIFY( dq1[4] == 5 );
+ 
+   dq1.insert_range(dq1.end(), rg);
+   VERIFY( dq1[5] == 1 );
+   VERIFY( dq1[6] == 2 );
+   VERIFY( dq1[7] == 3 );
+   VERIFY( dq1[8] == 4 );
+   VERIFY( dq1[9] == 5 );
+ 
+   std::deque<int>dq2 {2, 3, 5, 7};
+   dq2.erase(dq2.begin());
+   VERIFY( dq2.size() == 3 );
+   dq2.clear();
+   VERIFY( dq2.size() == 0);
+   VERIFY( dq2.empty() );
+ 
+   std::deque<int> dq3, dq4;
+   dq3.insert_range(dq3.begin(), rg);
+   dq4.append_range(rg);
+   VERIFY( dq3 == dq4 );
+   dq3.erase(dq3.begin(), dq3.end());
+   dq3.prepend_range(rg);
+   VERIFY( dq3 == dq4 );
+ 
+   struct S {
+     int foo;
+     constexpr S (int i, int j) : foo{i + j} {}
+   };
+   std::deque<S> dq5 {};
+   dq5.emplace(dq5.end(), 0, 1);
+   const S& s1 = dq5.emplace_back(1, 1);
+   const S& s2 = dq5.emplace_front(2, 1);
+   VERIFY( dq5.front().foo == 3 );
+   VERIFY( dq5.back().foo == 2 );
+   VERIFY( dq5[1].foo == 1 );
+ 
+   std::deque<int> dq6 {2, 3};
+   dq6.push_front(1);
+   dq6.push_back(4);
+   VERIFY( dq6.front() == 1);
+   VERIFY( dq6.back() == 4 );
+   dq6.pop_front();
+   dq6.pop_back();
+ 
+   std::deque<int> dq7 {1, 2};
+   dq7.resize(4);
+   VERIFY( dq7.back() == 0 );
+   dq7.resize(2);
+   VERIFY( dq7.front() == 1 );
+   VERIFY( dq7.back() == 2 );
+   dq7.clear();
+   dq7.resize(2);
+   VERIFY( dq7.front() == 0 );
+   VERIFY( dq7.back() == 0 );
+ 
+   std::deque<int> dq8 {1, 4};
+   dq8.swap(dq6);
+   VERIFY( dq6.front() == 1 );
+   VERIFY( dq6.back() == 4 );
+   VERIFY( dq8.front() == 2 );
+   VERIFY( dq8.back() == 3 );
+ 
+   return true;
+ }
+ 
+ static_assert( insert_tests() );
+ 
+ constexpr bool
+ iterators_tests()
+ {
+   std::deque<int> dq0 {};
+   VERIFY( dq0.begin() == dq0.end() );
+   dq0.resize(1);
+   VERIFY( dq0.begin() != dq0.end() );
+   dq0.resize(2);
+   VERIFY( dq0.begin() != dq0.end() );
+   VERIFY( dq0.cbegin() == dq0.begin() );
+   VERIFY( dq0.crbegin() == dq0.rbegin() );
+   VERIFY( dq0.cend() == dq0.end() );
+   VERIFY( dq0.crend() == dq0.rend() );
+ 
+   auto it = dq0.begin();
+   VERIFY( it[0] == 0 );
+   VERIFY( &*it == &dq0.front() );
+   VERIFY( &it[1] == &dq0[1] );
+   VERIFY( it++ == dq0.begin() );
+   VERIFY( ++it == dq0.end() );
+   VERIFY( (it - 2) == dq0.begin() );
+   VERIFY( (it - dq0.begin()) == 2 );
+   it -= 2;
+   it += 1;
+   VERIFY( (it + 1) == dq0.end() );
+   VERIFY( (1 + it) == dq0.end() );
+   it = it + 1;
+   auto it2 = dq0.begin();
+   std::swap(it, it2);
+   VERIFY( it == dq0.begin() );
+   VERIFY( it2 == dq0.end() );
+ 
+   auto rit = dq0.rbegin();
+   VERIFY( rit[0] == 0 );
+   VERIFY( &*rit == &dq0.back() );
+   VERIFY( &rit[1] == &dq0[0] );
+   VERIFY( rit++ == dq0.rbegin() );
+   VERIFY( ++rit == dq0.rend() );
+   VERIFY( (rit - 2) == dq0.rbegin() );
+   VERIFY( (rit - dq0.rbegin()) == 2 );
+   rit -= 2;
+   rit += 1;
+   VERIFY( (rit + 1) == dq0.rend() );
+   VERIFY( (1 + rit) == dq0.rend() );
+   rit = rit + 1;
+   auto rit2 = dq0.rbegin();
+   std::swap(rit, rit2);
+   VERIFY( rit == dq0.rbegin() );
+   VERIFY( rit2 == dq0.rend() );
+ 
+   return true;
+ }
+ static_assert( iterators_tests() );
+ 
+ constexpr bool
+ capacity_tests()
+ {
+   std::deque<int> dq0 {};
+   VERIFY( dq0.empty() );
+   VERIFY( dq0.max_size() );
+   dq0.push_front(0);
+   VERIFY( dq0.size() == 1 );
+   dq0.erase(dq0.begin());
+   dq0.shrink_to_fit();
+ 
+   return true;
+ }
+ static_assert( capacity_tests() );
+ 
+ constexpr bool
+ nonmember_tests()
+ {
+   std::deque<int> dq0 {0, 1};
+   std::deque<int> dq1 {0, 1};
+ 
+   VERIFY( (dq0 == dq1) == true );
+   VERIFY( (dq0 != dq1) == false );
+   VERIFY( (dq0 <= dq1) == true );
+   VERIFY( (dq0 >= dq1) == true );
+   VERIFY( (dq0  < dq1) == false );
+   VERIFY( (dq0  > dq1) == false );
+   VERIFY( (dq0 <=> dq1) == 0 );
+   VERIFY( (dq0 <=> dq1) <= 0 );
+   VERIFY( (dq0 <=> dq1) >= 0 );
+ 
+   std::deque<int> dq2 {2, 4};
+   std::swap(dq1, dq2);
+ 
+   VERIFY( (dq0 == dq1) == false );
+   VERIFY( (dq0 != dq1) == true );
+   VERIFY( (dq0 <= dq1) == true );
+   VERIFY( (dq0 >= dq1) == false );
+   VERIFY( (dq0  < dq1) == true );
+   VERIFY( (dq0  > dq1) == false );
+   VERIFY( (dq0 <=> dq1) != 0 );
+   VERIFY( (dq0 <=> dq1) <= 0 );
+   VERIFY( (dq0 <=> dq1)  < 0 );
+ 
+   std::erase(dq0, 0);
+   VERIFY( dq0.front() == 1 );
+ 
+   std::erase_if(dq1, [](int x) { return x % 2 == 0; });
+   VERIFY( dq1.empty() );
+   return true;
+ }
+ static_assert( nonmember_tests() );
+ 
+ template<typename Range>
+ constexpr bool
+ ranges_test()
+ {
+   using Tp = std::ranges::range_value_t<Range>;
+   Tp a[] {0, 1, 2, 3, 4,
+    5, 6, 7, 8, 9};
+ 
+   // Constructor tests
+   auto dq1 = std::deque<Tp>(std::from_range, Range(a, a+5));
+   VERIFY( dq1[0] == 0 );
+   VERIFY( dq1[1] == 1 );
+   VERIFY( dq1[2] == 2 );
+   VERIFY( dq1[3] == 3 );
+   VERIFY( dq1[4] == 4 );
+ 
+   // Insert tests
+   std::deque<Tp> dq2;
+   dq2.insert_range(dq2.begin(), Range(a, a+5));
+   VERIFY( dq2[0] == 0 );
+   VERIFY( dq2[1] == 1 );
+   VERIFY( dq2[2] == 2 );
+   VERIFY( dq2[3] == 3 );
+   VERIFY( dq2[4] == 4 );
+ 
+   std::deque<Tp> dq3;
+   dq3.assign_range(Range(a, a+5));
+   VERIFY( dq2 == dq3 );
+ 
+   dq2.insert_range(dq2.end(), Range(a+5, a+10));
+   VERIFY( dq2[5] == 5 );
+   VERIFY( dq2[6] == 6 );
+   VERIFY( dq2[7] == 7 );
+   VERIFY( dq2[8] == 8 );
+   VERIFY( dq2[9] == 9 );
+ 
+   std::deque<Tp> dq4;
+   dq4.prepend_range(Range(a, a+5));
+   dq4.append_range(Range(a+5, a+10));
+   VERIFY( dq2 == dq4 );
+ 
+   return true;
+ }
+ 
+ static_assert( ranges_test<test_forward_range<int>>() );
+ static_assert( ranges_test<test_forward_sized_range<int>>() );
+ static_assert( ranges_test<test_sized_range_sized_sent<int, forward_iterator_wrapper>>() );
+ 
+ static_assert( ranges_test<test_input_range<int>>() );
+ static_assert( ranges_test<test_input_sized_range<int>>() );
+ static_assert( ranges_test<test_sized_range_sized_sent<int, input_iterator_wrapper>>() );
+ 
+ static_assert( ranges_test<test_range<int, input_iterator_wrapper_nocopy>>() );
+ static_assert( ranges_test<test_sized_range<int, input_iterator_wrapper_nocopy>>() );
+ static_assert( ranges_test<test_sized_range_sized_sent<int, input_iterator_wrapper_nocopy>>() );
+ 
+ static_assert( ranges_test<test_forward_range<short>>() );
+ static_assert( ranges_test<test_input_range<short>>() );
+ 
+ // Not lvalue-convertible to int
+ struct C {
+   constexpr C(int v) : val(v) { }
+   constexpr operator int() && { return val; }
+ 
+   friend bool operator==(C c, C b) = default;
+   friend constexpr bool operator==(C c, int b)
+   { return b == c.val; }
+ 
+   int val;
+ };
+ using rvalue_input_range = test_range<C, input_iterator_wrapper_rval>;
+ static_assert( ranges_test<rvalue_input_range>() );
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc	Sun Aug 23 22:32:22 2026
***************
*** 21,26 ****
--- 21,32 ----
  
  #include <deque>
  
+ #if __cplusplus > 202302L
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  #if __cplusplus >= 201103L
  # define NOTHROW(X) noexcept(X)
  #else
*************** namespace std {
*** 31,54 ****
    template <class T, class Allocator> class deque;
  
    template <class T, class Allocator>
!     bool operator== (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     bool operator< (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     bool operator!= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     bool operator> (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     bool operator>= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     bool operator<= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     void swap(deque<T,Allocator>& x, deque<T,Allocator>& y)
        NOTHROW(noexcept(x.swap(y)));
  }
--- 37,66 ----
    template <class T, class Allocator> class deque;
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator== (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator< (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator!= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator> (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator>= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR bool
!     operator<= (const deque<T,Allocator>& x, const deque<T,Allocator>& y);
  
    template <class T, class Allocator>
!     CONSTEXPR void swap(deque<T,Allocator>& x, deque<T,Allocator>& y)
        NOTHROW(noexcept(x.swap(y)));
  }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc	Sun Aug 23 22:32:22 2026
***************
*** 20,25 ****
--- 20,31 ----
  
  #include <queue>
  
+ #if __cplusplus > 202302L
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  #if __cplusplus >= 201103L
  # define NOTHROW noexcept
  #else
***************
*** 29,56 ****
  namespace std {
    template <class T, class Container> class queue;
    template <class T, class Container>
!     bool operator==(const queue<T, Container>& x,
!                     const queue<T, Container>& y);
! 
    template <class T, class Container>
!     bool operator< (const queue<T, Container>& x,
!                     const queue<T, Container>& y);
  
    template <class T, class Container>
!     bool operator!=(const queue<T, Container>& x,
!                     const queue<T, Container>& y);
  
    template <class T, class Container>
!     bool operator> (const queue<T, Container>& x,
!                     const queue<T, Container>& y);
  
    template <class T, class Container>
!     bool operator>=(const queue<T, Container>& x,
!                     const queue<T, Container>& y);
  
    template <class T, class Container>
!     bool operator<=(const queue<T, Container>& x,
!                     const queue<T, Container>& y);
  
    template <class T, class Container, class Compare>
    class priority_queue;
--- 35,62 ----
  namespace std {
    template <class T, class Container> class queue;
    template <class T, class Container>
!     CONSTEXPR bool
!     operator==(const queue<T, Container>& x, const queue<T, Container>& y);
!  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator< (const queue<T, Container>& x, const queue<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator!=(const queue<T, Container>& x, const queue<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator> (const queue<T, Container>& x, const queue<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator>=(const queue<T, Container>& x, const queue<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator<=(const queue<T, Container>& x, const queue<T, Container>& y);
  
    template <class T, class Container, class Compare>
    class priority_queue;
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc	Sun Aug 23 22:32:22 2026
***************
*** 20,49 ****
  
  #include <stack>
  
  namespace std {
    template <class T, class Container> class stack;
  
    template <class T, class Container>
!     bool operator==(const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  
    template <class T, class Container>
!     bool operator< (const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  
    template <class T, class Container>
!     bool operator!=(const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  
    template <class T, class Container>
!     bool operator> (const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  
    template <class T, class Container>
!     bool operator>=(const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  
    template <class T, class Container>
!     bool operator<=(const stack<T, Container>& x,
!                     const stack<T, Container>& y);
  }
--- 20,55 ----
  
  #include <stack>
  
+ #if __cplusplus > 202302L
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  namespace std {
    template <class T, class Container> class stack;
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator==(const stack<T, Container>& x, const stack<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator<(const stack<T, Container>& x, const stack<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator!=(const stack<T, Container>& x, stack<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator>(const stack<T, Container>& x, const stack<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator>=(const stack<T, Container>& x, const stack<T, Container>& y);
  
    template <class T, class Container>
!     CONSTEXPR bool
!     operator<=(const stack<T, Container>& x, const stack<T, Container>& y);
  }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/mdspan/layouts/padded_neg.cc	Sun Aug 23 22:32:22 2026
*************** template<template<size_t> typename Layou
*** 244,251 ****
      (void) m;
      return true;
    }
! static_assert(test_from_samepad_sta<std::layout_left_padded>()); // { dg-error "expansion of" }
! static_assert(test_from_samepad_sta<std::layout_right_padded>()); // { dg-error "expansion of" }
  
  template<template<size_t> typename Layout>
    constexpr bool
--- 244,251 ----
      (void) m;
      return true;
    }
! static_assert(test_from_samepad_sta<std::layout_left_padded>()); // { dg-error "required from" }
! static_assert(test_from_samepad_sta<std::layout_right_padded>()); // { dg-error "required from" }
  
  template<template<size_t> typename Layout>
    constexpr bool
*************** template<template<size_t> typename Layou
*** 295,305 ****
        }
      return true;
    }
! static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 0>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 1>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 2>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 3>()); // { dg-error "expansion of" }
! static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 0>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 1>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 2>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 3>()); // { dg-error "expansion of" }
--- 295,305 ----
        }
      return true;
    }
! static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 0>()); // { dg-error "required from" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 1>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 2>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_left_padded, 3>()); // { dg-error "expansion of" }
! static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 0>()); // { dg-error "required from" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 1>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 2>()); // { dg-error "expansion of" }
  static_assert(test_to_same_not_exhaustive<std::layout_right_padded, 3>()); // { dg-error "expansion of" }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc	Sun Aug 23 22:32:22 2026
*************** static_assert(test_over1(5, sta_sexts));
*** 55,65 ****
  static_assert(test_over1(5, sta_uexts));   // { dg-error "expansion of" }
  
  static_assert(test_over1(std::cw<0>, dyn_empty));   // { dg-error "expansion of" }
! static_assert(test_over1(std::cw<0>, sta_empty));   // { dg-error "expansion of" }
  static_assert(test_over1(std::cw<5>, dyn_sexts));   // { dg-error "expansion of" }
  static_assert(test_over1(std::cw<5>, dyn_uexts));   // { dg-error "expansion of" }
! static_assert(test_over1(std::cw<5>, sta_sexts));   // { dg-error "expansion of" }
! static_assert(test_over1(std::cw<5>, sta_uexts));   // { dg-error "expansion of" }
  
  template<typename Offset, typename Extent, typename Stride, typename Extents>
    constexpr bool
--- 55,65 ----
  static_assert(test_over1(5, sta_uexts));   // { dg-error "expansion of" }
  
  static_assert(test_over1(std::cw<0>, dyn_empty));   // { dg-error "expansion of" }
! static_assert(test_over1(std::cw<0>, sta_empty));   // { dg-error "required from" }
  static_assert(test_over1(std::cw<5>, dyn_sexts));   // { dg-error "expansion of" }
  static_assert(test_over1(std::cw<5>, dyn_uexts));   // { dg-error "expansion of" }
! static_assert(test_over1(std::cw<5>, sta_sexts));   // { dg-error "required from" }
! static_assert(test_over1(std::cw<5>, sta_uexts));   // { dg-error "required from" }
  
  template<typename Offset, typename Extent, typename Stride, typename Extents>
    constexpr bool
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/priority_queue/constexpr.cc	Sun Aug 23 22:32:22 2026
***************
*** 1,43 ****
  // { dg-do compile { target c++26 } }
  #include <queue>
  
! constexpr bool test_constexpr_priority_queue() {
!   std::priority_queue<int> pq;
!   if (!pq.empty()) return false;
!   if (pq.size() != 0) return false;
  
!   pq.push(10);
!   if (pq.empty()) return false;
!   if (pq.size() != 1) return false;
!   if (pq.top() != 10) return false;
  
!   pq.emplace(30);
!   pq.emplace(20);
!   if (pq.size() != 3) return false;
!   if (pq.top() != 30) return false;
  
    pq.pop();
!   if (pq.size() != 2) return false;
!   if (pq.top() != 20) return false;
  
!   std::priority_queue<int> pq2;
!   pq2 = pq;
!   if (pq2.size() != 2) return false;
!   if (pq2.top() != 20) return false;
  
!   std::priority_queue<int> pq3;
!   pq3.push(100);
!   pq.swap(pq3);
!   if (pq.size() != 1 || pq.top() != 100) return false;
!   if (pq3.size() != 2 || pq3.top() != 20) return false;
  
!   int arr[] = {50, 200, 10};
!   pq.push_range(arr);
!   if (pq.size() != 4) return false;
!   if (pq.top() != 200) return false;
  
    return true;
  }
  
! static_assert(test_constexpr_priority_queue(),
!               "constexpr priority_queue test failed!");
--- 1,238 ----
  // { dg-do compile { target c++26 } }
+ 
  #include <queue>
  
! #ifndef __cpp_lib_constexpr_queue
! # error "Feature test macro for __cpp_lib_constexpr_queue is missing in <queue>"
! #elif __cpp_lib_constexpr_queue != 202502L
! # error "Feature test macro for __cpp_lib_constexpr_queue has wrong value in <queue>"
! #endif
  
! #include <algorithm>
! #include <ranges>
! #include <functional>
! #include <vector>
! #include <numeric>
! #include <testsuite_hooks.h>
! #include <testsuite_iterators.h>
! #include <testsuite_allocator.h>
  
! using namespace __gnu_test;
! 
! template<typename Cont, typename Cmp = std::less<int>>
! constexpr bool
! ctor_tests(Cmp cmp = Cmp())
! {
!   using V = typename Cont::value_type;
!   using Alloc = Cont::allocator_type;
! 
!   V rg[] {2, 3, 5, 7};
!   Cont v0{std::from_range, rg};
!   Cont v1 = v0;
!   Cont v2 = v0;
!   Alloc alloc;
!   auto top_range = * std::ranges::max_element(v0, cmp);
! 
!   auto eq = [&] (std::priority_queue<V, Cont, Cmp>& l, std::span<V> r) {
!     if (l.size() != r.size())
!       return false;
! 
!     std::vector<V> s(r.begin(), r.end());
!     std::ranges::sort(s, cmp);
!     for (auto const& v : s | std::views::reverse) {
!       if (v != l.top())
! 	return false;
!       l.pop();
!     }
!     return true;
!   };
! 
!   std::priority_queue<V, Cont, Cmp> pq1;
!   VERIFY( pq1.size() == 0 && pq1.empty() );
! 
!   std::priority_queue<V, Cont, Cmp> pq2(cmp);
!   VERIFY( pq2.size() == 0 && pq2.empty() );
! 
!   std::priority_queue<V, Cont, Cmp> pq3(cmp, v0);
!   VERIFY( pq3.size() == 4 && pq3.top() == top_range );
  
+   std::priority_queue<V, Cont, Cmp> pq4(cmp, std::move(v0));
+   VERIFY( pq4.size() == 4 && pq4.top() == top_range );
+ 
+   std::priority_queue<V, Cont, Cmp> pq5(pq3);
+   VERIFY( pq5.top() == pq3.top() );
+   VERIFY( pq5.size() == pq3.size() );
+ 
+   std::priority_queue<V, Cont, Cmp> pq6(std::move(pq3));
+   VERIFY( pq6.top() == pq5.top() );
+   VERIFY( pq6.size() == pq5.size() );
+ 
+   std::priority_queue<V, Cont, Cmp>
+     pq10(std::begin(rg), std::end(rg),  cmp);
+   VERIFY( pq4.size() == 4 && pq4.top() == top_range );
+ 
+   std::priority_queue<V, Cont, Cmp>
+     pq11(std::begin(rg), std::end(rg), cmp, v0);
+   VERIFY( pq4.size() == 4 && pq4.top() == top_range );
+ 
+   std::priority_queue<V, Cont, Cmp>
+     pq12(std::begin(rg), std::end(rg), cmp, std::move(v0));
+   VERIFY( pq4.size() == 4 && pq4.top() == top_range );
+ 
+   std::priority_queue<V, Cont, Cmp> pq14(alloc);
+   VERIFY( pq14.empty() );
+ 
+   std::priority_queue<V, Cont, Cmp> pq15(cmp, alloc);
+   VERIFY( pq15.empty() );
+ 
+   std::priority_queue<V, Cont, Cmp> pq16(cmp, v2, alloc);
+   VERIFY( eq(pq16, {rg, 4}) );
+ 
+   std::priority_queue<V, Cont, Cmp> pq17(cmp, std::move(v2), alloc);
+   VERIFY( eq(pq17, {rg, 4}) );
+ 
+   std::priority_queue<V, Cont, Cmp> pq18(pq12, alloc);
+   VERIFY( pq18.size() == pq12.size());
+ 
+   std::priority_queue<V, Cont, Cmp> pq19(std::move(pq12), alloc);
+   VERIFY( pq19.size() == pq18.size() );
+   return true;
+ }
+ 
+ static_assert( ctor_tests<std::vector<int>>() );
+ static_assert( ctor_tests<std::vector<int>, std::greater<int>>() );
+ static_assert( ctor_tests<std::vector<int, SimpleAllocator<int>>>() );
+ static_assert( ctor_tests<std::deque<int>>() );
+ static_assert( ctor_tests<std::deque<int>, std::greater<int>>() );
+ static_assert( ctor_tests<std::deque<int, SimpleAllocator<int>>>() );
+ 
+ constexpr bool
+ push_and_pop_test()
+ {
+   std::priority_queue<int> a;
+   a.push(2);
+   a.push(4);
+   VERIFY( a.top() == 4 );
+   a.pop();
+   VERIFY( a.top() == 2 );
+   a.pop();
+   VERIFY( a.empty() );
+   return true;
+ }
+ static_assert( push_and_pop_test() );
+ 
+ constexpr int swap_test()
+ {
+   std::priority_queue<int> a,b;
+   a.push(2);
+   b.push(4);
+   std::swap(a, b);
+   VERIFY( a.top() == 4 );
+   VERIFY( b.top() == 2 );
+   return true;
+ }
+ static_assert (swap_test());
+ 
+ constexpr bool
+ emplace_test()
+ {
+   struct S
+   {
+     int foo;
+     constexpr S(int i, int j) : foo{i + j} {}
+     std::strong_ordering operator<=>(const S&) const = default;
+   };
+ 
+   std::priority_queue<S> pq;
+   pq.emplace(0, 0);
+   pq.emplace(1, 0);
+   VERIFY( pq.size() == 2 );
+   VERIFY( pq.top().foo == 1 );
    pq.pop();
!   VERIFY ( pq.top().foo == 0 );
!   return true;
! }
! static_assert( emplace_test() );
  
! template<typename Range, typename Cont, typename Cmp>
! constexpr void
! do_range_tests(Cmp cmp = Cmp())
! {
!   using V = typename Cont::value_type;
!   using Alloc = typename Cont::allocator_type;
!   using T = std::ranges::range_value_t<Range>;
  
!   Alloc alloc;
!   T rg[] {2, 3, 5, 7, 11, 13};
  
!   auto top_range = std::ranges::max_element(rg, cmp);
! 
!   auto eq = [&](std::priority_queue<V, Cont, Cmp>& l, std::span<T> r) {
!     if (l.size() != r.size())
!       return false;
! 
!     std::vector<T> s(r.begin(), r.end());
!     std::ranges::sort(s, cmp);
!     for (auto const& v : s | std::views::reverse) {
!       if (v != l.top())
! 	return false;
!       l.pop();
!     }
!     return true;
!   };
! 
!   std::priority_queue<V, Cont, Cmp>
!     pq1(std::from_range, Range(rg, rg+4), cmp);
!   VERIFY( eq(pq1, {rg, 4}) );
! 
!   std::priority_queue<V, Cont, Cmp>
!     pq2(std::from_range, Range(rg, rg+5), alloc);
!   VERIFY( eq(pq2, {rg, 5}) );
! 
!   std::priority_queue<V, Cont, Cmp>
!     pq3(std::from_range, Range(rg, rg+6), cmp, alloc);
!   VERIFY( eq(pq3, {rg, 6}) );
! 
!   std::priority_queue<V, Cont, Cmp> pq4;
!   pq4.push_range(Range(rg, rg+6));
!   VERIFY( eq(pq4, {rg, 6}) );
! }
  
+ template<typename Range, typename Cont>
+ constexpr void
+ do_ranges_tests_b()
+ {
+   do_range_tests<Range, Cont, std::less<>>();
+   do_range_tests<Range, Cont, std::greater<>>();
+ }
+ 
+ template<typename Cont>
+ constexpr bool
+ ranges_tests() {
+   using T = typename Cont::value_type;
+   do_ranges_tests_b<
+     test_forward_range<T>, Cont>();
+   do_ranges_tests_b<
+     test_forward_sized_range<T>, Cont>();
+   do_ranges_tests_b<
+     test_sized_range_sized_sent<T, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_b<
+     test_input_range<T>, Cont>();
+   do_ranges_tests_b<
+     test_input_sized_range<T>, Cont>();
+   do_ranges_tests_b<
+     test_sized_range_sized_sent<T, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_b<
+     test_range<T, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_b<
+     test_sized_range<T, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_b<
+     test_sized_range_sized_sent<T, input_iterator_wrapper_nocopy>, Cont>();
    return true;
  }
  
! static_assert( ranges_tests<std::vector<int>>() );
! static_assert( ranges_tests<std::vector<int, SimpleAllocator<int>>>() );
! static_assert( ranges_tests<std::deque<int, SimpleAllocator<int>>>() );
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/queue/constexpr.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/queue/constexpr.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/queue/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/queue/constexpr.cc	Sun Aug 23 22:32:22 2026
***************
*** 0 ****
--- 1,242 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <queue>
+ 
+ #ifndef __cpp_lib_constexpr_queue
+ # error "Feature test macro for __cpp_lib_constexpr_queue is missing in <queue>"
+ #elif __cpp_lib_constexpr_queue != 202502L
+ # error "Feature test macro for __cpp_lib_constexpr_queue has wrong value in <queue>"
+ #endif
+ 
+ #include <ranges>
+ #include <functional>
+ #include <vector>
+ #include <numeric>
+ #include <testsuite_hooks.h>
+ #include <testsuite_iterators.h>
+ #include <testsuite_allocator.h>
+ 
+ using namespace __gnu_test;
+ 
+ template<typename Cont>
+ constexpr bool
+ ctor_tests()
+ {
+   using Tp = typename Cont::value_type;
+   using Alloc = typename Cont::allocator_type;
+ 
+   auto eq = [] (std::queue<Tp, Cont> l, std::span<Tp> r) {
+     if (l.size() != r.size())
+       return false;
+ 
+     std::vector<Tp> s(r.begin(), r.end());
+     for (auto v : s) {
+       if (v != l.front())
+ 	return false;
+       l.pop();
+     }
+     return true;
+   };
+ 
+   Cont c0;
+   Alloc alloc0;
+ 
+   std::queue<Tp, Cont> q1(c0);
+   VERIFY( q1.size() == 0 && q1.empty() );
+   q1.push(1);
+   q1.push(2);
+   VERIFY( q1.size() == 2) ;
+ 
+   Cont c1{1, 2};
+   std::queue<Tp, Cont> q2(c1);
+   VERIFY ( q2 == q1 );
+   std::queue<Tp, Cont> q3(std::move(c1));
+   VERIFY ( q3 == q1 );
+ 
+   std::queue<Tp, Cont> q4(q1);
+   std::queue<Tp, Cont> q5(std::move(q1));
+   VERIFY ( q4 == q5 );
+ 
+   Tp rg[4] = {2, 3, 5, 7};
+   std::queue<Tp, Cont> q6(std::begin(rg), std::end(rg));
+   VERIFY ( eq(q6, rg) );
+ 
+   VERIFY( q6.size() == std::size(rg));
+   VERIFY( q6.front() == 2 );
+   q6.pop();
+   VERIFY( q6.front() == 3 );
+   q6.pop();
+   VERIFY( q6.front() == 5 );
+   q6.pop();
+   VERIFY( q6.front() == 7 );
+   q6.pop();
+ 
+   std::queue<Tp, Cont> q7(alloc0);
+   q7.push(1);
+   q7.push(2);
+   VERIFY( q7.size() == 2 );
+ 
+   Cont c2{1, 2};
+   std::queue<Tp, Cont> q8(c2, alloc0);
+   VERIFY( q8 == q7 );
+   std::queue<Tp, Cont> q9(std::move(c2), alloc0);
+   VERIFY( q9 == q7 );
+   VERIFY( c2.empty() );
+ 
+   std::queue<Tp, Cont> q10(q7, alloc0);
+   VERIFY( q10 == q7 );
+   VERIFY( q10.size() == q7.size() );
+   VERIFY( q10.front() == q7.front() );
+   VERIFY( q10.back() == q7.back() );
+ 
+   std::queue<Tp, Cont> q11(std::move(q7), alloc0);
+   VERIFY( q11 == q10 );
+   VERIFY( q11.size() == q10.size() );
+   VERIFY( q7.empty() );
+ 
+   std::queue<Tp, Cont> q12(std::begin(rg), std::end(rg), alloc0);
+   VERIFY ( eq(q12, rg) );
+   VERIFY( q12.size() == std::size(rg));
+   VERIFY( q12.front() == 2 );
+   q12.pop();
+   VERIFY( q12.front() == 3 );
+   q12.pop();
+   VERIFY( q12.front() == 5 );
+   q12.pop();
+   VERIFY( q12.front() == 7 );
+   q12.pop();
+ 
+   std::queue<Tp, Cont> q13(std::from_range, rg);
+   VERIFY( eq(q13, rg) );
+   std::queue<Tp, Cont> q14(std::from_range, rg, alloc0);
+   VERIFY( eq(q14, rg) );
+ 
+   return true;
+ }
+ // TODO check list when avaialble
+ static_assert( ctor_tests<std::deque<int>>() );
+ static_assert( ctor_tests<std::deque<int, SimpleAllocator<int>>>() );
+ 
+ template<typename Range, typename Cont>
+ constexpr void
+ do_ranges_tests_a()
+ {
+   using Tp = typename Cont::value_type;
+   typename Cont::allocator_type alloc;
+   Tp a[] {2, 3, 5, 7};
+ 
+   auto eq = [&] (auto l, auto r) {
+     if (l.size() != r.size())
+       return false;
+ 
+     while (!l.empty()) {
+       if (l.front() != r.front())
+ 	return false;
+       l.pop();
+       r.pop();
+     }
+     return true;
+   };
+ 
+   std::queue<Tp, Cont> q1(std::from_range, Range(a, a+4));
+   std::queue<Tp> q2;
+   q2.push_range(Range(a, a+4));
+   VERIFY( eq(q1, q2) );
+ 
+   std::queue<Tp, Cont> q3(std::from_range, Range(a, a+4), alloc);
+   std::queue<Tp, Cont> q4(std::from_range, Range(a, a+4));
+   VERIFY( eq(q3, q4) );
+ }
+ 
+ template<typename Cont>
+ constexpr bool
+ ranges_tests()
+ {
+   using Tp = typename Cont::value_type;
+ 
+   do_ranges_tests_a<test_forward_range<Tp>,  Cont>();
+   do_ranges_tests_a<test_forward_sized_range<Tp>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_a<test_input_range<Tp>, Cont>();
+   do_ranges_tests_a<test_input_sized_range<Tp>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_a<
+     test_range<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   return true;
+ }
+ // TODO check list when avaialble
+ static_assert( ranges_tests<std::deque<int>>() );
+ static_assert( ranges_tests<std::deque<int, SimpleAllocator<int>>>() );
+ 
+ constexpr bool
+ push_and_pop_test()
+ {
+   std::queue<int> a;
+   a.push(2);
+   a.push(4);
+   VERIFY( a.front() == 2 && a.back() == 4);
+   a.pop();
+   VERIFY( a.front() == 4 && a.back() == 4);
+   a.pop();
+   VERIFY( a.empty() );
+   return true;
+ }
+ static_assert( push_and_pop_test() );
+ 
+ constexpr bool
+ swap_test()
+ {
+   std::queue<int> a,b;
+   a.push(1);
+   b.push(2);
+   std::swap(a, b);
+   VERIFY( a.front() == 2 );
+   VERIFY( b.front() == 1 );
+   return true;
+ }
+ static_assert( swap_test() );
+ 
+ constexpr bool
+ emplace_test()
+ {
+   struct S
+   {
+     int foo;
+     constexpr S(int i, int j) : foo{i + j} {}
+   };
+ 
+   std::queue<S> a;
+   const S& s = a.emplace(196883, 1);
+   VERIFY( a.size() == 1 );
+   VERIFY( a.front().foo == 196884 );
+   return true;
+ }
+ static_assert( emplace_test() );
+ 
+ constexpr bool
+ operator_test()
+ {
+   std::queue<int> a, b;
+   a.push(1);
+   b.push(1);
+   VERIFY( a == b );
+   VERIFY( a <= b );
+   VERIFY( a >= b );
+   b.pop();
+   b.push(2);
+   VERIFY( a < b );
+   VERIFY( !(a > b) );
+   VERIFY( a <= b );
+   VERIFY( !(a >= b) );
+   VERIFY( a != b );
+   return true;
+ }
+ static_assert( operator_test() );
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/stack/constexpr.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/stack/constexpr.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/stack/constexpr.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/stack/constexpr.cc	Sun Aug 23 22:32:22 2026
***************
*** 0 ****
--- 1,241 ----
+ // { dg-do compile { target c++26 } }
+ 
+ #include <stack>
+ 
+ #ifndef __cpp_lib_constexpr_stack
+ # error "Feature test macro for __cpp_lib_constexpr_stack is missing in <stack>"
+ #elif __cpp_lib_constexpr_stack != 202502L
+ # error "Feature test macro for __cpp_lib_constexpr_stack has wrong value in <stack>"
+ #endif
+ 
+ #include <ranges>
+ #include <functional>
+ #include <vector>
+ #include <numeric>
+ #include <testsuite_hooks.h>
+ #include <testsuite_iterators.h>
+ #include <testsuite_allocator.h>
+ 
+ using namespace __gnu_test;
+ 
+ template<typename Cont>
+ constexpr bool
+ ctor_tests()
+ {
+   using Tp = typename Cont::value_type;
+   using Alloc = typename Cont::allocator_type;
+ 
+   auto es = [] (std::stack<Tp, Cont> l, std::span<Tp> r) {
+     if (l.size() != r.size())
+       return false;
+ 
+     std::vector<Tp> s(r.begin(), r.end());
+     for (size_t i = s.size(); i > 0; --i) {
+       if (s[i-1] != l.top())
+ 	return false;
+       l.pop();
+     }
+     return true;
+   };
+ 
+   Cont c0;
+   Alloc alloc0;
+ 
+   std::stack<Tp, Cont> s1(c0);
+   VERIFY( s1.size() == 0 && s1.empty() );
+   s1.push(1);
+   s1.push(2);
+   VERIFY( s1.size() == 2 );
+ 
+   Cont c1{1, 2};
+   std::stack<Tp, Cont> s2(c1);
+   VERIFY ( s2 == s1 );
+   std::stack<Tp, Cont> s3(std::move(c1));
+   VERIFY ( s3 == s1 );
+ 
+   std::stack<Tp, Cont> s4(s1);
+   std::stack<Tp, Cont> s5(std::move(s1));
+   VERIFY ( s4 == s5 );
+ 
+   Tp rg[4] = {2, 3, 5, 7};
+   std::stack<Tp, Cont> s6(std::begin(rg), std::end(rg));
+   VERIFY ( es(s6, rg) );
+ 
+   VERIFY( s6.size() == std::size(rg));
+   VERIFY( s6.top() == 7 );
+   s6.pop();
+   VERIFY( s6.top() == 5 );
+   s6.pop();
+   VERIFY( s6.top() == 3 );
+   s6.pop();
+   VERIFY( s6.top() == 2 );
+   s6.pop();
+ 
+   std::stack<Tp, Cont> s7(alloc0);
+   s7.push(1);
+   s7.push(2);
+   VERIFY( s7.size() == 2 );
+ 
+   Cont c2{1, 2};
+   std::stack<Tp, Cont> s8(c2, alloc0);
+   VERIFY( s8 == s7 );
+   std::stack<Tp, Cont> s9(std::move(c2), alloc0);
+   VERIFY( s9 == s7 );
+   VERIFY( c2.empty() );
+ 
+   std::stack<Tp, Cont> s10(s7, alloc0);
+   VERIFY( s10 == s7 );
+   VERIFY( s10.size() == s7.size() );
+   VERIFY( s10.top() == s7.top() );
+ 
+   std::stack<Tp, Cont> s11(std::move(s7), alloc0);
+   VERIFY( s11 == s10 );
+   VERIFY( s11.size() == s10.size() );
+   VERIFY( s7.empty() );
+ 
+   std::stack<Tp, Cont> s12(std::begin(rg), std::end(rg), alloc0);
+   VERIFY ( es(s12, rg) );
+   VERIFY( s12.size() == std::size(rg));
+   VERIFY( s12.top() == 7 );
+   s12.pop();
+   VERIFY( s12.top() == 5 );
+   s12.pop();
+   VERIFY( s12.top() == 3 );
+   s12.pop();
+   VERIFY( s12.top() == 2 );
+   s12.pop();
+ 
+   std::stack<Tp, Cont> s13(std::from_range, rg);
+   VERIFY( es(s13, rg) );
+   std::stack<Tp, Cont> s14(std::from_range, rg, alloc0);
+   VERIFY( es(s14, rg) );
+ 
+   return true;
+ }
+ static_assert( ctor_tests<std::vector<int>>() );
+ static_assert( ctor_tests<std::vector<int, SimpleAllocator<int>>>() );
+ static_assert( ctor_tests<std::deque<int>>() );
+ static_assert( ctor_tests<std::deque<int, SimpleAllocator<int>>>() );
+ 
+ template<typename Range, typename Cont>
+ constexpr void
+ do_ranges_tests_a()
+ {
+   using Tp = typename Cont::value_type;
+   typename Cont::allocator_type alloc;
+   Tp a[] {2, 3, 5, 7};
+ 
+   auto es = [&] (auto l, auto r) {
+     if (l.size() != r.size())
+       return false;
+ 
+     while (!l.empty()) {
+       if (l.top() != r.top())
+ 	return false;
+       l.pop();
+       r.pop();
+     }
+     return true;
+   };
+ 
+   std::stack<Tp, Cont> s1(std::from_range, Range(a, a+4));
+   std::stack<Tp> s2;
+   s2.push_range(Range(a, a+4));
+   VERIFY( es(s1, s2) );
+ 
+   std::stack<Tp, Cont> s3(std::from_range, Range(a, a+4), alloc);
+   std::stack<Tp, Cont> s4(std::from_range, Range(a, a+4));
+   VERIFY( es(s3, s4) );
+ }
+ 
+ template<typename Cont>
+ constexpr bool
+ ranges_tests()
+ {
+   using Tp = typename Cont::value_type;
+ 
+   do_ranges_tests_a<test_forward_range<Tp>,  Cont>();
+   do_ranges_tests_a<test_forward_sized_range<Tp>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_a<test_input_range<Tp>, Cont>();
+   do_ranges_tests_a<test_input_sized_range<Tp>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, forward_iterator_wrapper>, Cont>();
+ 
+   do_ranges_tests_a<
+     test_range<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   do_ranges_tests_a<
+     test_sized_range_sized_sent<Tp, input_iterator_wrapper_nocopy>, Cont>();
+   return true;
+ }
+ static_assert( ranges_tests<std::vector<int>>() );
+ static_assert( ranges_tests<std::vector<int, SimpleAllocator<int>>>() );
+ 
+ constexpr bool
+ push_and_pop_test()
+ {
+   std::stack<int> a;
+   a.push(2);
+   a.push(4);
+   VERIFY( a.top() == 4 );
+   a.pop();
+   VERIFY( a.top() == 2 );
+   a.pop();
+   VERIFY( a.empty() );
+   return true;
+ }
+ static_assert( push_and_pop_test() );
+ 
+ constexpr bool
+ swap_test()
+ {
+   std::stack<int> a,b;
+   a.push(1);
+   b.push(2);
+   std::swap(a, b);
+   VERIFY( a.top() == 2 );
+   VERIFY( b.top() == 1 );
+   return true;
+ }
+ static_assert( swap_test() );
+ 
+ constexpr bool
+ emplace_test()
+ {
+   struct S
+   {
+     int foo;
+     constexpr S(int i, int j) : foo{i + j} {}
+   };
+ 
+   std::stack<S> a;
+   const S& s = a.emplace(196883, 1);
+   VERIFY( a.size() == 1 );
+   VERIFY( a.top().foo == 196884 );
+   return true;
+ }
+ static_assert( emplace_test() );
+ 
+ constexpr bool
+ operator_test()
+ {
+   std::stack<int> a, b;
+   a.push(1);
+   b.push(1);
+   VERIFY( a == b );
+   VERIFY( a <= b );
+   VERIFY( a >= b );
+   b.pop();
+   b.push(2);
+   VERIFY( a < b );
+   VERIFY( !(a > b) );
+   VERIFY( a <= b );
+   VERIFY( !(a >= b) );
+   VERIFY( a != b );
+   return true;
+ }
+ static_assert( operator_test() );
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc gcc-17-20260823/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/23_containers/vector/bool/format.cc	Sun Aug 23 22:32:22 2026
***************
*** 5,16 ****
  #include <vector>
  #include <testsuite_hooks.h>
  
  static_assert(!std::formattable<std::vector<bool>::reference, int>);
  static_assert(!std::formattable<std::vector<bool>::reference, char32_t>);
  static_assert(std::enable_nonlocking_formatter_optimization<std::vector<bool>::reference>);
  
  template<typename... Args>
! bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
--- 5,22 ----
  #include <vector>
  #include <testsuite_hooks.h>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  static_assert(!std::formattable<std::vector<bool>::reference, int>);
  static_assert(!std::formattable<std::vector<bool>::reference, char32_t>);
  static_assert(std::enable_nonlocking_formatter_optimization<std::vector<bool>::reference>);
  
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const char* str, Ar
*** 24,30 ****
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
  #define WIDEN(S) WIDEN_(CharT, S)
  
! void
  test_format_string()
  {
    std::vector<bool> v(1, true);
--- 30,36 ----
  #define WIDEN_(C, S) ::std::__format::_Widen<C>(S, L##S)
  #define WIDEN(S) WIDEN_(CharT, S)
  
! CONSTEXPR void
  test_format_string()
  {
    std::vector<bool> v(1, true);
*************** test_format_string()
*** 36,42 ****
  }
  
  template<typename CharT>
! void
  test_output()
  {
    std::basic_string<CharT> res;
--- 42,48 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_output()
  {
    std::basic_string<CharT> res;
*************** test_output()
*** 65,73 ****
    VERIFY( res == WIDEN("[1, 0]") );
  }
  
! int main()
  {
    test_format_string();
    test_output<char>();
    test_output<wchar_t>();
  }
--- 71,91 ----
    VERIFY( res == WIDEN("[1, 0]") );
  }
  
! CONSTEXPR bool
! test_all()
  {
    test_format_string();
    test_output<char>();
    test_output<wchar_t>();
+  
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+ static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/27_io/print/1.cc gcc-17-20260823/libstdc++-v3/testsuite/27_io/print/1.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/27_io/print/1.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/27_io/print/1.cc	Sun Aug 23 22:32:22 2026
*************** test_print_raw()
*** 68,73 ****
--- 68,89 ----
  }
  
  void
+ test_print_setvbuf()
+ {
+   __gnu_test::scoped_file f;
+   FILE* strm = std::fopen(f.path.string().c_str(), "w");
+   VERIFY( strm );
+   VERIFY( std::setvbuf(strm, nullptr, _IOFBF, 4096) == 0 );
+   std::string str{"Hello, World!"};
+   std::print(strm, "{}", str);
+   std::fclose(strm);
+ 
+   std::ifstream in(f.path);
+   std::string txt(std::istreambuf_iterator<char>(in), {});
+   VERIFY( txt == "Hello, World!" );
+ }
+ 
+ void
  test_vprint_nonunicode()
  {
    std::vprint_nonunicode_buffered("{0} in \xc0 {0} out\n",
*************** int main()
*** 142,147 ****
--- 158,164 ----
    test_print_file();
    test_println_file();
    test_print_raw();
+   test_print_setvbuf();
    test_vprint_nonunicode();
  #ifdef __cpp_exceptions
    test_errors();
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/performance/25_algorithms/for_each.cc gcc-17-20260823/libstdc++-v3/testsuite/performance/25_algorithms/for_each.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/performance/25_algorithms/for_each.cc	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/libstdc++-v3/testsuite/performance/25_algorithms/for_each.cc	Sun Aug 23 22:32:22 2026
***************
*** 0 ****
--- 1,32 ----
+ #include <testsuite_performance.h>
+ 
+ #include <algorithm>
+ #include <deque>
+ #include <list>
+ #include <vector>
+ 
+ const std::size_t size = 8192;
+ 
+ template <typename Container>
+ void bench_seq(const char* label, __gnu_test::time_counter& time,
+                __gnu_test::resource_counter& resource) {
+   using T = typename Container::value_type;
+   Container c(size, 1);
+   start_counters(time, resource);
+   for (int i = 0; i < 20000; ++i)
+     std::for_each(c.begin(), c.end(),
+                   [](T& x) { x = std::min<T>(100, std::max<T>(x, 10)); });
+   stop_counters(time, resource);
+   report_performance(__FILE__, label, time, resource);
+   clear_counters(time, resource);
+ }
+ 
+ int main() {
+   using namespace __gnu_test;
+   time_counter time;
+   resource_counter resource;
+ 
+   bench_seq<std::vector<int>>("std::for_each vector<int>", time, resource);
+   bench_seq<std::deque<int>>("std::for_each deque<int>", time, resource);
+   bench_seq<std::list<int>>("std::for_each list<int>", time, resource);
+ }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/std/format/formatter/ext_float.cc gcc-17-20260823/libstdc++-v3/testsuite/std/format/formatter/ext_float.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/std/format/formatter/ext_float.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/std/format/formatter/ext_float.cc	Sun Aug 23 22:32:22 2026
***************
*** 4,13 ****
  #include <testsuite_hooks.h>
  
  template<typename T>
! bool format_float()
  {
!     auto s = std::format("{:#} != {:<+7.3f}", (T)-0.0, (T)0.5);
!     return s == "-0. != +0.500 ";
  }
  
  #if __cplusplus > 202002L
--- 4,17 ----
  #include <testsuite_hooks.h>
  
  template<typename T>
! void
! verify_output()
  {
!   auto s = std::format("{:#} != {:<+7.3f}", T(-0.0), T(0.5));
!   VERIFY( s == "-0. != +0.500 ");
! 
!   s = std::format("{}", T(1)/T(10));
!   VERIFY( s == "0.1");
  }
  
  #if __cplusplus > 202002L
*************** test_float16()
*** 23,29 ****
  {
  #if __FLT16_DIG__
    if constexpr (formattable<_Float16>)
!     VERIFY( format_float<_Float16>() );
    else
      std::puts("Cannot format _Float16 on this target");
  #endif
--- 27,33 ----
  {
  #if __FLT16_DIG__
    if constexpr (formattable<_Float16>)
!     verify_output<_Float16>();
    else
      std::puts("Cannot format _Float16 on this target");
  #endif
*************** test_float32()
*** 34,40 ****
  {
  #if __FLT32_DIG__
    if constexpr (formattable<_Float32>)
!     VERIFY( format_float<_Float32>() );
    else
      std::puts("Cannot format _Float32 on this target");
  #endif
--- 38,44 ----
  {
  #if __FLT32_DIG__
    if constexpr (formattable<_Float32>)
!     verify_output<_Float32>();
    else
      std::puts("Cannot format _Float32 on this target");
  #endif
*************** test_float64()
*** 45,51 ****
  {
  #if __FLT64_DIG__
    if constexpr (formattable<_Float64>)
!     VERIFY( format_float<_Float64>() );
    else
      std::puts("Cannot format _Float64 on this target");
  #endif
--- 49,55 ----
  {
  #if __FLT64_DIG__
    if constexpr (formattable<_Float64>)
!     verify_output<_Float64>();
    else
      std::puts("Cannot format _Float64 on this target");
  #endif
*************** test_float128()
*** 56,68 ****
  {
  #ifdef __SIZEOF_FLOAT128__
    if constexpr (formattable<__float128>)
!     VERIFY( format_float<__float128>() );
    else
      std::puts("Cannot format __float128 on this target");
  #endif
  #if __FLT128_DIG__
    if constexpr (formattable<_Float128>)
!     VERIFY( format_float<_Float128>() );
    else
      std::puts("Cannot format _Float128 on this target");
  #endif
--- 60,72 ----
  {
  #ifdef __SIZEOF_FLOAT128__
    if constexpr (formattable<__float128>)
!     verify_output<__float128>();
    else
      std::puts("Cannot format __float128 on this target");
  #endif
  #if __FLT128_DIG__
    if constexpr (formattable<_Float128>)
!     verify_output<_Float128>();
    else
      std::puts("Cannot format _Float128 on this target");
  #endif
*************** test_bfloat16()
*** 75,81 ****
    using bfloat16_t = decltype(0.0bf16);
  
    if constexpr (formattable<bfloat16_t>)
!     VERIFY( format_float<bfloat16_t>() );
    else
      std::puts("Cannot format bfloat16_t on this target");
  #endif
--- 79,85 ----
    using bfloat16_t = decltype(0.0bf16);
  
    if constexpr (formattable<bfloat16_t>)
!     verify_output<bfloat16_t>();
    else
      std::puts("Cannot format bfloat16_t on this target");
  #endif
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc gcc-17-20260823/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/std/format/ranges/adaptors.cc	Sun Aug 23 22:32:22 2026
***************
*** 6,13 ****
  #include <stack>
  #include <testsuite_hooks.h>
  
  template<typename... Args>
! bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
--- 6,19 ----
  #include <stack>
  #include <testsuite_hooks.h>
  
+ #ifdef __glibcxx_constexpr_format
+ # define CONSTEXPR constexpr
+ #else
+ # define CONSTEXPR
+ #endif
+ 
  template<typename... Args>
! CONSTEXPR bool
  is_format_string_for(const char* str, Args&&... args)
  {
    try {
*************** is_format_string_for(const char* str, Ar
*** 22,28 ****
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<template<typename Tp> class Adaptor>
! void
  test_format_string()
  {
    Adaptor<int> q;
--- 28,34 ----
  #define WIDEN(S) WIDEN_(CharT, S)
  
  template<template<typename Tp> class Adaptor>
! CONSTEXPR void
  test_format_string()
  {
    Adaptor<int> q;
*************** struct NoFormat
*** 41,47 ****
  struct MutFormat
  {
    MutFormat() = default;
!   MutFormat(int p) : x(p) {}
  
    int x;
    friend auto operator<=>(MutFormat, MutFormat) = default;
--- 47,53 ----
  struct MutFormat
  {
    MutFormat() = default;
!   CONSTEXPR MutFormat(int p) : x(p) {}
  
    int x;
    friend auto operator<=>(MutFormat, MutFormat) = default;
*************** struct std::formatter<MutFormat, CharT>
*** 52,58 ****
    : std::formatter<int, CharT>
  {
     template<typename Out>
!    Out format(MutFormat& mf, basic_format_context<Out, CharT>& ctx) const
     { return std::formatter<int, CharT>::format(mf.x, ctx); }
  };
  
--- 58,65 ----
    : std::formatter<int, CharT>
  {
     template<typename Out>
!    CONSTEXPR Out
!    format(MutFormat& mf, basic_format_context<Out, CharT>& ctx) const
     { return std::formatter<int, CharT>::format(mf.x, ctx); }
  };
  
*************** constexpr auto std::format_kind<NotForma
*** 68,74 ****
  
  template<typename CharT,
  	 template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
! void
  test_output()
  {
    const std::vector<int> v{3, 2, 1};
--- 75,81 ----
  
  template<typename CharT,
  	 template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
! CONSTEXPR void
  test_output()
  {
    const std::vector<int> v{3, 2, 1};
*************** test_output()
*** 133,139 ****
  }
  
  template<template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
! void
  test_adaptor()
  {
    test_format_string<Adaptor>();
--- 140,146 ----
  }
  
  template<template<typename Tp, typename Cont = std::vector<Tp>> class Adaptor>
! CONSTEXPR void
  test_adaptor()
  {
    test_format_string<Adaptor>();
*************** test_adaptor()
*** 145,151 ****
  }
  
  template<typename CharT>
! void
  test_compare()
  {
    const std::vector<int> v{3, 2, 1};
--- 152,158 ----
  }
  
  template<typename CharT>
! CONSTEXPR void
  test_compare()
  {
    const std::vector<int> v{3, 2, 1};
*************** test_compare()
*** 157,165 ****
    VERIFY( res == WIDEN("[1, 2, 3]") );
  }
  
! int main()
  {
    test_adaptor<std::queue>();
    test_adaptor<std::priority_queue>();
    test_compare<char>();
  }
--- 164,184 ----
    VERIFY( res == WIDEN("[1, 2, 3]") );
  }
  
! CONSTEXPR bool
! test_all()
  {
+   test_adaptor<std::stack>();
    test_adaptor<std::queue>();
    test_adaptor<std::priority_queue>();
    test_compare<char>();
+   return true;
+ }
+ 
+ #ifdef __glibcxx_constexpr_format
+   static_assert(test_all());
+ #endif
+ 
+ int main()
+ {
+   test_all();
  }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/std/simd/traits_impl.cc gcc-17-20260823/libstdc++-v3/testsuite/std/simd/traits_impl.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/std/simd/traits_impl.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/std/simd/traits_impl.cc	Sun Aug 23 22:32:22 2026
*************** void test()
*** 49,55 ****
        static_assert(__vectorizable<__integer_from<N>>);
      }
    template for (constexpr int N : {
! #ifdef __STDCPP_BFLOAT16_T__
  				  2,
  #endif
  				  4, 8})
--- 49,55 ----
        static_assert(__vectorizable<__integer_from<N>>);
      }
    template for (constexpr int N : {
! #ifdef __STDCPP_FLOAT16_T__
  				  2,
  #endif
  				  4, 8})
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc gcc-17-20260823/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc
*** gcc-17-20260816/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info-2.cc	Sun Aug 23 22:32:22 2026
*************** Leap	2120	Dec	30	23:59:59	-	S
*** 103,108 ****
--- 103,111 ----
  
  int main()
  {
+   // chrono::reload_tzdb() requires ./tzdata.zi to be present.
+   std::ofstream("tzdata.zi") << "# version empty\n";
+ 
    test_known_leaps();
    test_future_leaps();
  }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 50,56 ****
    {
  #define PB_DS_BASE_C_DEC \
      std::tr1::__unordered_map<Key, Data, Hash_Fn, Eq_Fn, \
!     typename _Alloc::template rebind<std::pair<const Key, Data> >::other, Cache_Hash>
  
      template<typename Key,
  	     typename Data,
--- 50,56 ----
    {
  #define PB_DS_BASE_C_DEC \
      std::tr1::__unordered_map<Key, Data, Hash_Fn, Eq_Fn, \
!     typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<std::pair<const Key, Data> >::other, Cache_Hash>
  
      template<typename Key,
  	     typename Data,
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 70,78 ****
        typedef typename base_type::iterator 	iterator;
        typedef typename base_type::const_iterator const_iterator;
  
!       typedef
!       typename allocator::template rebind<pair_type>::other::const_reference
!       const_reference;
  
        native_hash_multimap() : base_type(Init_Size)
        { }
--- 70,76 ----
        typedef typename base_type::iterator 	iterator;
        typedef typename base_type::const_iterator const_iterator;
  
!       typedef const pair_type& const_reference;
  
        native_hash_multimap() : base_type(Init_Size)
        { }
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 50,56 ****
    {
  #define PB_DS_BASE_C_DEC \
      std::tr1::__unordered_set<Key, Hash_Fn, Eq_Fn, \
!     typename _Alloc::template rebind<Key>::other, Cache_Hash>
  
      template<typename Key,
  	     size_t Init_Size = 8,
--- 50,56 ----
    {
  #define PB_DS_BASE_C_DEC \
      std::tr1::__unordered_set<Key, Hash_Fn, Eq_Fn, \
!     typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<Key>::other, Cache_Hash>
  
      template<typename Key,
  	     size_t Init_Size = 8,
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_map.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_map.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_map.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_map.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 50,56 ****
    {
  #define PB_DS_BASE_C_DEC \
      std::map<Key, Data, Cmp_Fn,	\
! typename _Alloc::template rebind<std::pair<const Key, Data > >::other >
  
      template<typename Key, typename Data, class Cmp_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
--- 50,56 ----
    {
  #define PB_DS_BASE_C_DEC \
      std::map<Key, Data, Cmp_Fn,	\
! typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<std::pair<const Key, Data > >::other >
  
      template<typename Key, typename Data, class Cmp_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_multimap.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_multimap.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_multimap.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 48,54 ****
    {
  #define PB_DS_BASE_C_DEC \
      std::multimap<Key, Data, Less_Fn, \
!       typename _Alloc::template rebind<std::pair<const Key, Data> >::other>
  
      template<typename Key, typename Data, class Less_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
--- 48,54 ----
    {
  #define PB_DS_BASE_C_DEC \
      std::multimap<Key, Data, Less_Fn, \
!       typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<std::pair<const Key, Data> >::other>
  
      template<typename Key, typename Data, class Less_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
*************** namespace __gnu_pbds
*** 62,71 ****
  
        typedef _Alloc allocator;
  
!       typedef
!       typename _Alloc::template rebind<
! 	std::pair<Key, Data> >::other::const_reference
!       const_reference;
  
        typedef typename base_type::iterator iterator;
        typedef typename base_type::const_iterator const_iterator;
--- 62,68 ----
  
        typedef _Alloc allocator;
  
!       typedef const std::pair<Key, Data>& const_reference;
  
        typedef typename base_type::iterator iterator;
        typedef typename base_type::const_iterator const_iterator;
diff -Nrcpad gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_set.hpp gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_set.hpp
*** gcc-17-20260816/libstdc++-v3/testsuite/util/native_type/native_set.hpp	Sun Aug 16 22:32:17 2026
--- gcc-17-20260823/libstdc++-v3/testsuite/util/native_type/native_set.hpp	Sun Aug 23 22:32:22 2026
*************** namespace __gnu_pbds
*** 48,54 ****
    namespace test
    {
  #define PB_DS_BASE_C_DEC \
!     std::set<Key, Cmp_Fn, typename _Alloc::template rebind<Key>::other>
  
      template<typename Key, class Cmp_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
--- 48,54 ----
    namespace test
    {
  #define PB_DS_BASE_C_DEC \
!     std::set<Key, Cmp_Fn, typename __gnu_cxx::__alloc_traits<_Alloc>::template rebind<Key>::other>
  
      template<typename Key, class Cmp_Fn = std::less<Key>,
  	     typename _Alloc = std::allocator<char> >
diff -Nrcpad gcc-17-20260816/pyproject.toml gcc-17-20260823/pyproject.toml
*** gcc-17-20260816/pyproject.toml	Thu Jan  1 00:00:00 1970
--- gcc-17-20260823/pyproject.toml	Sun Aug 23 22:32:22 2026
***************
*** 0 ****
--- 1,81 ----
+ # Copyright (C) 2026 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING.  If not, write to
+ # the Free Software Foundation, 51 Franklin Street, Fifth Floor,
+ # Boston, MA 02110-1301, USA.
+ 
+ # This pyproject.toml file is used to facilitate installation of all required
+ # python dependencies.  It is not used to distribute gcc related packages.
+ #
+ # Users of uv can get all potentially needed with
+ #   uv sync --all-groups
+ # Whereas users of pip can use
+ #   python -m pip install . --group all
+ # Note that these include packages only used in a subset of projects.
+ 
+ [build-system]
+ requires = ["setuptools>=66.1"]
+ build-backend = "setuptools.build_meta"
+ 
+ [project]
+ name = "gcc"
+ dynamic = ["version"]
+ description = "Tools used when building and developing gcc"
+ readme = "README"
+ # As of August 2026, upstream python supports only versions from 3.10 and above.
+ # Currently supported LTS distributions and unices all provide packages for
+ # at least python 3.10.
+ # pip added support for groups in 25.1 which requires python version 3.9
+ # pytest-pyodide, used by libffi, requires python 3.10
+ # black 26.0 requires python 3.10
+ requires-python = ">=3.10"
+ 
+ # Upper bounds below are conservative compatibility limits; not all projects
+ # publish or strictly follow Semantic Versioning.
+ dependencies = [
+ 	# we keep the black version pinned to an explicit calendar year
+ 	# in order to take advantage of black's stability policy.
+ 	"black ~= 26.0",
+ 	"GitPython<4",
+ 	"jsonschema<5",
+ 	"polib ~= 1.2.0",     # does not indicate use of semver
+ 	"pytest<10",
+ 	"python-dateutil<3",  # does not indicate use of semver
+ 	"PyYAML<7",           # does not indicate use of semver
+ 	"requests<3",
+ 	"semantic-version<3",
+ 	"Unidecode<2",        # does not indicate use of semver
+ 	"unidiff<2",          # does not indicate use of semver
+ ]
+ 
+ [dependency-groups]
+ ada = ["Pygments<3"]
+ libffi = ["pytest-pyodide"]
+ all = [
+ 	{ include-group = "ada" },
+ 	{ include-group = "libffi" },
+ ]
+ 
+ [tool.setuptools]
+ # Disable package discovery
+ packages = []
+ 
+ [tool.setuptools.dynamic]
+ version = { file = ["gcc/BASE-VER"] }
+ 
+ [tool.black]
+ # target is same as requires-python
+ target-version = ["py310"]
